diff --git a/.gitignore b/.gitignore index ee44a96..05c7791 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ +.DS_Store .idea target +debug/ diff --git a/.rustc_info.json b/.rustc_info.json new file mode 100644 index 0000000..fd54bb1 --- /dev/null +++ b/.rustc_info.json @@ -0,0 +1 @@ +{"rustc_fingerprint":17240723328877221913,"outputs":{"2797684049618456168":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n","stderr":""},"931469667778813386":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/johanneshahn/.rustup/toolchains/stable-x86_64-apple-darwin\ndebug_assertions\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_feature=\"ssse3\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n","stderr":""},"17598535894874457435":{"success":true,"status":"","code":0,"stdout":"rustc 1.56.1 (59eed8a2a 2021-11-01)\nbinary: rustc\ncommit-hash: 59eed8a2aac0230a8b53e89d4e99d55912ba6b35\ncommit-date: 2021-11-01\nhost: x86_64-apple-darwin\nrelease: 1.56.1\nLLVM version: 13.0.0\n","stderr":""},"15537503139010883884":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/.rustdoc_fingerprint.json b/.rustdoc_fingerprint.json new file mode 100644 index 0000000..2a58b25 --- /dev/null +++ b/.rustdoc_fingerprint.json @@ -0,0 +1 @@ +{"rustc_vv":"rustc 1.56.1 (59eed8a2a 2021-11-01)\nbinary: rustc\ncommit-hash: 59eed8a2aac0230a8b53e89d4e99d55912ba6b35\ncommit-date: 2021-11-01\nhost: x86_64-apple-darwin\nrelease: 1.56.1\nLLVM version: 13.0.0\n"} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index ea9c595..e4a82dd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,2894 +1,3762 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + [[package]] -name = "MacTypes-sys" -version = "2.1.0" +name = "addr2line" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "gimli", ] [[package]] -name = "adler32" -version = "1.0.3" +name = "adler" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "0.6.9" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.4.1", ] [[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9", ] [[package]] name = "antidote" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5" + +[[package]] +name = "arc-swap" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc4662175ead9cd84451d5c35070517777949a2ed84551764129cedb88384841" [[package]] name = "arrayref" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06f59fe10306bb78facd90d28c2038ad23ffaaefa85bac43c8a434cde383334f" dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop", + "odds", ] [[package]] name = "arrayvec" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop", ] +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + [[package]] name = "atty" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", + "winapi 0.3.9", ] [[package]] name = "autocfg" -version = "0.1.2" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.13" +version = "0.3.63" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", ] [[package]] -name = "backtrace-sys" -version = "0.1.28" +name = "base64" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.4.3", + "safemem", ] [[package]] name = "base64" -version = "0.9.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "base64ct" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "392c772b012d685a640cdad68a5a21f4a45e696f85a2c2c907aab2fe49a91e19" + +[[package]] +name = "bigint" +version = "4.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0e8c8a600052b52482eff2cf4d810e462fdff1f656ac1ecb6232132a1ed7def" dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.4.3", + "crunchy 0.1.6", ] [[package]] name = "bindgen" version = "0.37.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b25ab82877ea8fe6ce1ce1f8ac54361f0218bad900af9eb11803994bf67c221" dependencies = [ - "cexpr 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "clang-sys 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "which 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cexpr", + "cfg-if 0.1.10", + "clang-sys", + "clap", + "env_logger 0.5.13", + "lazy_static", + "log", + "peeking_take_while", + "proc-macro2 0.3.5", + "quote 0.5.2", + "regex", + "which", ] +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bitflags" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" [[package]] name = "bitflags" -version = "1.0.4" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "blake2-rfc" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" +dependencies = [ + "arrayvec 0.4.12", + "constant_time_eq", +] + +[[package]] +name = "blake2b_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "arrayvec 0.5.2", + "constant_time_eq", ] [[package]] name = "block-buffer" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" dependencies = [ - "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "byte-tools 0.2.0", ] [[package]] -name = "build_const" -version = "0.2.1" +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding", + "byte-tools 0.3.1", + "byteorder 1.4.3", + "generic-array 0.12.4", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array 0.14.4", +] + +[[package]] +name = "block-padding" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools 0.3.1", +] [[package]] name = "byte-tools" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + +[[package]] +name = "byteorder" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" [[package]] name = "byteorder" -version = "1.3.1" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.4.3", + "either", + "iovec", ] [[package]] name = "cc" -version = "1.0.29" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" [[package]] name = "cexpr" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42aac45e9567d97474a834efdee3081b3c942b2205be932092f53354ce503d6c" dependencies = [ - "nom 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nom 3.2.1", ] [[package]] name = "cfg-if" -version = "0.1.6" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.6" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "num-integer", + "num-traits 0.2.14", + "serde", + "time", + "winapi 0.3.9", ] [[package]] name = "clang-sys" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7f7c04e52c35222fffcc3a115b5daf5f7e2bfb71c13c4e2321afe1fc71859c2" dependencies = [ - "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glob", + "libc", + "libloading", ] [[package]] name = "clap" -version = "2.32.0" +version = "2.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap", + "unicode-width", + "vec_map", +] + +[[package]] +name = "clear_on_drop" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9cc5db465b294c3fa986d5bbb0f3017cd850bff6dd6c52f9ccff8b4d21b7b08" dependencies = [ - "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "cmake" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7b858541263efe664aead4a5209a4ae5c5d2811167d4ed4ee0944503f8d2089" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "colored" -version = "1.7.0" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4ffc801dacf156c5854b9df4f425a626539c3a6ef7893cc0c5084a23f0b6c59" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "lazy_static", + "winapi 0.3.9", ] [[package]] name = "constant_time_eq" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "core-foundation" -version = "0.5.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" dependencies = [ - "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys", + "libc", ] [[package]] name = "core-foundation-sys" -version = "0.5.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] -name = "crc" -version = "1.8.1" +name = "cpufeatures" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" dependencies = [ - "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "crc32fast" -version = "1.1.2" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", ] [[package]] name = "croaring" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.3.10" +source = "git+https://github.com/EricShimizuKarbstein/croaring-rs.git?branch=not-native-march#59e23d8d8b0cef377d6dc506a1b872b09eebba47" dependencies = [ - "croaring-sys 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "croaring-sys", + "libc", ] [[package]] name = "croaring-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.3.10" +source = "git+https://github.com/EricShimizuKarbstein/croaring-rs.git?branch=not-native-march#59e23d8d8b0cef377d6dc506a1b872b09eebba47" dependencies = [ - "bindgen 0.37.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "bindgen", + "cc", + "libc", ] [[package]] -name = "crossbeam" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "crossbeam" -version = "0.6.0" +name = "crossbeam-deque" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch", + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] -name = "crossbeam-channel" -version = "0.3.8" +name = "crossbeam-epoch" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "lazy_static", + "maybe-uninit", + "memoffset", + "scopeguard 1.1.0", ] [[package]] -name = "crossbeam-deque" -version = "0.6.3" +name = "crossbeam-queue" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] -name = "crossbeam-epoch" -version = "0.7.1" +name = "crossbeam-utils" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "cfg-if 0.1.10", + "lazy_static", ] [[package]] name = "crossbeam-utils" -version = "0.6.5" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "lazy_static", ] +[[package]] +name = "crunchy" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-mac" -version = "0.6.2" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ - "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.14.4", + "subtle", ] [[package]] -name = "csv" -version = "0.15.0" +name = "ct-logs" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a4bf5107667e12bf6ce31a3a5066d67acc88942b6742117a41198734aaccaa" dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "sct", ] [[package]] -name = "ct-logs" -version = "0.4.0" +name = "curve25519-dalek" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d59fed08e452f286b251f88b2fc64a01f50a7b263aa09557ad7285d9e7fa" dependencies = [ - "sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.4.3", + "clear_on_drop", + "digest 0.8.1", + "rand_core 0.3.1", + "subtle", ] [[package]] name = "darling" -version = "0.8.5" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcfbcb0c5961907597a7d1148e3af036268f2b773886b8bb3eeb1e1281d3d3d6" dependencies = [ - "darling_core 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "darling_macro 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", + "darling_core", + "darling_macro", ] [[package]] name = "darling_core" -version = "0.8.5" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6afc018370c3bff3eb51f89256a6bdb18b4fdcda72d577982a14954a7a0b402c" dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ident_case 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv", + "ident_case", + "proc-macro2 0.4.30", + "quote 0.6.13", + "strsim 0.7.0", + "syn 0.15.44", ] [[package]] name = "darling_macro" -version = "0.8.5" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6d8dac1c6f1d29a41c4712b4400f878cb4fcc4c7628f298dd75038e024998d1" dependencies = [ - "darling_core 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "darling_core", + "quote 0.6.13", + "syn 0.15.44", ] +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + [[package]] name = "derive_builder" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ac53fa6a3cda160df823a9346442525dcaf1e171999a1cf23e67067e4fd64d4" dependencies = [ - "darling 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_builder_core 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "darling", + "derive_builder_core", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "derive_builder_core" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0288a23da9333c246bb18c143426074a6ae96747995c5819d2947b64cd942b37" dependencies = [ - "darling 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "darling", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "digest" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" +dependencies = [ + "generic-array 0.9.1", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.4", +] + +[[package]] +name = "dirs" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" dependencies = [ - "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "redox_users", + "winapi 0.3.9", ] [[package]] name = "dtoa" -version = "0.4.3" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" [[package]] -name = "encode_unicode" -version = "0.3.5" +name = "easy-jsonrpc-mw" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b1a91569d50e3bba3c9febb22ef54d78c6e8a8d8dd91ae859896c8ba05f4e3" +dependencies = [ + "easy-jsonrpc-proc-macro-mw", + "jsonrpc-core", + "rand 0.6.5", + "serde", + "serde_json", +] + +[[package]] +name = "easy-jsonrpc-proc-macro-mw" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6368dbd2c6685fb84fc6e6a4749917ddc98905793fd06341c7e11a2504f2724" +dependencies = [ + "heck", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81956bcf7ef761fb4e1d88de3fa181358a0d26cbcb9755b587a08f9119824b86" +dependencies = [ + "clear_on_drop", + "curve25519-dalek", + "failure", + "rand 0.6.5", + "sha2 0.8.2", +] + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "enum_primitive" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180" dependencies = [ - "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.43", ] [[package]] name = "env_logger" version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "humantime", + "log", + "regex", + "termcolor", ] [[package]] name = "env_logger" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "epic_api" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic?branch=master#e98e0695f4df116fa5563ea7d40705456957b187" +dependencies = [ + "bigint", + "easy-jsonrpc-mw", + "epic_chain", + "epic_core", + "epic_p2p", + "epic_pool", + "epic_store", + "epic_util", + "failure", + "failure_derive", + "futures", + "http", + "hyper", + "hyper-rustls", + "hyper-timeout", + "lazy_static", + "log", + "regex", + "ring", + "rustls", + "serde", + "serde_derive", + "serde_json", + "tokio", + "tokio-core", + "tokio-rustls", + "tokio-tcp", + "url 1.7.2", +] + +[[package]] +name = "epic_chain" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic?branch=master#e98e0695f4df116fa5563ea7d40705456957b187" +dependencies = [ + "bigint", + "bit-vec", + "bitflags 1.3.2", + "byteorder 1.4.3", + "chrono", + "croaring", + "epic_core", + "epic_keychain", + "epic_store", + "epic_util", + "failure", + "failure_derive", + "lazy_static", + "log", + "lru-cache", + "regex", + "serde", + "serde_derive", +] + +[[package]] +name = "epic_core" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic?branch=master#e98e0695f4df116fa5563ea7d40705456957b187" +dependencies = [ + "bigint", + "blake2-rfc", + "byteorder 1.4.3", + "chrono", + "croaring", + "enum_primitive", + "epic_keychain", + "epic_util", + "failure", + "failure_derive", + "keccak-hash", + "lazy_static", + "log", + "lru-cache", + "md5", + "num 0.2.1", + "num-bigint 0.2.6", + "progpow", + "rand 0.6.5", + "randomx", + "serde", + "serde_derive", + "serde_json", + "sha2 0.8.2", + "siphasher", + "uuid 0.6.5", + "zeroize", +] + +[[package]] +name = "epic_keychain" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic?branch=master#e98e0695f4df116fa5563ea7d40705456957b187" +dependencies = [ + "blake2-rfc", + "byteorder 1.4.3", + "digest 0.9.0", + "epic_util", + "hmac", + "lazy_static", + "log", + "pbkdf2", + "rand 0.6.5", + "ripemd160", + "serde", + "serde_derive", + "serde_json", + "sha2 0.9.8", + "uuid 0.6.5", + "zeroize", +] + +[[package]] +name = "epic_p2p" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic?branch=master#e98e0695f4df116fa5563ea7d40705456957b187" +dependencies = [ + "bitflags 1.3.2", + "bytes", + "chrono", + "enum_primitive", + "epic_chain", + "epic_core", + "epic_store", + "epic_util", + "log", + "lru-cache", + "net2", + "num 0.1.42", + "rand 0.6.5", + "serde", + "serde_derive", + "tempfile", +] + +[[package]] +name = "epic_pool" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic?branch=master#e98e0695f4df116fa5563ea7d40705456957b187" +dependencies = [ + "blake2-rfc", + "chrono", + "epic_core", + "epic_keychain", + "epic_store", + "epic_util", + "failure", + "failure_derive", + "log", + "rand 0.6.5", + "serde", + "serde_derive", +] + +[[package]] +name = "epic_store" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic?branch=master#e98e0695f4df116fa5563ea7d40705456957b187" +dependencies = [ + "byteorder 1.4.3", + "croaring", + "env_logger 0.5.13", + "epic_core", + "epic_util", + "failure", + "failure_derive", + "libc", + "lmdb-zero", + "log", + "memmap", + "serde", + "serde_derive", + "tempfile", +] + +[[package]] +name = "epic_util" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic?branch=master#e98e0695f4df116fa5563ea7d40705456957b187" +dependencies = [ + "backtrace", + "base64 0.9.3", + "byteorder 1.4.3", + "grin_secp256k1zkp", + "lazy_static", + "log", + "log4rs", + "parking_lot 0.6.4", + "rand 0.6.5", + "serde", + "serde_derive", + "walkdir", + "zeroize", + "zip", +] + +[[package]] +name = "epic_wallet_config" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic-wallet?branch=master#82c5c7b7749fd0230290b865d520c08b8d420a16" +dependencies = [ + "dirs", + "epic_wallet_util", + "rand 0.5.6", + "serde", + "serde_derive", + "toml", +] + +[[package]] +name = "epic_wallet_libwallet" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic-wallet?branch=master#82c5c7b7749fd0230290b865d520c08b8d420a16" +dependencies = [ + "blake2-rfc", + "byteorder 1.4.3", + "chrono", + "data-encoding", + "ed25519-dalek", + "epic_wallet_config", + "epic_wallet_util", + "failure", + "failure_derive", + "lazy_static", + "log", + "rand 0.5.6", + "serde", + "serde_derive", + "serde_json", + "sha3", + "strum", + "strum_macros", + "uuid 0.7.4", +] + +[[package]] +name = "epic_wallet_util" +version = "3.0.0" +source = "git+https://github.com/EpicCash/epic-wallet?branch=master#82c5c7b7749fd0230290b865d520c08b8d420a16" +dependencies = [ + "dirs", + "epic_api", + "epic_chain", + "epic_core", + "epic_keychain", + "epic_store", + "epic_util", + "rand 0.5.6", + "serde", + "serde_derive", + "toml", +] + +[[package]] +name = "epicbox" +version = "0.1.0" +dependencies = [ + "bytes", + "clap", + "colored", + "env_logger 0.6.2", + "epicboxlib", + "failure", + "futures", + "log", + "nitox", + "nom 4.2.3", + "serde", + "serde_derive", + "serde_json", + "tokio", + "tokio-codec", + "tokio-core", + "tokio-io", + "tokio-timer", + "toml", + "unicode-segmentation 0.1.3", + "uuid 0.7.4", + "ws", +] + +[[package]] +name = "epicboxlib" +version = "1.0.1" dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "colored", + "epic_core", + "epic_wallet_libwallet", + "failure", + "grin_secp256k1zkp", + "log", + "parking_lot 0.6.4", + "rand 0.5.6", + "regex", + "ring", + "serde", + "serde_derive", + "serde_json", + "sha2 0.7.1", + "ws", ] [[package]] name = "failure" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" dependencies = [ - "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "failure_derive", ] [[package]] name = "failure_derive" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.32", + "quote 1.0.10", + "syn 1.0.81", + "synstructure", ] [[package]] name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "filetime" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.10", + "winapi 0.3.9", +] + +[[package]] +name = "fixed-hash" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1a683d1234507e4f3bf2736eeddf0de1dc65996dc0164d57eba0a74bcf29489" +dependencies = [ + "byteorder 1.4.3", + "rand 0.5.6", + "rustc-hex", + "static_assertions", +] [[package]] name = "flate2" -version = "1.0.6" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" dependencies = [ - "crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "crc32fast", + "libc", + "miniz_oxide", ] [[package]] name = "fnv" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foreign-types" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types-shared", ] [[package]] name = "foreign-types-shared" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding 2.2.0", +] [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.3.2", + "fuchsia-zircon-sys", ] [[package]] name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" -version = "0.1.25" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "num_cpus", ] [[package]] name = "gcc" version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generic-array" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d00328cedcac5e81c683e5620ca6a30756fc23027ebf9bff405c0e8da1fbb7e" dependencies = [ - "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", ] [[package]] -name = "glob" -version = "0.2.11" +name = "generic-array" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "grin_api" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#41ed10940deab4d325ac521c8cec881f88be8b7b" -dependencies = [ - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_chain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_p2p 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_pool 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-rustls 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-rustls 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_chain" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#41ed10940deab4d325ac521c8cec881f88be8b7b" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "croaring 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "lmdb-zero 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_core" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#41ed10940deab4d325ac521c8cec881f88be8b7b" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "croaring 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_keychain" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#41ed10940deab4d325ac521c8cec881f88be8b7b" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "pbkdf2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ripemd160 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_p2p" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#41ed10940deab4d325ac521c8cec881f88be8b7b" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "lmdb-zero 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_pool" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#41ed10940deab4d325ac521c8cec881f88be8b7b" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", ] [[package]] -name = "grin_secp256k1zkp" -version = "0.7.4" +name = "generic-array" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" dependencies = [ - "arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)", - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", + "version_check 0.9.3", ] [[package]] -name = "grin_store" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#41ed10940deab4d325ac521c8cec881f88be8b7b" +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "croaring 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "lmdb-zero 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] -name = "grin_util" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#41ed10940deab4d325ac521c8cec881f88be8b7b" -dependencies = [ - "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_secp256k1zkp 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log4rs 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zip 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_wallet" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#41ed10940deab4d325ac521c8cec881f88be8b7b" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_api 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_chain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "prettytable-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "term 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-retry 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grinbox" -version = "0.1.0" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "colored 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "grinboxlib 1.0.1", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "nitox 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-segmentation 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grinboxlib" -version = "1.0.1" +name = "getrandom" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ - "colored 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_secp256k1zkp 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_wallet 1.0.1 (git+https://github.com/mimblewimble/grin)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "libc", + "wasi 0.10.2+wasi-snapshot-preview1", ] [[package]] -name = "h2" -version = "0.1.16" +name = "gimli" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] -name = "hmac" -version = "0.6.3" +name = "glob" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" + +[[package]] +name = "grin_secp256k1zkp" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af3c4c4829b3e2e7ee1d9a542833e4244912fbb887fabe44682558159b068a7" dependencies = [ - "crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.3.25", + "cc", + "libc", + "rand 0.5.6", + "rustc-serialize", + "serde", + "serde_json", + "zeroize", ] [[package]] -name = "http" -version = "0.1.15" +name = "h2" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.4.3", + "bytes", + "fnv", + "futures", + "http", + "indexmap", + "log", + "slab", + "string", + "tokio-io", ] [[package]] -name = "httparse" -version = "1.3.3" +name = "hamming" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65043da274378d68241eb9a8f8f8aa54e349136f7b8e12f63e3ef44043cc30e1" [[package]] -name = "humantime" -version = "1.2.0" +name = "hashbrown" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" [[package]] -name = "hyper" -version = "0.12.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation 1.8.0", ] [[package]] -name = "hyper-rustls" -version = "0.14.0" +name = "hermit-abi" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ - "ct-logs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-rustls 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] -name = "ident_case" -version = "1.0.0" +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "http" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" +dependencies = [ + "bytes", + "futures", + "http", + "tokio-buf", +] + +[[package]] +name = "httparse" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error", +] + +[[package]] +name = "hyper" +version = "0.12.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c843caf6296fc1f93444735205af9ed4e109a539005abb2564ae1d6fad34c52" +dependencies = [ + "bytes", + "futures", + "futures-cpupool", + "h2", + "http", + "http-body", + "httparse", + "iovec", + "itoa", + "log", + "net2", + "rustc_version", + "time", + "tokio", + "tokio-buf", + "tokio-executor", + "tokio-io", + "tokio-reactor", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f2aa6b1681795bf4da8063f718cd23145aa0c9a5143d9787b345aa60d38ee4" +dependencies = [ + "ct-logs", + "futures", + "http", + "hyper", + "rustls", + "tokio-core", + "tokio-io", + "tokio-rustls", + "tokio-tcp", + "webpki", + "webpki-roots", +] + +[[package]] +name = "hyper-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ec7c8e526ed674ce148323e1f2010f76f546fcdca99a2c721e04bc7bf5b6f7" +dependencies = [ + "futures", + "hyper", + "tokio", + "tokio-io", + "tokio-io-timeout", + "tokio-reactor", + "tokio-service", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2050d823639fbeae26b2b5ba09aca8907793117324858070ade0673c49f793b" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec", ] [[package]] name = "indexmap" -version = "1.0.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +dependencies = [ + "autocfg 1.0.1", + "hashbrown", +] [[package]] name = "iovec" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "itoa" -version = "0.4.3" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "jsonrpc-core" +version = "10.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc15eef5f8b6bef5ac5f7440a957ff95d036e2f98706947741bfc93d1976db4c" +dependencies = [ + "futures", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "keccak" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" + +[[package]] +name = "keccak-hash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e8ee697b9aa6dcc34d7657565fa5052763a1627a5b59e4c3c0ae3ed0d70a65" +dependencies = [ + "primitive-types", + "tiny-keccak", +] [[package]] name = "kernel32-sys" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "lazy_static" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lazycell" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.48" +version = "0.2.107" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219" [[package]] name = "liblmdb-sys" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feed38a3a580f60bf61aaa067b0ff4123395966839adeaf67258a9e50c4d2e49" dependencies = [ - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc", + "libc", ] [[package]] name = "libloading" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "winapi 0.3.9", ] [[package]] name = "linked-hash-map" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "linked-hash-map" -version = "0.5.1" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" [[package]] name = "lmdb-zero" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13416eee745b087c22934f35f1f24da22da41ba2a5ce197143d168ce055cc58d" dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "liblmdb-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "supercow 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 0.9.1", + "libc", + "liblmdb-sys", + "supercow", ] [[package]] name = "lock_api" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +dependencies = [ + "owning_ref", + "scopeguard 0.3.3", +] + +[[package]] +name = "lock_api" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" dependencies = [ - "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.1.0", +] + +[[package]] +name = "lock_api" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" +dependencies = [ + "scopeguard 1.1.0", ] [[package]] name = "log" -version = "0.4.6" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "serde", ] [[package]] name = "log-mdc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" [[package]] name = "log4rs" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log-mdc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde-value 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)", - "thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "100052474df98158c0738a7d3f4249c99978490178b5f9f68cd835ac57adbd1b" +dependencies = [ + "antidote", + "arc-swap", + "chrono", + "flate2", + "fnv", + "humantime", + "libc", + "log", + "log-mdc", + "serde", + "serde-value", + "serde_derive", + "serde_json", + "serde_yaml", + "thread-id", + "typemap", + "winapi 0.3.9", ] [[package]] name = "lru-cache" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" dependencies = [ - "linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map", ] [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + +[[package]] +name = "md5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e6bcd6433cff03a4bfc3d9834d504467db1f1cf6d0ea765d37d330249ed629d" [[package]] name = "memchr" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "memchr" -version = "2.2.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memmap" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi 0.3.9", ] [[package]] name = "memoffset" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "miniz-sys" -version = "0.1.11" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", ] [[package]] name = "miniz_oxide" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "miniz_oxide_c_api" -version = "0.2.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "adler", + "autocfg 1.0.1", ] [[package]] name = "mio" -version = "0.6.16" +version = "0.6.23" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" dependencies = [ - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow", + "net2", + "slab", + "winapi 0.2.8", ] [[package]] name = "mio-extras" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" dependencies = [ - "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell", + "log", + "mio", + "slab", ] [[package]] name = "mio-uds" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" dependencies = [ - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec", + "libc", + "mio", ] [[package]] name = "miow" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "msdos_time" -version = "0.1.6" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" dependencies = [ - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", ] [[package]] name = "native-tls" -version = "0.2.2" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", ] [[package]] name = "net2" -version = "0.2.33" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", ] [[package]] name = "nitox" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380ef8089eaa863349131e2e03bbe90b9f6a5f49caa9b46c4b559cbc79734543" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_builder 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "derive_builder", + "failure", + "failure_derive", + "futures", + "log", + "native-tls", + "parking_lot 0.6.4", + "rand 0.5.6", + "serde", + "serde_derive", + "serde_json", + "tokio-codec", + "tokio-executor", + "tokio-tcp", + "tokio-tls", + "url 1.7.2", ] [[package]] name = "nodrop" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" [[package]] name = "nom" version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05aec50c70fd288702bcd93284a8444607f3292dbdf2a30de5ea5dcdbe72287b" dependencies = [ - "memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 1.0.2", ] [[package]] name = "nom" -version = "4.2.0" +version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.4.1", + "version_check 0.1.5", ] [[package]] name = "num" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" dependencies = [ - "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", - "num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.1.44", + "num-complex 0.1.43", + "num-integer", + "num-iter", + "num-rational 0.1.42", + "num-traits 0.2.14", ] [[package]] name = "num" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" dependencies = [ - "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-complex 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.6", + "num-complex 0.2.4", + "num-integer", + "num-iter", + "num-rational 0.2.4", + "num-traits 0.2.14", ] [[package]] name = "num-bigint" version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer", + "num-traits 0.2.14", + "rand 0.4.6", + "rustc-serialize", ] [[package]] name = "num-bigint" -version = "0.2.2" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "num-integer", + "num-traits 0.2.14", ] [[package]] name = "num-complex" version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.14", + "rustc-serialize", ] [[package]] name = "num-complex" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "num-traits 0.2.14", ] [[package]] name = "num-integer" -version = "0.1.39" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "num-traits 0.2.14", ] [[package]] name = "num-iter" -version = "0.1.37" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "num-integer", + "num-traits 0.2.14", ] [[package]] name = "num-rational" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e" dependencies = [ - "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.1.44", + "num-integer", + "num-traits 0.2.14", + "rustc-serialize", ] [[package]] name = "num-rational" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" dependencies = [ - "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "num-bigint 0.2.6", + "num-integer", + "num-traits 0.2.14", ] [[package]] name = "num-traits" version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.14", ] [[package]] name = "num-traits" -version = "0.2.6" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg 1.0.1", +] [[package]] name = "num_cpus" -version = "1.10.0" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.4.1", ] [[package]] name = "odds" version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" + +[[package]] +name = "once_cell" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.16" +version = "0.10.38" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.3.2", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-sys", ] [[package]] name = "openssl-probe" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "openssl-sys" -version = "0.9.40" +version = "0.9.70" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6517987b3f8226b5da3661dad65ff7f300cc59fb5ea8333ca191fc65fde3edf" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "cc", + "libc", + "pkg-config", + "vcpkg", ] [[package]] name = "ordered-float" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.14", ] [[package]] name = "owning_ref" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "stable_deref_trait", +] + +[[package]] +name = "parity-codec" +version = "3.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b9df1283109f542d8852cd6b30e9341acc2137481eb6157d2e62af68b0afec9" +dependencies = [ + "arrayvec 0.4.12", + "serde", ] [[package]] name = "parking_lot" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.1.5", + "parking_lot_core 0.3.1", ] [[package]] name = "parking_lot" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.2.0", + "parking_lot_core 0.5.0", + "rustc_version", +] + +[[package]] +name = "parking_lot" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +dependencies = [ + "lock_api 0.3.4", + "parking_lot_core 0.6.2", + "rustc_version", ] [[package]] name = "parking_lot_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand 0.5.6", + "rustc_version", + "smallvec", + "winapi 0.3.9", ] [[package]] name = "parking_lot_core" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", + "cloudabi", + "libc", + "rand 0.6.5", + "redox_syscall 0.1.57", + "rustc_version", + "smallvec", + "winapi 0.3.9", ] [[package]] -name = "pbkdf2" +name = "parking_lot_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +dependencies = [ + "cfg-if 0.1.10", + "cloudabi", + "libc", + "redox_syscall 0.1.57", + "rustc_version", + "smallvec", + "winapi 0.3.9", +] + +[[package]] +name = "password-hash" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e0b28ace46c5a396546bcf443bf422b57049617433d8854227352a4a9b24e7" +dependencies = [ + "base64ct", + "rand_core 0.6.3", + "subtle", +] + +[[package]] +name = "pbkdf2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "base64ct", + "crypto-mac", + "hmac", + "password-hash", + "sha2 0.9.8", ] [[package]] name = "peeking_take_while" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pkg-config" -version = "0.3.14" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" [[package]] -name = "podio" -version = "0.1.6" +name = "ppv-lite86" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" [[package]] -name = "prettytable-rs" -version = "0.7.0" +name = "primal" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e31b86efadeaeb1235452171a66689682783149a6249ff334a2c5d8218d00a4" +dependencies = [ + "primal-check", + "primal-estimate", + "primal-sieve", +] + +[[package]] +name = "primal-bit" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686a64e2f50194c64942992af5799e6b6e8775b8f88c607d72ed0a2fd58b9b21" +dependencies = [ + "hamming", +] + +[[package]] +name = "primal-check" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e65f96c0a171f887198c274392c99a116ef65aa7f53f3b6d4902f493965c2d1" dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "csv 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "term 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer", +] + +[[package]] +name = "primal-estimate" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ea4531dde757b56906493c8604641da14607bf9cdaa80fb9c9cabd2429f8d5" + +[[package]] +name = "primal-sieve" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da2d6ed369bb4b0273aeeb43f07c105c0117717cbae827b20719438eb2eb798c" +dependencies = [ + "hamming", + "primal-bit", + "primal-estimate", + "smallvec", +] + +[[package]] +name = "primitive-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2288eb2a39386c4bc817974cc413afe173010dc80e470fcb1e9a35580869f024" +dependencies = [ + "fixed-hash", + "impl-codec", + "uint", ] [[package]] name = "proc-macro2" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77997c53ae6edd6d187fec07ec41b207063b5ee6f33680e9fa86d405cdd313d4" +dependencies = [ + "unicode-xid 0.1.0", +] + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0", ] [[package]] name = "proc-macro2" -version = "0.4.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" +dependencies = [ + "unicode-xid 0.2.2", +] + +[[package]] +name = "progpow" +version = "0.1.0" +source = "git+https://github.com/EpicCash/progpow-rust.git#1f9100e0148119027e70311a8a5359d046dc3b98" dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bigint", + "bindgen", + "byteorder 0.5.3", + "cmake", + "dirs", + "filetime", + "lazy_static", + "libc", + "progpow_cpu", +] + +[[package]] +name = "progpow_cpu" +version = "0.1.0" +source = "git+https://github.com/EpicCash/progpow-rust.git#1f9100e0148119027e70311a8a5359d046dc3b98" +dependencies = [ + "crunchy 0.2.2", + "either", + "keccak-hash", + "log", + "memmap", + "parking_lot 0.8.0", + "primal", ] [[package]] name = "quick-error" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" +dependencies = [ + "proc-macro2 0.3.5", +] + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + +[[package]] +name = "quote" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" +dependencies = [ + "proc-macro2 1.0.32", +] + +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +dependencies = [ + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi 0.3.9", +] + +[[package]] +name = "rand" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" +dependencies = [ + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "winapi 0.3.9", +] + +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +dependencies = [ + "autocfg 0.1.7", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc 0.1.0", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi 0.3.9", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc 0.2.0", +] + +[[package]] +name = "rand" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" dependencies = [ - "proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.3", + "rand_hc 0.3.1", ] [[package]] -name = "quote" -version = "0.6.11" +name = "rand_chacha" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.3.1", ] [[package]] -name = "rand" -version = "0.3.23" +name = "rand_chacha" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] -name = "rand" -version = "0.4.6" +name = "rand_chacha" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86", + "rand_core 0.6.3", ] [[package]] -name = "rand" -version = "0.5.6" +name = "rand_core" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2", ] [[package]] -name = "rand" -version = "0.6.5" +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + +[[package]] +name = "rand_core" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.16", ] [[package]] -name = "rand_chacha" -version = "0.1.1" +name = "rand_core" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.2.3", ] [[package]] -name = "rand_core" -version = "0.3.1" +name = "rand_hc" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] -name = "rand_core" -version = "0.4.0" +name = "rand_hc" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] [[package]] name = "rand_hc" -version = "0.1.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.6.3", ] [[package]] name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_jitter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand_core 0.4.2", + "winapi 0.3.9", ] [[package]] name = "rand_os" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi 0.3.9", ] [[package]] name = "rand_pcg" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.4.2", ] [[package]] name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "randomx" +version = "0.1.1" +source = "git+https://github.com/EpicCash/randomx-rust.git#a852669d2e17ee22fa3fcd43c4e0dab9830729fd" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bigint", + "bindgen", + "byteorder 0.5.3", + "cmake", + "filetime", + "libc", ] [[package]] name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "redox_syscall" -version = "0.1.51" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] -name = "redox_termios" -version = "0.1.1" +name = "redox_syscall" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" dependencies = [ - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.3.2", ] [[package]] -name = "regex" -version = "1.1.0" +name = "redox_users" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" dependencies = [ - "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.16", + "redox_syscall 0.1.57", + "rust-argon2", ] [[package]] -name = "regex-syntax" -version = "0.6.5" +name = "regex" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" dependencies = [ - "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick", + "memchr 2.4.1", + "regex-syntax", ] +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + [[package]] name = "remove_dir_all" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9", ] [[package]] name = "ring" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "lazy_static", + "libc", + "untrusted", ] [[package]] name = "ripemd160" -version = "0.7.0" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "rust-argon2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" dependencies = [ - "block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.13.0", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils 0.8.5", ] [[package]] name = "rustc-demangle" -version = "0.1.13" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc-hex" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc-serialize" version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" [[package]] name = "rustc_version" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver", ] [[package]] name = "rustls" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3", + "log", + "ring", + "sct", + "untrusted", + "webpki", ] [[package]] name = "ryu" -version = "0.2.7" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "safemem" -version = "0.3.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" [[package]] name = "same-file" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util", ] [[package]] name = "schannel" -version = "0.1.14" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "winapi 0.3.9", ] [[package]] name = "scoped-tls" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" [[package]] name = "scopeguard" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "sct" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8f61f9e6eadd062a71c380043d28036304a4706b3c4dd001ff3387ed00745a" dependencies = [ - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ring", + "untrusted", ] [[package]] name = "security-framework" -version = "0.2.2" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87" dependencies = [ - "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", ] [[package]] name = "security-framework-sys" -version = "0.2.3" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e" dependencies = [ - "MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys", + "libc", ] [[package]] name = "semver" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver-parser", ] [[package]] name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.87" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" +dependencies = [ + "serde_derive", +] [[package]] name = "serde-value" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a663f873dedc4eac1a559d4c6bc0d0b2c34dc5ac4702e105014b8281489e44f" dependencies = [ - "ordered-float 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "ordered-float", + "serde", ] [[package]] name = "serde_derive" -version = "1.0.87" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.32", + "quote 1.0.10", + "syn 1.0.81", ] [[package]] name = "serde_json" -version = "1.0.38" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e466864e431129c7e0d3476b92f20458e5879919a0596c6472738d9fa2d342f8" dependencies = [ - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap", + "itoa", + "ryu", + "serde", ] [[package]] name = "serde_yaml" -version = "0.8.8" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c608a35705a5d3cdc9fbe403147647ff34b921f8e833e49306df898f9b20af" dependencies = [ - "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "dtoa", + "indexmap", + "serde", + "yaml-rust", ] [[package]] -name = "sha1" -version = "0.6.0" +name = "sha-1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "fake-simd", + "opaque-debug 0.2.3", +] [[package]] name = "sha2" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eb6be24e4c23a84d7184280d2722f7f2731fcdd4a9d886efbfe4413e4847ea0" +dependencies = [ + "block-buffer 0.3.3", + "byte-tools 0.2.0", + "digest 0.7.6", + "fake-simd", +] + +[[package]] +name = "sha2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "fake-simd", + "opaque-debug 0.2.3", +] + +[[package]] +name = "sha2" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "sha3" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" dependencies = [ - "block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer 0.7.3", + "byte-tools 0.3.1", + "digest 0.8.1", + "keccak", + "opaque-debug 0.2.3", ] [[package]] name = "siphasher" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" [[package]] name = "slab" -version = "0.4.2" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "smallvec" -version = "0.6.8" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" dependencies = [ - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit", ] [[package]] name = "stable_deref_trait" -version = "1.1.1" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" [[package]] name = "string" -version = "0.1.3" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" +dependencies = [ + "bytes", +] [[package]] name = "strsim" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strum" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1c33039533f051704951680f1adfd468fd37ac46816ded0d9ee068e60f05f" + +[[package]] +name = "strum_macros" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47cd23f5c7dee395a00fa20135e2ec0fffcdfa151c56182966d7a3261343432e" +dependencies = [ + "heck", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "supercow" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "171758edb47aa306a78dfa4ab9aeb5167405bd4e3dc2b64e88f6a84bbe98bd63" + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", +] [[package]] name = "syn" -version = "0.15.26" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.32", + "quote 1.0.10", + "unicode-xid 0.2.2", ] [[package]] name = "synstructure" -version = "0.10.1" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.32", + "quote 1.0.10", + "syn 1.0.81", + "unicode-xid 0.2.2", ] [[package]] name = "tempfile" -version = "3.0.6" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", - "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "libc", + "rand 0.8.4", + "redox_syscall 0.2.10", + "remove_dir_all", + "winapi 0.3.9", ] [[package]] -name = "term" -version = "0.5.1" +name = "termcolor" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util", ] [[package]] -name = "termcolor" -version = "1.0.4" +name = "textwrap" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width", ] [[package]] -name = "termion" -version = "1.5.1" +name = "thiserror" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror-impl", ] [[package]] -name = "textwrap" -version = "0.10.0" +name = "thiserror-impl" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.32", + "quote 1.0.10", + "syn 1.0.81", ] [[package]] name = "thread-id" version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "redox_syscall 0.1.57", + "winapi 0.3.9", ] [[package]] -name = "thread_local" -version = "0.3.6" +name = "time" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi 0.3.9", ] [[package]] -name = "time" -version = "0.1.42" +name = "tiny-keccak" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.2.2", ] +[[package]] +name = "tinyvec" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + [[package]] name = "tokio" -version = "0.1.11" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" +dependencies = [ + "bytes", + "futures", + "mio", + "num_cpus", + "tokio-codec", + "tokio-current-thread", + "tokio-executor", + "tokio-fs", + "tokio-io", + "tokio-reactor", + "tokio-sync", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "tokio-udp", + "tokio-uds", +] + +[[package]] +name = "tokio-buf" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "either", + "futures", ] [[package]] name = "tokio-codec" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "futures", + "tokio-io", ] [[package]] name = "tokio-core" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87b1395334443abca552f63d4f61d0486f12377c2ba8b368e523f89e828cffd4" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "futures", + "iovec", + "log", + "mio", + "scoped-tls", + "tokio", + "tokio-executor", + "tokio-io", + "tokio-reactor", + "tokio-timer", ] [[package]] name = "tokio-current-thread" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "tokio-executor", ] [[package]] name = "tokio-executor" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2", + "futures", ] [[package]] name = "tokio-fs" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "tokio-io", + "tokio-threadpool", ] [[package]] name = "tokio-io" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "futures", + "log", ] [[package]] -name = "tokio-reactor" -version = "0.1.8" +name = "tokio-io-timeout" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ce81f15cfd7982fac684f9057a1299eebeb79e98a8a709969b9aa51123129" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "futures", + "tokio-io", + "tokio-timer", ] [[package]] -name = "tokio-retry" -version = "0.1.1" +name = "tokio-reactor" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2", + "futures", + "lazy_static", + "log", + "mio", + "num_cpus", + "parking_lot 0.9.0", + "slab", + "tokio-executor", + "tokio-io", + "tokio-sync", ] [[package]] name = "tokio-rustls" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "208d62fa3e015426e3c64039d9d20adf054a3c9b4d9445560f1c41c75bef3eab" dependencies = [ - "rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls", + "tokio", + "webpki", ] [[package]] name = "tokio-service" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" +dependencies = [ + "futures", +] + +[[package]] +name = "tokio-sync" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv", + "futures", ] [[package]] name = "tokio-tcp" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "futures", + "iovec", + "mio", + "tokio-io", + "tokio-reactor", ] [[package]] name = "tokio-threadpool" -version = "0.1.11" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" dependencies = [ - "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque", + "crossbeam-queue", + "crossbeam-utils 0.7.2", + "futures", + "lazy_static", + "log", + "num_cpus", + "slab", + "tokio-executor", ] [[package]] name = "tokio-timer" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2", + "futures", + "slab", + "tokio-executor", ] [[package]] name = "tokio-tls" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "native-tls", + "tokio-io", ] [[package]] name = "tokio-udp" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "futures", + "log", + "mio", + "tokio-codec", + "tokio-io", + "tokio-reactor", ] [[package]] name = "tokio-uds" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "futures", + "iovec", + "libc", + "log", + "mio", + "mio-uds", + "tokio-codec", + "tokio-io", + "tokio-reactor", ] [[package]] name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" dependencies = [ - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "traitobject" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" [[package]] name = "try-lock" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "typemap" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653be63c80a3296da5551e1bfd2cca35227e13cdd08c6668903ae2f4f77aa1f6" dependencies = [ - "unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unsafe-any", ] [[package]] name = "typenum" -version = "1.10.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" [[package]] -name = "ucd-util" -version = "0.1.3" +name = "uint" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2143cded94692b156c356508d92888acc824db5bffc0b4089732264c6fcf86d4" +dependencies = [ + "byteorder 1.4.3", + "crunchy 0.2.2", + "rustc-hex", +] [[package]] name = "unicode-bidi" -version = "0.3.4" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" [[package]] name = "unicode-normalization" -version = "0.1.8" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" dependencies = [ - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyvec", ] [[package]] name = "unicode-segmentation" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3bc443ded17b11305ffffe6b37e2076f328a5a8cb6aa877b1b98f77699e98b5" + +[[package]] +name = "unicode-segmentation" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" [[package]] name = "unicode-width" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] -name = "unreachable" -version = "1.0.0" +name = "unicode-xid" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "unsafe-any" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30360d7979f5e9c6e6cea48af192ea8fab4afb3cf72597154b8f08935bc9c7f" dependencies = [ - "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "traitobject", ] [[package]] name = "untrusted" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" [[package]] name = "url" version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" dependencies = [ - "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", ] [[package]] -name = "utf8-ranges" -version = "1.0.2" +name = "url" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna 0.3.0", + "percent-encoding 2.2.0", +] [[package]] name = "uuid" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1436e58182935dcd9ce0add9ea0b558e8a87befe01c1a301e6020aeb0876363" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", + "rand 0.4.6", + "serde", ] [[package]] name = "uuid" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" dependencies = [ - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5", + "serde", ] [[package]] name = "vcpkg" -version = "0.2.6" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vec_map" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] -name = "void" -version = "1.0.2" +name = "version_check" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "walkdir" -version = "2.2.7" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ - "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "same-file", + "winapi 0.3.9", + "winapi-util", ] [[package]] name = "want" -version = "0.0.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "log", + "try-lock", ] +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + [[package]] name = "webpki" version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17d7967316d8411ca3b01821ee6c332bde138ba4363becdb492f12e514daa17f" dependencies = [ - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ring", + "untrusted", ] [[package]] name = "webpki-roots" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85d1f408918fd590908a70d36b7ac388db2edc221470333e4d6e5b598e44cabf" dependencies = [ - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted", + "webpki", ] [[package]] name = "which" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e84a603e7e0b1ce1aa1ee2b109c7be00155ce52df5081590d1ffb93f4f515cb2" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "winapi" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" [[package]] name = "winapi" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-build" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.2" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9", ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wincolor" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "ws" -version = "0.7.9" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25fe90c75f236a0a00247d5900226aea4f2d7b05ccc34da9e7a8880ff59b5848" dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.4.3", + "bytes", + "httparse", + "log", + "mio", + "mio-extras", + "openssl", + "rand 0.7.3", + "sha-1", + "slab", + "url 2.3.1", ] [[package]] name = "ws2_32-sys" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "yaml-rust" -version = "0.4.2" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" dependencies = [ - "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map", ] [[package]] name = "zeroize" -version = "0.5.2" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65f1a51723ec88c66d5d1fe80c841f17f63587d6691901d66be9bec6c3b51f73" +dependencies = [ + "proc-macro2 1.0.32", + "quote 1.0.10", + "syn 1.0.81", + "synstructure", +] [[package]] name = "zip" -version = "0.4.2" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" dependencies = [ - "msdos_time 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[metadata] -"checksum MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eaf9f0d0b1cc33a4d2aee14fb4b2eac03462ef4db29c8ac4057327d8a71ad86f" -"checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" -"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" -"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -"checksum antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5" -"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" -"checksum arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)" = "06f59fe10306bb78facd90d28c2038ad23ffaaefa85bac43c8a434cde383334f" -"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" -"checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5" -"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" -"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -"checksum bindgen 0.37.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1b25ab82877ea8fe6ce1ce1f8ac54361f0218bad900af9eb11803994bf67c221" -"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" -"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" -"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" -"checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" -"checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" -"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" -"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" -"checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa" -"checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e" -"checksum cexpr 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "42aac45e9567d97474a834efdee3081b3c942b2205be932092f53354ce503d6c" -"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" -"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" -"checksum clang-sys 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d7f7c04e52c35222fffcc3a115b5daf5f7e2bfb71c13c4e2321afe1fc71859c2" -"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum colored 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6e9a455e156a4271e12fd0246238c380b1e223e3736663c7a18ed8b6362028a9" -"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" -"checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" -"checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" -"checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" -"checksum crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e91d5240c6975ef33aeb5f148f35275c25eda8e8a5f95abe421978b05b8bf192" -"checksum croaring 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b350ece8a9ba71eeb9c068a98a86dc420ca5c1d6bd4e1627a4581e9c843c38" -"checksum croaring-sys 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "546b00f33bdf591bce6410a8dca65047d126b1d5a9189190d085aa8c493d43a7" -"checksum crossbeam 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "24ce9782d4d5c53674646a6a4c1863a21a8fc0cb649b3c94dfc16e45071dea19" -"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" -"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" -"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" -"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" -"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" -"checksum crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7afa06d05a046c7a47c3a849907ec303504608c927f4e85f7bfff22b7180d971" -"checksum csv 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7ef22b37c7a51c564a365892c012dc0271221fdcc64c69b19ba4d6fa8bd96d9c" -"checksum ct-logs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "95a4bf5107667e12bf6ce31a3a5066d67acc88942b6742117a41198734aaccaa" -"checksum darling 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "52f20e669de9a5689aa54f3ca9ddc9e14ae5eef15028192bd2f7caf9376a0040" -"checksum darling_core 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "672c68a636ed710f415c1fbaa48805db6c7400b8dc10f6b04e851ac1ea1b8c99" -"checksum darling_macro 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e4115f0ff5e1a6092815889a480c4f1e4679991d7bfc99696b6f03980123c549" -"checksum derive_builder 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a0ca533e6abb78f9108585535ce2ae0b14c8b4504e138a9a28eaf8ba2b270c1d" -"checksum derive_builder_core 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fb484fe06ba1dc5b82f88aff700191dfc127e02b06b35e302c169706168e2528" -"checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" -"checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" -"checksum encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90b2c9496c001e8cb61827acdefad780795c42264c137744cae6f7d9e3450abd" -"checksum enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180" -"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" -"checksum env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "afb070faf94c85d17d50ca44f6ad076bce18ae92f0037d350947240a36e9d42e" -"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" -"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" -"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2291c165c8e703ee54ef3055ad6188e3d51108e2ded18e9f2476e774fc5ad3d4" -"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" -"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" -"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" -"checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d" -"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" -"checksum grin_api 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_chain 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_p2p 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_pool 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_secp256k1zkp 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "223095ed6108a42855ab2ce368d2056cfd384705f81c494f6d88ab3383161562" -"checksum grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_wallet 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ddb2b25a33e231484694267af28fec74ac63b5ccf51ee2065a5e313b834d836e" -"checksum hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "733e1b3ac906631ca01ebb577e9bb0f5e37a454032b9036b5eaea4013ed6f99a" -"checksum http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "1a10e5b573b9a0146545010f50772b9e8b1dd0a256564cc4307694c68832a2f5" -"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" -"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f1ebec079129e43af5e234ef36ee3d7e6085687d145b7ea653b262d16c6b65f1" -"checksum hyper-rustls 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "68f2aa6b1681795bf4da8063f718cd23145aa0c9a5143d9787b345aa60d38ee4" -"checksum ident_case 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c9826188e666f2ed92071d2dadef6edc430b11b158b5b2b3f4babbcc891eaaa" -"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" -"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" -"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" -"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "e962c7641008ac010fa60a7dfdc1712449f29c44ef2d4702394aea943ee75047" -"checksum liblmdb-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "feed38a3a580f60bf61aaa067b0ff4123395966839adeaf67258a9e50c4d2e49" -"checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" -"checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" -"checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" -"checksum lmdb-zero 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "13416eee745b087c22934f35f1f24da22da41ba2a5ce197143d168ce055cc58d" -"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" -"checksum log-mdc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" -"checksum log4rs 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "25e0fc8737a634116a2deb38d821e4400ed16ce9dcb0d628a978d399260f5902" -"checksum lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d06ff7ff06f729ce5f4e227876cb88d10bc59cd4ae1e09fbb2bde15c850dc21" -"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a" -"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" -"checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" -"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" -"checksum miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0300eafb20369952951699b68243ab4334f4b10a88f411c221d444b36c40e649" -"checksum miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c468f2369f07d651a5d0bb2c9079f8488a66d5466efe42d0c5c6466edcb7f71e" -"checksum miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7fe927a42e3807ef71defb191dc87d4e24479b221e67015fe38ae2b7b447bab" -"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" -"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" -"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" -"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum msdos_time 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aad9dfe950c057b1bfe9c1f2aa51583a8468ef2a5baba2ebbe06d775efeb7729" -"checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" -"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum nitox 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "380ef8089eaa863349131e2e03bbe90b9f6a5f49caa9b46c4b559cbc79734543" -"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum nom 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05aec50c70fd288702bcd93284a8444607f3292dbdf2a30de5ea5dcdbe72287b" -"checksum nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b30adc557058ce00c9d0d7cb3c6e0b5bc6f36e2e2eabe74b0ba726d194abd588" -"checksum num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" -"checksum num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf4825417e1e1406b3782a8ce92f4d53f26ec055e3622e1881ca8e9f5f9e08db" -"checksum num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1" -"checksum num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "57450397855d951f1a41305e54851b1a7b8f5d2e349543a02a2effe25459f718" -"checksum num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656" -"checksum num-complex 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "107b9be86cd2481930688277b675b0114578227f034674726605b8a482d8baf8" -"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" -"checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" -"checksum num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e" -"checksum num-rational 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e96f040177bb3da242b5b1ecf3f54b5d5af3efbbfb18608977a5d2767b22f10" -"checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" -"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" -"checksum odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" -"checksum openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ec7bd7ca4cce6dbdc77e7c1230682740d307d1218a87fb0349a571272be749f9" -"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)" = "1bb974e77de925ef426b6bc82fce15fd45bdcbeb5728bffcfc7cdeeb7ce1c2d6" -"checksum ordered-float 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2f0015e9e8e28ee20c581cfbfe47c650cedeb9ed0721090e0b7ebb10b9cdbcc2" -"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" -"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" -"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum pbkdf2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0c09cddfbfc98de7f76931acf44460972edb4023eb14d0c6d4018800e552d8e0" -"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" -"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" -"checksum podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "780fb4b6698bbf9cf2444ea5d22411cef2953f0824b98f33cf454ec5615645bd" -"checksum prettytable-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5511ca4c805aa35f0abff6be7923231d664408b60c09f44ef715f2bce106cd9e" -"checksum proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "77997c53ae6edd6d187fec07ec41b207063b5ee6f33680e9fa86d405cdd313d4" -"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" -"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" -"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" -"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832" -"checksum rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c690732391ae0abafced5015ffb53656abfaec61b342290e5eb56b286a679d" -"checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" -"checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861" -"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" -"checksum ripemd160 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "482aa56cc68aaeccdaaff1cc5a72c247da8bbad3beb174ca5741f274c22883fb" -"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" -"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" -"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" -"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" -"checksum same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267" -"checksum schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "0e1a231dc10abf6749cfa5d7767f25888d484201accbd919b66ab5413c502d56" -"checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" -"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb8f61f9e6eadd062a71c380043d28036304a4706b3c4dd001ff3387ed00745a" -"checksum security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfab8dda0e7a327c696d893df9ffa19cadc4bd195797997f5223cf5831beaf05" -"checksum security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3d6696852716b589dff9e886ff83778bb635150168e83afa8ac6b8a78cb82abc" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "2e20fde37801e83c891a2dc4ebd3b81f0da4d1fb67a9e0a2a3b921e2536a58ee" -"checksum serde-value 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7a663f873dedc4eac1a559d4c6bc0d0b2c34dc5ac4702e105014b8281489e44f" -"checksum serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "633e97856567e518b59ffb2ad7c7a4fd4c5d91d9c7f32dd38a27b2bf7e8114ea" -"checksum serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "27dce848e7467aa0e2fcaf0a413641499c0b745452aaca1194d24dedde9e13c9" -"checksum serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0887a8e097a69559b56aa2526bf7aff7c3048cf627dff781f0b56a6001534593" -"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" -"checksum sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eb6be24e4c23a84d7184280d2722f7f2731fcdd4a9d886efbfe4413e4847ea0" -"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "88aea073965ab29f6edb5493faf96ad662fb18aa9eeb186a3b7057951605ed15" -"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b" -"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" -"checksum supercow 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "171758edb47aa306a78dfa4ab9aeb5167405bd4e3dc2b64e88f6a84bbe98bd63" -"checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" -"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" -"checksum tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "37daa55a7240c4931c84559f03b3cad7d19535840d1c4a0cc4e9b2fb0dcf70ff" -"checksum term 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5e6b677dd1e8214ea1ef4297f85dbcbed8e8cdddb561040cc998ca2551c37561" -"checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" -"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" -"checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" -"checksum thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1" -"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" -"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" -"checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" -"checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" -"checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" -"checksum tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e9cbbc8a3698b7ab652340f46633364f9eaa928ddaaee79d8b8f356dd79a09d" -"checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" -"checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" -"checksum tokio-retry 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f05746ae87dca83a2016b4f5dba5b237b897dd12fd324f60afe282112f16969a" -"checksum tokio-rustls 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "208d62fa3e015426e3c64039d9d20adf054a3c9b4d9445560f1c41c75bef3eab" -"checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb" -"checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" -"checksum tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" -"checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" -"checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" -"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" -"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" -"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"checksum typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "653be63c80a3296da5551e1bfd2cca35227e13cdd08c6668903ae2f4f77aa1f6" -"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" -"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" -"checksum unicode-segmentation 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c3bc443ded17b11305ffffe6b37e2076f328a5a8cb6aa877b1b98f77699e98b5" -"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -"checksum unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f30360d7979f5e9c6e6cea48af192ea8fab4afb3cf72597154b8f08935bc9c7f" -"checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" -"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" -"checksum uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e1436e58182935dcd9ce0add9ea0b558e8a87befe01c1a301e6020aeb0876363" -"checksum uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0238db0c5b605dd1cf51de0f21766f97fba2645897024461d6a00c036819a768" -"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" -"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" -"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1" -"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" -"checksum webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "17d7967316d8411ca3b01821ee6c332bde138ba4363becdb492f12e514daa17f" -"checksum webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85d1f408918fd590908a70d36b7ac388db2edc221470333e4d6e5b598e44cabf" -"checksum which 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e84a603e7e0b1ce1aa1ee2b109c7be00155ce52df5081590d1ffb93f4f515cb2" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" -"checksum ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "329d3e6dd450a9c5c73024e1047f0be7e24121a68484eb0b5368977bee3cf8c3" -"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -"checksum yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "95acf0db5515d07da9965ec0e0ba6cc2d825e2caeb7303b66ca441729801254e" -"checksum zeroize 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8ddfeb6eee2fb3b262ef6e0898a52b7563bb8e0d5955a313b3cf2f808246ea14" -"checksum zip 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "36b9e08fb518a65cf7e08a1e482573eb87a2f4f8c6619316612a3c1f162fe822" + "byteorder 1.4.3", + "crc32fast", + "thiserror", +] diff --git a/Cargo.toml b/Cargo.toml index 2f30f91..353d7a0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,9 @@ [package] -name = "grinbox" +name = "epicbox" version = "0.1.0" authors = ["vault713 devs"] -description = "A slate relay service for Grin." -keywords = [ "grin", "mimblewimble", "rust", "crypto", "cryptocurrency", "wallet713", "vault713" ] +description = "A slate relay service for Epic." +keywords = ["epic", "mimblewimble", "rust", "crypto", "cryptocurrency", "wallet713", "vault713" ] license = "Apache-2.0" readme = "README.md" @@ -28,6 +28,5 @@ tokio-timer = "0.2" toml = "0.4" unicode-segmentation = "0.1" uuid = { version = "0.7", features = ["serde", "v4"] } -ws = "0.7" - -grinboxlib = { path = "./grinboxlib" } \ No newline at end of file +ws = { version = "0.9.2", features = ["ssl"] } +epicboxlib = { path = "./epicboxlib" } diff --git a/Dockerfile b/Dockerfile index 206ef00..bb72e1d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,13 +12,13 @@ RUN set -ex && \ git # create a new empty shell project -RUN USER=root cargo new --bin grinbox -WORKDIR /grinbox +RUN USER=root cargo new --bin epicbox +WORKDIR /epicbox # copy over your manifests COPY ./Cargo.lock ./Cargo.lock COPY ./Cargo.toml ./Cargo.toml -COPY ./grinboxlib ./grinboxlib +COPY ./epicboxlib ./epicboxlib # this build step will cache your dependencies RUN cargo build --release @@ -28,7 +28,7 @@ RUN rm src/*.rs COPY ./src ./src # build for release -RUN rm ./target/release/deps/grinbox* +RUN rm ./target/release/deps/epicbox* RUN cargo build --release # runtime stage @@ -42,16 +42,16 @@ RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ ENV LANG en_US.UTF-8 -RUN adduser --disabled-login --home /grinbox --gecos "" grinbox +RUN adduser --disabled-login --home /epicbox --gecos "" epicbox -USER grinbox +USER epicbox -COPY --from=builder ./grinbox/target/release/grinbox /grinbox/grinbox +COPY --from=builder ./epicbox/target/release/epicbox /epicbox/epicbox -WORKDIR /grinbox +WORKDIR /epicbox COPY ./start.sh ./start.sh CMD ["./start.sh"] -EXPOSE 13420 \ No newline at end of file +EXPOSE 13420 diff --git a/README.md b/README.md index 7d7cf10..b747e70 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,45 @@ -# [grinbox://](http://grinbox.io): An open transaction building protocol +epic# [epicbox://](http://epicbox.io): An open transaction building protocol -[![Join the chat at https://gitter.im/vault713/grinbox](https://badges.gitter.im/vault713/grinbox.svg)](https://gitter.im/vault713/grinbox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +Notice: Rust version of epicbox is depricated and we now use epicboxnodejs (see repo) + +[![Join the chat at https://gitter.im/vault713/epicbox](https://badges.gitter.im/vault713/epicbox.svg)](https://gitter.im/vault713/epicbox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) ## Introduction -[Grin](https://github.com/mimblewimble/grin) is a blockchain-powered cryptocurrency that is an implementation of the Mimblewimble protocol, with a focus on privacy and scalability. In Mimblewimble, transactions are interactive, requiring the Sender and Recipient to interact over a single round trip in order to build the transaction. +[Epic](https://github.com/mimblewimble/epic) is a blockchain-powered cryptocurrency that is an implementation of the Mimblewimble protocol, with a focus on privacy and scalability. In Mimblewimble, transactions are interactive, requiring the Sender and Recipient to interact over a single round trip in order to build the transaction. -### What's Grinbox? +### What's Epicbox? -Grinbox provides a simple way for parties to exchange transaction slates as part of the interactive process of building a valid Grin transaction. +Epicbox provides a simple way for parties to exchange transaction slates as part of the interactive process of building a valid Epic transaction. In order to communicate over the relay, each party has to be able to get pending slates from the relay from a dedicated address, and to post new slates to the relay to the other party's dedicated address. **The address is identified by each party's public key.** ## Transaction flow overview -Assuming Alice wants to send Bob 50 grins using the relay: +Assuming Alice wants to send Bob 50 epic using the relay: 1. Alice creates a public/private key pair and an access signature to use as her dedicated address 2. Bob creates a public/private key pair and an access signature to use as his dedicated address 3. Bob sends Alice his public key -4. Alice creates a slate for sending 50 grins to Bob and posts it to Bob's address, identified by the public key in the previous step +4. Alice creates a slate for sending 50 epics to Bob and posts it to Bob's address, identified by the public key in the previous step 5. Bob gets the slate from his address using his signature 6. Bob processes the slate and posts the response into Alice's address 7. Alice gets the slate from her address using her signature -8. Alice finalizes the transaction and broadcasts it to the Grin blockchain +8. Alice finalizes the transaction and broadcasts it to the Epic blockchain ## Functionality -* Written in Rust, Grinbox utilizes websockets to communicate with relay users. -* Relay server federation is supported, allowing you to run your own Grinbox server and be accessible as `publickey@yourdomain.com`. - -## Getting started +* Written in Rust, Epicbox utilizes websockets to communicate with relay users. +* Relay server federation is supported, allowing you to run your own Epicbox server and be accessible as `publickey@yourdomain.com`. -* Grinbox is integrated with [wallet713](https://github.com/vault713/wallet713). Get a grinbox address to receive and send transactions that are end-to-end encrypted by [installing the latest version](https://wallet.713.mw/install). ## Integration instructions -Grinbox is free and open for anyone to use. For instructions on how to integrate with your product or service, see the [relevant section in the documentation](docs/integration.md). You are also welcome to reach out to us at [hello@713.mw](mailto:hello@713.mw) or on [Gitter](https://gitter.im/vault713/grinbox) and we'll help with this. +Epicbox is free and open for anyone to use. For instructions on how to integrate with your product or service, see the [relevant section in the documentation](docs/integration.md). You are also welcome to reach out to us at [hello@713.mw](mailto:hello@713.mw) or on [Gitter](https://gitter.im/vault713/epicbox) and we'll help with this. ## Privacy considerations -* **The relay does not store data.** Grinbox does not store any data on completed transactions by design, but it would be possible for a modified version of a relay to do so and as a result build a graph of activity between addresses. Federation means that a relay only sees transactions related to its own users. +* **The relay does not store data.** Epicbox does not store any data on completed transactions by design, but it would be possible for a modified version of a relay to do so and as a result build a graph of activity between addresses. Federation means that a relay only sees transactions related to its own users. -* **Your IP is your responsibility.** When you communicate with a grinbox relay, you are exposing your IP to the relay. You can obfuscate your real IP address using services such as a VPN and/or TOR or i2p. +* **Your IP is your responsibility.** When you communicate with a epicbox relay, you are exposing your IP to the relay. You can obfuscate your real IP address using services such as a VPN and/or TOR or i2p. ## License -Apache License v2.0. \ No newline at end of file +Apache License v2.0. diff --git a/doc/.lock b/doc/.lock new file mode 100755 index 0000000..e69de29 diff --git a/doc/COPYRIGHT.txt b/doc/COPYRIGHT.txt new file mode 100644 index 0000000..c2629a8 --- /dev/null +++ b/doc/COPYRIGHT.txt @@ -0,0 +1,50 @@ +These documentation pages include resources by third parties. This copyright +file applies only to those resources. The following third party resources are +included, and carry their own copyright notices and license terms: + +* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2, + FiraSans-Regular.woff, FiraSans-Medium.woff): + + Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ + with Reserved Font Name Fira Sans. + + Copyright (c) 2014, Telefonica S.A. + + Licensed under the SIL Open Font License, Version 1.1. + See FiraSans-LICENSE.txt. + +* rustdoc.css, main.js, and playpen.js: + + Copyright 2015 The Rust Developers. + Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or + the MIT license (LICENSE-MIT.txt) at your option. + +* normalize.css: + + Copyright (c) Nicolas Gallagher and Jonathan Neal. + Licensed under the MIT license (see LICENSE-MIT.txt). + +* Source Code Pro (SourceCodePro-Regular.ttf.woff2, + SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2, + SourceCodePro-Regular.ttf.woff, SourceCodePro-Semibold.ttf.woff, + SourceCodePro-It.ttf.woff): + + Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), + with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark + of Adobe Systems Incorporated in the United States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceCodePro-LICENSE.txt. + +* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2, + SourceSerif4-It.ttf.woff2, SourceSerif4-Regular.ttf.woff, + SourceSerif4-Bold.ttf.woff, SourceSerif4-It.ttf.woff): + + Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name + 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United + States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceSerif4-LICENSE.md. + +This copyright file is intended to be distributed with rustdoc output. diff --git a/doc/FiraSans-LICENSE.txt b/doc/FiraSans-LICENSE.txt new file mode 100644 index 0000000..ff9afab --- /dev/null +++ b/doc/FiraSans-LICENSE.txt @@ -0,0 +1,94 @@ +Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. +with Reserved Font Name < Fira >, + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/doc/FiraSans-Medium.woff b/doc/FiraSans-Medium.woff new file mode 100644 index 0000000..7d742c5 Binary files /dev/null and b/doc/FiraSans-Medium.woff differ diff --git a/doc/FiraSans-Medium.woff2 b/doc/FiraSans-Medium.woff2 new file mode 100644 index 0000000..7a1e5fc Binary files /dev/null and b/doc/FiraSans-Medium.woff2 differ diff --git a/doc/FiraSans-Regular.woff b/doc/FiraSans-Regular.woff new file mode 100644 index 0000000..d8e0363 Binary files /dev/null and b/doc/FiraSans-Regular.woff differ diff --git a/doc/FiraSans-Regular.woff2 b/doc/FiraSans-Regular.woff2 new file mode 100644 index 0000000..e766e06 Binary files /dev/null and b/doc/FiraSans-Regular.woff2 differ diff --git a/doc/LICENSE-APACHE.txt b/doc/LICENSE-APACHE.txt new file mode 100644 index 0000000..16fe87b --- /dev/null +++ b/doc/LICENSE-APACHE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/doc/LICENSE-MIT.txt b/doc/LICENSE-MIT.txt new file mode 100644 index 0000000..31aa793 --- /dev/null +++ b/doc/LICENSE-MIT.txt @@ -0,0 +1,23 @@ +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/doc/SourceCodePro-It.ttf.woff b/doc/SourceCodePro-It.ttf.woff new file mode 100644 index 0000000..8d68f2f Binary files /dev/null and b/doc/SourceCodePro-It.ttf.woff differ diff --git a/doc/SourceCodePro-It.ttf.woff2 b/doc/SourceCodePro-It.ttf.woff2 new file mode 100644 index 0000000..462c34e Binary files /dev/null and b/doc/SourceCodePro-It.ttf.woff2 differ diff --git a/doc/SourceCodePro-LICENSE.txt b/doc/SourceCodePro-LICENSE.txt new file mode 100644 index 0000000..0754257 --- /dev/null +++ b/doc/SourceCodePro-LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/doc/SourceCodePro-Regular.ttf.woff b/doc/SourceCodePro-Regular.ttf.woff new file mode 100644 index 0000000..7be076e Binary files /dev/null and b/doc/SourceCodePro-Regular.ttf.woff differ diff --git a/doc/SourceCodePro-Regular.ttf.woff2 b/doc/SourceCodePro-Regular.ttf.woff2 new file mode 100644 index 0000000..10b558e Binary files /dev/null and b/doc/SourceCodePro-Regular.ttf.woff2 differ diff --git a/doc/SourceCodePro-Semibold.ttf.woff b/doc/SourceCodePro-Semibold.ttf.woff new file mode 100644 index 0000000..61bc67b Binary files /dev/null and b/doc/SourceCodePro-Semibold.ttf.woff differ diff --git a/doc/SourceCodePro-Semibold.ttf.woff2 b/doc/SourceCodePro-Semibold.ttf.woff2 new file mode 100644 index 0000000..5ec64ee Binary files /dev/null and b/doc/SourceCodePro-Semibold.ttf.woff2 differ diff --git a/doc/SourceSerif4-Bold.ttf.woff b/doc/SourceSerif4-Bold.ttf.woff new file mode 100644 index 0000000..8ad4188 Binary files /dev/null and b/doc/SourceSerif4-Bold.ttf.woff differ diff --git a/doc/SourceSerif4-Bold.ttf.woff2 b/doc/SourceSerif4-Bold.ttf.woff2 new file mode 100644 index 0000000..db57d21 Binary files /dev/null and b/doc/SourceSerif4-Bold.ttf.woff2 differ diff --git a/doc/SourceSerif4-It.ttf.woff b/doc/SourceSerif4-It.ttf.woff new file mode 100644 index 0000000..2a34b5c Binary files /dev/null and b/doc/SourceSerif4-It.ttf.woff differ diff --git a/doc/SourceSerif4-It.ttf.woff2 b/doc/SourceSerif4-It.ttf.woff2 new file mode 100644 index 0000000..1cbc021 Binary files /dev/null and b/doc/SourceSerif4-It.ttf.woff2 differ diff --git a/doc/SourceSerif4-LICENSE.md b/doc/SourceSerif4-LICENSE.md new file mode 100644 index 0000000..68ea189 --- /dev/null +++ b/doc/SourceSerif4-LICENSE.md @@ -0,0 +1,93 @@ +Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/doc/SourceSerif4-Regular.ttf.woff b/doc/SourceSerif4-Regular.ttf.woff new file mode 100644 index 0000000..45a5521 Binary files /dev/null and b/doc/SourceSerif4-Regular.ttf.woff differ diff --git a/doc/SourceSerif4-Regular.ttf.woff2 b/doc/SourceSerif4-Regular.ttf.woff2 new file mode 100644 index 0000000..2db73fe Binary files /dev/null and b/doc/SourceSerif4-Regular.ttf.woff2 differ diff --git a/doc/ayu.css b/doc/ayu.css new file mode 100644 index 0000000..3444ac5 --- /dev/null +++ b/doc/ayu.css @@ -0,0 +1 @@ + body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3,h4{color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3,h4{border-bottom-color:#5c6773;}h4{border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;background-color:#191f26;}.sidebar{background-color:#14191f;}.logo-container.rust-logo>img{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);}*{scrollbar-color:#5c6773 transparent;}.sidebar{scrollbar-color:#5c6773 transparent;}::-webkit-scrollbar-track{background-color:transparent;}::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar::-webkit-scrollbar-track{background-color:transparent;}.sidebar::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar .current{background-color:transparent;color:#ffb44c;}.source .sidebar{background-color:#0f1419;}.sidebar .location{border-color:#000;background-color:#0f1419;color:#fff;}.sidebar-elems .location{color:#ff7733;}.sidebar-elems .location a{color:#fff;}.sidebar .version{border-bottom-color:#424c57;}.sidebar-title{border-top-color:#5c6773;border-bottom-color:#5c6773;}.block a:hover{background:transparent;color:#ffb44c;}.line-numbers span{color:#5c6773;}.line-numbers .line-highlighted{color:#708090;background-color:rgba(255,236,164,0.06);padding-right:4px;border-right:1px solid #ffb44c;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#5c6773;}.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#000 !important;background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ef57ff;}.content span.union,.content a.union{color:#98a01c;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#6380a0;}.content span.primitive,.content a.primitive{color:#32889b;}.content span.traitalias,.content a.traitalias{color:#57d399;}.content span.keyword,.content a.keyword{color:#de5249;}.content span.externcrate,.content span.mod,.content a.mod{color:#acccf9;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#99e0c9;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#cfbcf5;}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod,.content .fnname{color:#fdd687;}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:#a37acc;}pre.rust .comment{color:#788797;}pre.rust .doccomment{color:#a1ac88;}nav:not(.sidebar){border-bottom-color:#424c57;}nav.main .current{border-top-color:#5c6773;border-bottom-color:#5c6773;}nav.main .separator{border:1px solid #5c6773;}a{color:#c5c5c5;}body.source .example-wrap pre.rust a{background:#c5c5c5;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#39AFD7;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search{color:#c5c5c5;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;border-color:#424c57;}.search-input{color:#ffffff;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;transition:box-shadow 150ms ease-in-out;}#crate-search+.search-input:focus{box-shadow:0 0 0 1px #148099,0 0 0 2px transparent;}.search-input:disabled{background-color:#3e3e3e;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable,.stab.deprecated,.stab.portability{color:#c5c5c5;background:#314559 !important;border-style:none !important;border-radius:4px;padding:3px 6px 3px 6px;}.stab.portability>code{color:#e6e1cf;background:none;}#help>div{background:#14191f;box-shadow:0px 6px 20px 0px black;border:none;border-radius:4px;}#help>div>span{border-bottom-color:#5c6773;}.since{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}.line-numbers :target{background-color:transparent;}pre.rust .number,pre.rust .string{color:#b8cc52;}pre.rust .kw,pre.rust .kw-2,pre.rust .prelude-ty,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .op,pre.rust .lifetime{color:#ff7733;}pre.rust .macro,pre.rust .macro-nonterminal{color:#a37acc;}pre.rust .question-mark{color:#ff9011;}pre.rust .self{color:#36a3d9;font-style:italic;}pre.rust .attribute{color:#e6e1cf;}pre.rust .attribute .ident,pre.rust .attribute .op{color:#e6e1cf;}.example-wrap>pre.line-number{color:#5c67736e;border:none;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}.toggle-label,.code-attribute{color:#999;}:target,:target>*{background:rgba(255,236,164,0.06);}:target{border-right:3px solid rgba(255,180,76,0.85);}pre.compile_fail{border-left:2px solid rgba(255,0,0,.4);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.4);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;border:1px solid #5c6773;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;border-color:#5c6773;}.notable-traits-tooltiptext .notable{border-bottom-color:#5c6773;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}.search-input:focus{}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content span.type,.content a.type,.block a.current.type{}.content span.union,.content a.union,.block a.current.union{}pre.rust .lifetime{}.stab.unstable{}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){}.content span.enum,.content a.enum,.block a.current.enum{}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{}.content span.keyword,.content a.keyword,.block a.current.keyword{}pre.rust .comment{}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{}pre.rust .kw{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{}pre.rust .doccomment{}.stab.deprecated{}.content a.attr,.content a.derive,.content a.macro{}.stab.portability{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}.search-results a:focus span{}a.result-trait:focus{}a.result-traitalias:focus{}a.result-mod:focus,a.result-externcrate:focus{}a.result-mod:focus{}a.result-externcrate:focus{}a.result-enum:focus{}a.result-struct:focus{}a.result-union:focus{}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{}a.result-type:focus{}a.result-foreigntype:focus{}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{}a.result-constant:focus,a.result-static:focus{}a.result-primitive:focus{}a.result-keyword:focus{}@media (max-width:700px){.sidebar-menu{background-color:#14191f;border-bottom-color:#5c6773;border-right-color:#5c6773;}.sidebar-elems{background-color:#14191f;border-right-color:#5c6773;}#sidebar-filler{background-color:#14191f;border-bottom-color:#5c6773;}}kbd{color:#c5c5c5;background-color:#314559;border-color:#5c6773;border-bottom-color:#5c6773;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#5c6773;background-color:#0f1419;color:#fff;}#theme-picker>img,#settings-menu>img{filter:invert(100);}#copy-path{color:#fff;}#copy-path>img{filter:invert(70%);}#copy-path:hover>img{filter:invert(100%);}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#e0e0e0;}#theme-choices{border-color:#5c6773;background-color:#0f1419;}#theme-choices>button:not(:first-child){border-top-color:#5c6773;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:rgba(110,110,110,0.33);}@media (max-width:700px){#theme-picker{background:#0f1419;}}#all-types{background-color:#14191f;}#all-types:hover{background-color:rgba(70,70,70,0.33);}.search-results .result-name span.alias{color:#c5c5c5;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#14191f;}#sidebar-toggle:hover{background-color:rgba(70,70,70,0.33);}#source-sidebar{background-color:#14191f;}#source-sidebar>.title{color:#fff;border-bottom-color:#5c6773;}div.files>a:hover,div.name:hover{background-color:#14191f;color:#ffb44c;}div.files>.selected{background-color:#14191f;color:#ffb44c;}.setting-line>.title{border-bottom-color:#5c6773;}input:checked+.slider{background-color:#ffb454 !important;} \ No newline at end of file diff --git a/doc/brush.svg b/doc/brush.svg new file mode 100644 index 0000000..ea266e8 --- /dev/null +++ b/doc/brush.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doc/clipboard.svg b/doc/clipboard.svg new file mode 100644 index 0000000..8adbd99 --- /dev/null +++ b/doc/clipboard.svg @@ -0,0 +1 @@ + diff --git a/doc/crates.js b/doc/crates.js new file mode 100644 index 0000000..6e7bace --- /dev/null +++ b/doc/crates.js @@ -0,0 +1 @@ +window.ALL_CRATES = ["epicbox"]; \ No newline at end of file diff --git a/doc/dark.css b/doc/dark.css new file mode 100644 index 0000000..5787fd1 --- /dev/null +++ b/doc/dark.css @@ -0,0 +1 @@ +body{background-color:#353535;color:#ddd;}h1,h2,h3,h4{color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3,h4{border-bottom-color:#d2d2d2;}.in-band{background-color:#353535;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#2A2A2A;}pre,.rustdoc.source .example-wrap{background-color:#2A2A2A;}.sidebar{background-color:#505050;}.logo-container.rust-logo>img{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff)}*{scrollbar-color:rgb(64,65,67) #717171;}.sidebar{scrollbar-color:rgba(32,34,37,.6) transparent;}::-webkit-scrollbar-track{background-color:#717171;}::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar::-webkit-scrollbar-track{background-color:#717171;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar .current{background-color:#333;}.source .sidebar{background-color:#353535;}.sidebar .location{border-color:#fff;background:#575757;color:#DDD;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#444;}.line-numbers span{color:#3B91E2;}.line-numbers .line-highlighted{background-color:#0a042f !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#DDD;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#eee !important;background-color:#616161;}.search-results a:focus span{color:#eee !important;}a.result-trait:focus{background-color:#013191;}a.result-traitalias:focus{background-color:#013191;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-mod:focus{background-color:#803a1b;}a.result-externcrate:focus{background-color:#396bac;}a.result-enum:focus{background-color:#5b4e68;}a.result-struct:focus{background-color:#194e9f;}a.result-union:focus{background-color:#b7bd49;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#4950ed;}a.result-type:focus{background-color:#38902c;}a.result-foreigntype:focus{background-color:#b200d6;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#217d1c;}a.result-constant:focus,a.result-static:focus{background-color:#0063cc;}a.result-primitive:focus{background-color:#00708a;}a.result-keyword:focus{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#82b089;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#ff7f00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#dd7de8;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#09bd00;}.content span.union,.content a.union,.block a.current.union{color:#a6ae37;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#82a5c9;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#43aec7;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#bda000;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b397da;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#2BAB63;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#de5249;}pre.rust .comment{color:#8d8d8b;}pre.rust .doccomment{color:#8ca375;}nav:not(.sidebar){border-bottom-color:#4e4e4e;}nav.main .current{border-top-color:#eee;border-bottom-color:#eee;}nav.main .separator{border-color:#eee;}a{color:#ddd;}body.source .example-wrap pre.rust a{background:#333;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#D2991D;}a.test-arrow{color:#dedede;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search{color:#111;background-color:#f0f0f0;border-color:#000;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input{color:#111;background-color:#f0f0f0;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input:focus{border-color:#008dfd;}.search-input:disabled{background-color:#c5c4c4;}#crate-search+.search-input:focus{box-shadow:0 0 8px 4px #078dd8;}.module-item .stab,.import-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;color:#2f2f2f;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help>div>span{border-bottom-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.since{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#ddd;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#ab8ac1;}pre.rust .kw-2,pre.rust .prelude-ty{color:#769acb;}pre.rust .number,pre.rust .string{color:#83a300;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#ee6868;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#d97f26;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#4a4949;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target,:target>*{background-color:#494a3d;}:target{border-right:3px solid #bb7410;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.8);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.8);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.8);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.8);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;border-color:#777;}.notable-traits-tooltiptext .notable{border-bottom-color:#d2d2d2;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#505050;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#505050;border-right-color:#000;}#sidebar-filler{background-color:#505050;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background:#f0f0f0;color:#000;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#ffb900;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(65%);}#theme-choices{border-color:#e0e0e0;background-color:#353535;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#4e4e4e;}@media (max-width:700px){#theme-picker{background:#f0f0f0;}}#all-types{background-color:#505050;}#all-types:hover{background-color:#606060;}.search-results .result-name span.alias{color:#fff;}.search-results .result-name span.grey{color:#ccc;}#sidebar-toggle{background-color:#565656;}#sidebar-toggle:hover{background-color:#676767;}#source-sidebar{background-color:#565656;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#444;}div.files>.selected{background-color:#333;}.setting-line>.title{border-bottom-color:#ddd;} \ No newline at end of file diff --git a/doc/down-arrow.svg b/doc/down-arrow.svg new file mode 100644 index 0000000..35437e7 --- /dev/null +++ b/doc/down-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doc/epicbox/all.html b/doc/epicbox/all.html new file mode 100644 index 0000000..75804ca --- /dev/null +++ b/doc/epicbox/all.html @@ -0,0 +1,5 @@ +List of all items in this crate

List of all items[] + +

Structs

Enums

Traits

Macros

Functions

Typedefs

Statics

Constants

+ + \ No newline at end of file diff --git a/doc/epicbox/broker/broker_protocol/enum.BrokerRequest.html b/doc/epicbox/broker/broker_protocol/enum.BrokerRequest.html new file mode 100644 index 0000000..eb289e7 --- /dev/null +++ b/doc/epicbox/broker/broker_protocol/enum.BrokerRequest.html @@ -0,0 +1,32 @@ +BrokerRequest in epicbox::broker::broker_protocol - Rust

Enum epicbox::broker::broker_protocol::BrokerRequest[][src]

pub enum BrokerRequest {
+    Subscribe {
+        id: String,
+        subject: String,
+        response_sender: UnboundedSender<BrokerResponse>,
+    },
+    Unsubscribe {
+        id: String,
+    },
+    PostMessage {
+        subject: String,
+        payload: String,
+        reply_to: String,
+        message_expiration_in_seconds: Option<u32>,
+    },
+}

Variants

Subscribe

Fields of Subscribe

id: Stringsubject: Stringresponse_sender: UnboundedSender<BrokerResponse>
Unsubscribe

Fields of Unsubscribe

id: String
PostMessage

Fields of PostMessage

subject: Stringpayload: Stringreply_to: Stringmessage_expiration_in_seconds: Option<u32>

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/broker_protocol/enum.BrokerResponse.html b/doc/epicbox/broker/broker_protocol/enum.BrokerResponse.html new file mode 100644 index 0000000..353bf07 --- /dev/null +++ b/doc/epicbox/broker/broker_protocol/enum.BrokerResponse.html @@ -0,0 +1,23 @@ +BrokerResponse in epicbox::broker::broker_protocol - Rust

Enum epicbox::broker::broker_protocol::BrokerResponse[][src]

pub enum BrokerResponse {
+    Message {
+        subject: String,
+        payload: String,
+        reply_to: String,
+    },
+}

Variants

Message

Fields of Message

subject: Stringpayload: Stringreply_to: String

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/broker_protocol/index.html b/doc/epicbox/broker/broker_protocol/index.html new file mode 100644 index 0000000..19d3622 --- /dev/null +++ b/doc/epicbox/broker/broker_protocol/index.html @@ -0,0 +1,4 @@ +epicbox::broker::broker_protocol - Rust

Module epicbox::broker::broker_protocol[][src]

Enums

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/broker_protocol/sidebar-items.js b/doc/epicbox/broker/broker_protocol/sidebar-items.js new file mode 100644 index 0000000..e04d07a --- /dev/null +++ b/doc/epicbox/broker/broker_protocol/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"enum":[["BrokerRequest",""],["BrokerResponse",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/index.html b/doc/epicbox/broker/index.html new file mode 100644 index 0000000..aee75a7 --- /dev/null +++ b/doc/epicbox/broker/index.html @@ -0,0 +1,5 @@ +epicbox::broker - Rust

Module epicbox::broker[][src]

Re-exports

+
pub use self::broker_protocol::BrokerRequest;
pub use self::broker_protocol::BrokerResponse;
pub use self::rabbit_broker::Broker;

Modules

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/rabbit_broker/constant.DEFAULT_MESSAGE_EXPIRATION.html b/doc/epicbox/broker/rabbit_broker/constant.DEFAULT_MESSAGE_EXPIRATION.html new file mode 100644 index 0000000..c90b3e9 --- /dev/null +++ b/doc/epicbox/broker/rabbit_broker/constant.DEFAULT_MESSAGE_EXPIRATION.html @@ -0,0 +1,3 @@ +DEFAULT_MESSAGE_EXPIRATION in epicbox::broker::rabbit_broker - Rust

Constant epicbox::broker::rabbit_broker::DEFAULT_MESSAGE_EXPIRATION[][src]

const DEFAULT_MESSAGE_EXPIRATION: u32 = 86400;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/rabbit_broker/constant.DEFAULT_QUEUE_EXPIRATION.html b/doc/epicbox/broker/rabbit_broker/constant.DEFAULT_QUEUE_EXPIRATION.html new file mode 100644 index 0000000..3fd5e28 --- /dev/null +++ b/doc/epicbox/broker/rabbit_broker/constant.DEFAULT_QUEUE_EXPIRATION.html @@ -0,0 +1,3 @@ +DEFAULT_QUEUE_EXPIRATION in epicbox::broker::rabbit_broker - Rust

Constant epicbox::broker::rabbit_broker::DEFAULT_QUEUE_EXPIRATION[][src]

const DEFAULT_QUEUE_EXPIRATION: &str = "86400000";
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/rabbit_broker/constant.REPLY_TO_HEADER_NAME.html b/doc/epicbox/broker/rabbit_broker/constant.REPLY_TO_HEADER_NAME.html new file mode 100644 index 0000000..eca73e0 --- /dev/null +++ b/doc/epicbox/broker/rabbit_broker/constant.REPLY_TO_HEADER_NAME.html @@ -0,0 +1,3 @@ +REPLY_TO_HEADER_NAME in epicbox::broker::rabbit_broker - Rust

Constant epicbox::broker::rabbit_broker::REPLY_TO_HEADER_NAME[][src]

const REPLY_TO_HEADER_NAME: &str = "epicbox-reply-to";
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/rabbit_broker/index.html b/doc/epicbox/broker/rabbit_broker/index.html new file mode 100644 index 0000000..08894a9 --- /dev/null +++ b/doc/epicbox/broker/rabbit_broker/index.html @@ -0,0 +1,6 @@ +epicbox::broker::rabbit_broker - Rust

Module epicbox::broker::rabbit_broker[][src]

Structs

+

Constants

+

Type Definitions

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/rabbit_broker/sidebar-items.js b/doc/epicbox/broker/rabbit_broker/sidebar-items.js new file mode 100644 index 0000000..94489f2 --- /dev/null +++ b/doc/epicbox/broker/rabbit_broker/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"constant":[["DEFAULT_MESSAGE_EXPIRATION",""],["DEFAULT_QUEUE_EXPIRATION",""],["REPLY_TO_HEADER_NAME",""]],"struct":[["Broker",""],["BrokerSession",""],["Consumer",""]],"type":[["Session",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/rabbit_broker/struct.Broker.html b/doc/epicbox/broker/rabbit_broker/struct.Broker.html new file mode 100644 index 0000000..535fe11 --- /dev/null +++ b/doc/epicbox/broker/rabbit_broker/struct.Broker.html @@ -0,0 +1,20 @@ +Broker in epicbox::broker::rabbit_broker - Rust

Struct epicbox::broker::rabbit_broker::Broker[][src]

pub struct Broker {
+    address: SocketAddr,
+    username: String,
+    password: String,
+}

Fields

address: SocketAddrusername: Stringpassword: String

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/rabbit_broker/struct.BrokerSession.html b/doc/epicbox/broker/rabbit_broker/struct.BrokerSession.html new file mode 100644 index 0000000..017a5b7 --- /dev/null +++ b/doc/epicbox/broker/rabbit_broker/struct.BrokerSession.html @@ -0,0 +1,72 @@ +BrokerSession in epicbox::broker::rabbit_broker - Rust

Struct epicbox::broker::rabbit_broker::BrokerSession[][src]

struct BrokerSession {
+    session: Arc<Mutex<Session<TcpStream>>>,
+    session_number: u32,
+    consumers: Arc<Mutex<HashMap<String, Consumer>>>,
+    subject_to_consumer_id_lookup: Arc<Mutex<HashMap<String, String>>>,
+    subscription_id_to_consumer_id_lookup: Arc<Mutex<HashMap<String, String>>>,
+}

Fields

session: Arc<Mutex<Session<TcpStream>>>session_number: u32consumers: Arc<Mutex<HashMap<String, Consumer>>>subject_to_consumer_id_lookup: Arc<Mutex<HashMap<String, String>>>subscription_id_to_consumer_id_lookup: Arc<Mutex<HashMap<String, String>>>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

The type of value that this future will resolved with if it is +successful. Read more

+

The type of error that this future will resolve with if it fails in a +normal fashion. Read more

+

Query this future to see if its value has become available, registering +interest if it is not. Read more

+

Block the current thread until this future is resolved. Read more

+

Map this future’s result to a different type, returning a new future of +the resulting type. Read more

+

Map this future’s error to a different error, returning a new future. Read more

+

Map this future’s error to any error implementing From for +this future’s Error, returning a new future. Read more

+

Chain on a computation for when a future finished, passing the result of +the future to the provided closure f. Read more

+

Execute another future after this one has resolved successfully. Read more

+

Execute another future if this one resolves with an error. Read more

+

Waits for either one of two futures to complete. Read more

+

Waits for either one of two differently-typed futures to complete. Read more

+

Joins the result of two futures, waiting for them both to complete. Read more

+

Same as join, but with more futures.

+

Same as join, but with more futures.

+

Same as join, but with more futures.

+

Convert this future into a single element stream. Read more

+

Flatten the execution of this future when the successful result of this +future is itself another future. Read more

+

Flatten the execution of this future when the successful result of this +future is a stream. Read more

+

Fuse a future such that poll will never again be called once it has +completed. Read more

+

Do something with the item of a future, passing it on. Read more

+

Catches unwinding panics while polling the future. Read more

+

Create a cloneable handle to this future where all handles will resolve +to the same result. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Creates a new future which allows self until timeout. Read more

+

Performs the conversion.

+

The future that this type can be converted into.

+

The item that the future may resolve with.

+

The error that the future may resolve with.

+

Consumes this object and produces a future.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/rabbit_broker/struct.Consumer.html b/doc/epicbox/broker/rabbit_broker/struct.Consumer.html new file mode 100644 index 0000000..ebd4e33 --- /dev/null +++ b/doc/epicbox/broker/rabbit_broker/struct.Consumer.html @@ -0,0 +1,20 @@ +Consumer in epicbox::broker::rabbit_broker - Rust

Struct epicbox::broker::rabbit_broker::Consumer[][src]

struct Consumer {
+    subject: String,
+    subscription_id: String,
+    sender: UnboundedSender<BrokerResponse>,
+}

Fields

subject: Stringsubscription_id: Stringsender: UnboundedSender<BrokerResponse>

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/rabbit_broker/type.Session.html b/doc/epicbox/broker/rabbit_broker/type.Session.html new file mode 100644 index 0000000..d3986fb --- /dev/null +++ b/doc/epicbox/broker/rabbit_broker/type.Session.html @@ -0,0 +1,3 @@ +Session in epicbox::broker::rabbit_broker - Rust

Type Definition epicbox::broker::rabbit_broker::Session[][src]

type Session = Session<TcpStream>;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/sidebar-items.js b/doc/epicbox/broker/sidebar-items.js new file mode 100644 index 0000000..8a07bc4 --- /dev/null +++ b/doc/epicbox/broker/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"mod":[["broker_protocol",""],["rabbit_broker",""],["stomp",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/enum.ParseError.html b/doc/epicbox/broker/stomp/codec/enum.ParseError.html new file mode 100644 index 0000000..6b6e407 --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/enum.ParseError.html @@ -0,0 +1,37 @@ +ParseError in epicbox::broker::stomp::codec - Rust

Enum epicbox::broker::stomp::codec::ParseError[][src]

pub enum ParseError {
+    Utf8,
+    ContentLength,
+    UnknownCommand(String),
+    Invalid,
+}

Variants

Utf8
ContentLength
UnknownCommand(String)

Tuple Fields of UnknownCommand

0: String
Invalid

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

The lower-level source of this error, if any. Read more

+
🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

+
👎 Deprecated since 1.42.0:

use the Display impl or to_string()

+
👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Converts a reference to Self into a dynamic trait object of Fail.

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the “name” of the error. Read more

+

Returns a reference to the underlying cause of this failure, if it +is an error that wraps other errors. Read more

+

Returns a reference to the Backtrace carried by this failure, if it +carries one. Read more

+

Provides context for this failure. Read more

+

Wraps this failure in a compatibility wrapper that implements +std::error::Error. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

Converts the given value to a String. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/fn.get_line.html b/doc/epicbox/broker/stomp/codec/fn.get_line.html new file mode 100644 index 0000000..266a684 --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/fn.get_line.html @@ -0,0 +1,3 @@ +get_line in epicbox::broker::stomp::codec - Rust

Function epicbox::broker::stomp::codec::get_line[][src]

fn get_line<'a>(src: &'a [u8]) -> Poll<(&'a [u8], &'a [u8]), ParseError>
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/fn.parse_command.html b/doc/epicbox/broker/stomp/codec/fn.parse_command.html new file mode 100644 index 0000000..7580bbc --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/fn.parse_command.html @@ -0,0 +1,3 @@ +parse_command in epicbox::broker::stomp::codec - Rust

Function epicbox::broker::stomp::codec::parse_command[][src]

fn parse_command(src: &[u8]) -> Result<Command, ParseError>
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/fn.parse_header.html b/doc/epicbox/broker/stomp/codec/fn.parse_header.html new file mode 100644 index 0000000..5a9ef77 --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/fn.parse_header.html @@ -0,0 +1,3 @@ +parse_header in epicbox::broker::stomp::codec - Rust

Function epicbox::broker::stomp::codec::parse_header[][src]

fn parse_header(src: &[u8]) -> Poll<Header, ParseError>
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/fn.parse_transmission.html b/doc/epicbox/broker/stomp/codec/fn.parse_transmission.html new file mode 100644 index 0000000..7519100 --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/fn.parse_transmission.html @@ -0,0 +1,3 @@ +parse_transmission in epicbox::broker::stomp::codec - Rust

Function epicbox::broker::stomp::codec::parse_transmission[][src]

fn parse_transmission(src0: &[u8]) -> Poll<(Transmission, usize), ParseError>
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/index.html b/doc/epicbox/broker/stomp/codec/index.html new file mode 100644 index 0000000..8a135ae --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/index.html @@ -0,0 +1,7 @@ +epicbox::broker::stomp::codec - Rust

Module epicbox::broker::stomp::codec[][src]

Macros

+

Structs

+

Enums

+

Functions

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/macro.opt_nr!.html b/doc/epicbox/broker/stomp/codec/macro.opt_nr!.html new file mode 100644 index 0000000..bc4765e --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/macro.opt_nr!.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to macro.opt_nr.html...

+ + + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/macro.opt_nr.html b/doc/epicbox/broker/stomp/codec/macro.opt_nr.html new file mode 100644 index 0000000..73a3678 --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/macro.opt_nr.html @@ -0,0 +1,6 @@ +opt_nr in epicbox::broker::stomp::codec - Rust

Macro epicbox::broker::stomp::codec::opt_nr[][src]

macro_rules! opt_nr {
+    ($opt : expr) => { ... };
+}
+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/sidebar-items.js b/doc/epicbox/broker/stomp/codec/sidebar-items.js new file mode 100644 index 0000000..32ec6ff --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"enum":[["ParseError",""]],"fn":[["get_line",""],["parse_command",""],["parse_header",""],["parse_transmission",""]],"macro":[["opt_nr",""]],"struct":[["Codec",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/codec/struct.Codec.html b/doc/epicbox/broker/stomp/codec/struct.Codec.html new file mode 100644 index 0000000..b303fe4 --- /dev/null +++ b/doc/epicbox/broker/stomp/codec/struct.Codec.html @@ -0,0 +1,26 @@ +Codec in epicbox::broker::stomp::codec - Rust

Struct epicbox::broker::stomp::codec::Codec[][src]

pub struct Codec;

Trait Implementations

The type of decoded frames.

+

The type of unrecoverable frame decoding errors. Read more

+

Attempts to decode a frame from the provided buffer of bytes. Read more

+

A default method available to be called when there are no more bytes +available to be read from the underlying I/O. Read more

+

Provides a Stream and Sink interface for reading and writing to this +Io object, using Decode and Encode to read and write the raw data. Read more

+

The type of items consumed by the Encoder

+

The type of encoding errors. Read more

+

Encodes a frame into the buffer provided. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/connection/fn.heartbeat.html b/doc/epicbox/broker/stomp/connection/fn.heartbeat.html new file mode 100644 index 0000000..4ff9eaf --- /dev/null +++ b/doc/epicbox/broker/stomp/connection/fn.heartbeat.html @@ -0,0 +1,3 @@ +heartbeat in epicbox::broker::stomp::connection - Rust

Function epicbox::broker::stomp::connection::heartbeat[][src]

fn heartbeat(client_ms: u32, server_ms: u32) -> u32
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/connection/fn.select_heartbeat.html b/doc/epicbox/broker/stomp/connection/fn.select_heartbeat.html new file mode 100644 index 0000000..3bbfc14 --- /dev/null +++ b/doc/epicbox/broker/stomp/connection/fn.select_heartbeat.html @@ -0,0 +1,3 @@ +select_heartbeat in epicbox::broker::stomp::connection - Rust

Function epicbox::broker::stomp::connection::select_heartbeat[][src]

pub fn select_heartbeat(
    client_tx_ms: u32,
    client_rx_ms: u32,
    server_tx_ms: u32,
    server_rx_ms: u32
) -> (u32, u32)
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/connection/index.html b/doc/epicbox/broker/stomp/connection/index.html new file mode 100644 index 0000000..47e3372 --- /dev/null +++ b/doc/epicbox/broker/stomp/connection/index.html @@ -0,0 +1,5 @@ +epicbox::broker::stomp::connection - Rust

Module epicbox::broker::stomp::connection[][src]

Structs

+

Functions

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/connection/sidebar-items.js b/doc/epicbox/broker/stomp/connection/sidebar-items.js new file mode 100644 index 0000000..bab1c4e --- /dev/null +++ b/doc/epicbox/broker/stomp/connection/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["heartbeat",""],["select_heartbeat",""]],"struct":[["Credentials",""],["HeartBeat",""],["OwnedCredentials",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/connection/struct.Credentials.html b/doc/epicbox/broker/stomp/connection/struct.Credentials.html new file mode 100644 index 0000000..cb7f4c6 --- /dev/null +++ b/doc/epicbox/broker/stomp/connection/struct.Credentials.html @@ -0,0 +1,28 @@ +Credentials in epicbox::broker::stomp::connection - Rust

Struct epicbox::broker::stomp::connection::Credentials[][src]

pub struct Credentials<'a>(pub &'a str, pub &'a str);

Tuple Fields

0: &'a str1: &'a str

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/connection/struct.HeartBeat.html b/doc/epicbox/broker/stomp/connection/struct.HeartBeat.html new file mode 100644 index 0000000..cc89c4d --- /dev/null +++ b/doc/epicbox/broker/stomp/connection/struct.HeartBeat.html @@ -0,0 +1,28 @@ +HeartBeat in epicbox::broker::stomp::connection - Rust

Struct epicbox::broker::stomp::connection::HeartBeat[][src]

pub struct HeartBeat(pub u32, pub u32);

Tuple Fields

0: u321: u32

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/connection/struct.OwnedCredentials.html b/doc/epicbox/broker/stomp/connection/struct.OwnedCredentials.html new file mode 100644 index 0000000..05aec39 --- /dev/null +++ b/doc/epicbox/broker/stomp/connection/struct.OwnedCredentials.html @@ -0,0 +1,31 @@ +OwnedCredentials in epicbox::broker::stomp::connection - Rust

Struct epicbox::broker::stomp::connection::OwnedCredentials[][src]

pub struct OwnedCredentials {
+    pub login: String,
+    pub passcode: String,
+}

Fields

login: Stringpasscode: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/frame/enum.Command.html b/doc/epicbox/broker/stomp/frame/enum.Command.html new file mode 100644 index 0000000..e7115ba --- /dev/null +++ b/doc/epicbox/broker/stomp/frame/enum.Command.html @@ -0,0 +1,47 @@ +Command in epicbox::broker::stomp::frame - Rust

Enum epicbox::broker::stomp::frame::Command[][src]

pub enum Command {
+
Show 15 variants Send, + Subscribe, + Unsubscribe, + Begin, + Commit, + Abort, + Ack, + Nack, + Disconnect, + Connect, + Stomp, + Connected, + Message, + Receipt, + Error, +
}

Variants

Send
Subscribe
Unsubscribe
Begin
Commit
Abort
Ack
Nack
Disconnect
Connect
Stomp
Connected
Message
Receipt
Error

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Converts the given value to a String. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/frame/enum.Transmission.html b/doc/epicbox/broker/stomp/frame/enum.Transmission.html new file mode 100644 index 0000000..5c326ca --- /dev/null +++ b/doc/epicbox/broker/stomp/frame/enum.Transmission.html @@ -0,0 +1,20 @@ +Transmission in epicbox::broker::stomp::frame - Rust

Enum epicbox::broker::stomp::frame::Transmission[][src]

pub enum Transmission {
+    HeartBeat,
+    CompleteFrame(Frame),
+}

Variants

HeartBeat
CompleteFrame(Frame)

Tuple Fields of CompleteFrame

0: Frame

Implementations

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/frame/index.html b/doc/epicbox/broker/stomp/frame/index.html new file mode 100644 index 0000000..e25dc9a --- /dev/null +++ b/doc/epicbox/broker/stomp/frame/index.html @@ -0,0 +1,6 @@ +epicbox::broker::stomp::frame - Rust

Module epicbox::broker::stomp::frame[][src]

Structs

+

Enums

+

Traits

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/frame/sidebar-items.js b/doc/epicbox/broker/stomp/frame/sidebar-items.js new file mode 100644 index 0000000..5fe2d75 --- /dev/null +++ b/doc/epicbox/broker/stomp/frame/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"enum":[["Command",""],["Transmission",""]],"struct":[["Frame",""]],"trait":[["ToFrameBody",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/frame/struct.Frame.html b/doc/epicbox/broker/stomp/frame/struct.Frame.html new file mode 100644 index 0000000..4a96966 --- /dev/null +++ b/doc/epicbox/broker/stomp/frame/struct.Frame.html @@ -0,0 +1,35 @@ +Frame in epicbox::broker::stomp::frame - Rust

Struct epicbox::broker::stomp::frame::Frame[][src]

pub struct Frame {
+    pub command: Command,
+    pub headers: HeaderList,
+    pub body: Vec<u8>,
+}

Fields

command: Commandheaders: HeaderListbody: Vec<u8>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Converts the given value to a String. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/frame/trait.ToFrameBody.html b/doc/epicbox/broker/stomp/frame/trait.ToFrameBody.html new file mode 100644 index 0000000..1b78f25 --- /dev/null +++ b/doc/epicbox/broker/stomp/frame/trait.ToFrameBody.html @@ -0,0 +1,5 @@ +ToFrameBody in epicbox::broker::stomp::frame - Rust

Trait epicbox::broker::stomp::frame::ToFrameBody[][src]

pub trait ToFrameBody {
+    fn to_frame_body<'a>(&'a self) -> &'a [u8];
+}

Required methods

Implementations on Foreign Types

Implementors

+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.ACCEPT_VERSION.html b/doc/epicbox/broker/stomp/header/constant.ACCEPT_VERSION.html new file mode 100644 index 0000000..2fd2d66 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.ACCEPT_VERSION.html @@ -0,0 +1,3 @@ +ACCEPT_VERSION in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::ACCEPT_VERSION[][src]

pub const ACCEPT_VERSION: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.ACK.html b/doc/epicbox/broker/stomp/header/constant.ACK.html new file mode 100644 index 0000000..32aba04 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.ACK.html @@ -0,0 +1,3 @@ +ACK in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::ACK[][src]

pub const ACK: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.CONTENT_LENGTH.html b/doc/epicbox/broker/stomp/header/constant.CONTENT_LENGTH.html new file mode 100644 index 0000000..d51f0ae --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.CONTENT_LENGTH.html @@ -0,0 +1,3 @@ +CONTENT_LENGTH in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::CONTENT_LENGTH[][src]

pub const CONTENT_LENGTH: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.CONTENT_TYPE.html b/doc/epicbox/broker/stomp/header/constant.CONTENT_TYPE.html new file mode 100644 index 0000000..46ee2ec --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.CONTENT_TYPE.html @@ -0,0 +1,3 @@ +CONTENT_TYPE in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::CONTENT_TYPE[][src]

pub const CONTENT_TYPE: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.DESTINATION.html b/doc/epicbox/broker/stomp/header/constant.DESTINATION.html new file mode 100644 index 0000000..8967ea7 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.DESTINATION.html @@ -0,0 +1,3 @@ +DESTINATION in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::DESTINATION[][src]

pub const DESTINATION: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.HEART_BEAT.html b/doc/epicbox/broker/stomp/header/constant.HEART_BEAT.html new file mode 100644 index 0000000..4c68b51 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.HEART_BEAT.html @@ -0,0 +1,3 @@ +HEART_BEAT in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::HEART_BEAT[][src]

pub const HEART_BEAT: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.HOST.html b/doc/epicbox/broker/stomp/header/constant.HOST.html new file mode 100644 index 0000000..54eb7a8 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.HOST.html @@ -0,0 +1,3 @@ +HOST in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::HOST[][src]

pub const HOST: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.ID.html b/doc/epicbox/broker/stomp/header/constant.ID.html new file mode 100644 index 0000000..be3c478 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.ID.html @@ -0,0 +1,3 @@ +ID in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::ID[][src]

pub const ID: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.LOGIN.html b/doc/epicbox/broker/stomp/header/constant.LOGIN.html new file mode 100644 index 0000000..96cd25b --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.LOGIN.html @@ -0,0 +1,3 @@ +LOGIN in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::LOGIN[][src]

pub const LOGIN: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.MESSAGE_ID.html b/doc/epicbox/broker/stomp/header/constant.MESSAGE_ID.html new file mode 100644 index 0000000..6cbcf5e --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.MESSAGE_ID.html @@ -0,0 +1,3 @@ +MESSAGE_ID in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::MESSAGE_ID[][src]

pub const MESSAGE_ID: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.PASSCODE.html b/doc/epicbox/broker/stomp/header/constant.PASSCODE.html new file mode 100644 index 0000000..a301fa4 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.PASSCODE.html @@ -0,0 +1,3 @@ +PASSCODE in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::PASSCODE[][src]

pub const PASSCODE: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.RECEIPT.html b/doc/epicbox/broker/stomp/header/constant.RECEIPT.html new file mode 100644 index 0000000..cc1d695 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.RECEIPT.html @@ -0,0 +1,3 @@ +RECEIPT in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::RECEIPT[][src]

pub const RECEIPT: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.RECEIPT_ID.html b/doc/epicbox/broker/stomp/header/constant.RECEIPT_ID.html new file mode 100644 index 0000000..74c8132 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.RECEIPT_ID.html @@ -0,0 +1,3 @@ +RECEIPT_ID in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::RECEIPT_ID[][src]

pub const RECEIPT_ID: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.SERVER.html b/doc/epicbox/broker/stomp/header/constant.SERVER.html new file mode 100644 index 0000000..75f11cf --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.SERVER.html @@ -0,0 +1,3 @@ +SERVER in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::SERVER[][src]

pub const SERVER: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.SESSION.html b/doc/epicbox/broker/stomp/header/constant.SESSION.html new file mode 100644 index 0000000..5299568 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.SESSION.html @@ -0,0 +1,3 @@ +SESSION in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::SESSION[][src]

pub const SESSION: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.SUBSCRIPTION.html b/doc/epicbox/broker/stomp/header/constant.SUBSCRIPTION.html new file mode 100644 index 0000000..571f82a --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.SUBSCRIPTION.html @@ -0,0 +1,3 @@ +SUBSCRIPTION in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::SUBSCRIPTION[][src]

pub const SUBSCRIPTION: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.TRANSACTION.html b/doc/epicbox/broker/stomp/header/constant.TRANSACTION.html new file mode 100644 index 0000000..ed36c27 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.TRANSACTION.html @@ -0,0 +1,3 @@ +TRANSACTION in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::TRANSACTION[][src]

pub const TRANSACTION: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/constant.VERSION.html b/doc/epicbox/broker/stomp/header/constant.VERSION.html new file mode 100644 index 0000000..315c493 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/constant.VERSION.html @@ -0,0 +1,3 @@ +VERSION in epicbox::broker::stomp::header - Rust

Constant epicbox::broker::stomp::header::VERSION[][src]

pub const VERSION: HeaderName;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/enum.Repr.html b/doc/epicbox/broker/stomp/header/enum.Repr.html new file mode 100644 index 0000000..636eebd --- /dev/null +++ b/doc/epicbox/broker/stomp/header/enum.Repr.html @@ -0,0 +1,38 @@ +Repr in epicbox::broker::stomp::header - Rust

Enum epicbox::broker::stomp::header::Repr[][src]

enum Repr<T> {
+    Standard(StandardHeader),
+    Custom(T),
+}

Variants

Standard(StandardHeader)

Tuple Fields of Standard

Custom(T)

Tuple Fields of Custom

0: T

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Compare self to key and return true if they are equal.

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/enum.StandardHeader.html b/doc/epicbox/broker/stomp/header/enum.StandardHeader.html new file mode 100644 index 0000000..84387dc --- /dev/null +++ b/doc/epicbox/broker/stomp/header/enum.StandardHeader.html @@ -0,0 +1,56 @@ +StandardHeader in epicbox::broker::stomp::header - Rust

Enum epicbox::broker::stomp::header::StandardHeader[][src]

enum StandardHeader {
+
Show 18 variants ContentType, + AcceptVerion, + Ack, + ContentLength, + Destination, + HeartBeat, + Host, + Id, + Login, + MessageId, + Passcode, + Receipt, + ReceiptID, + Server, + Session, + Subscription, + Transaction, + Version, +
}

Variants

ContentType
AcceptVerion
Ack
ContentLength
Destination
HeartBeat
Host
Id
Login
MessageId
Passcode
Receipt
ReceiptID
Server
Session
Subscription
Transaction
Version

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

The associated error which can be returned from parsing.

+

Parses a string s to return a value of this type. Read more

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Compare self to key and return true if they are equal.

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/enum.StompVersion.html b/doc/epicbox/broker/stomp/header/enum.StompVersion.html new file mode 100644 index 0000000..09e72aa --- /dev/null +++ b/doc/epicbox/broker/stomp/header/enum.StompVersion.html @@ -0,0 +1,34 @@ +StompVersion in epicbox::broker::stomp::header - Rust

Enum epicbox::broker::stomp::header::StompVersion[][src]

pub enum StompVersion {
+    Stomp_v1_0,
+    Stomp_v1_1,
+    Stomp_v1_2,
+}

Variants

Stomp_v1_0
Stomp_v1_1
Stomp_v1_2

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

The associated error which can be returned from parsing.

+

Parses a string s to return a value of this type. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/index.html b/doc/epicbox/broker/stomp/header/index.html new file mode 100644 index 0000000..4d059a5 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/index.html @@ -0,0 +1,7 @@ +epicbox::broker::stomp::header - Rust

Module epicbox::broker::stomp::header[][src]

Macros

+

Structs

+

Enums

+

Constants

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/macro.standard_headers!.html b/doc/epicbox/broker/stomp/header/macro.standard_headers!.html new file mode 100644 index 0000000..09e887e --- /dev/null +++ b/doc/epicbox/broker/stomp/header/macro.standard_headers!.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to macro.standard_headers.html...

+ + + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/macro.standard_headers.html b/doc/epicbox/broker/stomp/header/macro.standard_headers.html new file mode 100644 index 0000000..5e5bc6f --- /dev/null +++ b/doc/epicbox/broker/stomp/header/macro.standard_headers.html @@ -0,0 +1,6 @@ +standard_headers in epicbox::broker::stomp::header - Rust

Macro epicbox::broker::stomp::header::standard_headers[][src]

macro_rules! standard_headers {
+    ($($(#[$docs : meta]) * ($konst : ident, $upcase : ident, $name : expr) ;) +) => { ... };
+}
+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/sidebar-items.js b/doc/epicbox/broker/stomp/header/sidebar-items.js new file mode 100644 index 0000000..a9b1023 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"constant":[["ACCEPT_VERSION",""],["ACK",""],["CONTENT_LENGTH",""],["CONTENT_TYPE",""],["DESTINATION",""],["HEART_BEAT",""],["HOST",""],["ID",""],["LOGIN",""],["MESSAGE_ID",""],["PASSCODE",""],["RECEIPT",""],["RECEIPT_ID",""],["SERVER",""],["SESSION",""],["SUBSCRIPTION",""],["TRANSACTION",""],["VERSION",""]],"enum":[["Repr",""],["StandardHeader",""],["StompVersion",""]],"macro":[["standard_headers",""]],"struct":[["Custom",""],["Header",""],["HeaderList",""],["HeaderName",""],["SuppressedHeader",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/struct.Custom.html b/doc/epicbox/broker/stomp/header/struct.Custom.html new file mode 100644 index 0000000..1a72b7f --- /dev/null +++ b/doc/epicbox/broker/stomp/header/struct.Custom.html @@ -0,0 +1,35 @@ +Custom in epicbox::broker::stomp::header - Rust

Struct epicbox::broker::stomp::header::Custom[][src]

struct Custom(String);

Tuple Fields

0: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Compare self to key and return true if they are equal.

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/struct.Header.html b/doc/epicbox/broker/stomp/header/struct.Header.html new file mode 100644 index 0000000..ccaa0b8 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/struct.Header.html @@ -0,0 +1,29 @@ +Header in epicbox::broker::stomp::header - Rust

Struct epicbox::broker::stomp::header::Header[][src]

pub struct Header(pub HeaderName, pub String);

Tuple Fields

0: HeaderName1: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/struct.HeaderList.html b/doc/epicbox/broker/stomp/header/struct.HeaderList.html new file mode 100644 index 0000000..daa8d75 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/struct.HeaderList.html @@ -0,0 +1,31 @@ +HeaderList in epicbox::broker::stomp::header - Rust

Struct epicbox::broker::stomp::header::HeaderList[][src]

pub struct HeaderList {
+    pub headers: Vec<Header>,
+}

Fields

headers: Vec<Header>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/struct.HeaderName.html b/doc/epicbox/broker/stomp/header/struct.HeaderName.html new file mode 100644 index 0000000..1d9f436 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/struct.HeaderName.html @@ -0,0 +1,37 @@ +HeaderName in epicbox::broker::stomp::header - Rust

Struct epicbox::broker::stomp::header::HeaderName[][src]

pub struct HeaderName {
+    inner: Repr<Custom>,
+}

Fields

inner: Repr<Custom>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Compare self to key and return true if they are equal.

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/header/struct.SuppressedHeader.html b/doc/epicbox/broker/stomp/header/struct.SuppressedHeader.html new file mode 100644 index 0000000..26858b6 --- /dev/null +++ b/doc/epicbox/broker/stomp/header/struct.SuppressedHeader.html @@ -0,0 +1,16 @@ +SuppressedHeader in epicbox::broker::stomp::header - Rust

Struct epicbox::broker::stomp::header::SuppressedHeader[][src]

pub struct SuppressedHeader<'a>(pub &'a str);

Tuple Fields

0: &'a str

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/index.html b/doc/epicbox/broker/stomp/index.html new file mode 100644 index 0000000..1a2d512 --- /dev/null +++ b/doc/epicbox/broker/stomp/index.html @@ -0,0 +1,4 @@ +epicbox::broker::stomp - Rust

Module epicbox::broker::stomp[][src]

Modules

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/message_builder/index.html b/doc/epicbox/broker/stomp/message_builder/index.html new file mode 100644 index 0000000..c477d9b --- /dev/null +++ b/doc/epicbox/broker/stomp/message_builder/index.html @@ -0,0 +1,4 @@ +epicbox::broker::stomp::message_builder - Rust

Module epicbox::broker::stomp::message_builder[][src]

Structs

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/message_builder/sidebar-items.js b/doc/epicbox/broker/stomp/message_builder/sidebar-items.js new file mode 100644 index 0000000..62faf12 --- /dev/null +++ b/doc/epicbox/broker/stomp/message_builder/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["MessageBuilder",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/message_builder/struct.MessageBuilder.html b/doc/epicbox/broker/stomp/message_builder/struct.MessageBuilder.html new file mode 100644 index 0000000..c541732 --- /dev/null +++ b/doc/epicbox/broker/stomp/message_builder/struct.MessageBuilder.html @@ -0,0 +1,20 @@ +MessageBuilder in epicbox::broker::stomp::message_builder - Rust

Struct epicbox::broker::stomp::message_builder::MessageBuilder[][src]

pub struct MessageBuilder<'a, T: 'static> {
+    pub session: &'a mut Session<T>,
+    pub frame: Frame,
+    pub receipt_request: Option<ReceiptRequest>,
+}

Fields

session: &'a mut Session<T>frame: Framereceipt_request: Option<ReceiptRequest>

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/option_setter/index.html b/doc/epicbox/broker/stomp/option_setter/index.html new file mode 100644 index 0000000..fb1452c --- /dev/null +++ b/doc/epicbox/broker/stomp/option_setter/index.html @@ -0,0 +1,4 @@ +epicbox::broker::stomp::option_setter - Rust

Module epicbox::broker::stomp::option_setter[][src]

Traits

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/option_setter/sidebar-items.js b/doc/epicbox/broker/stomp/option_setter/sidebar-items.js new file mode 100644 index 0000000..ee1ada7 --- /dev/null +++ b/doc/epicbox/broker/stomp/option_setter/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"trait":[["OptionSetter",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/option_setter/trait.OptionSetter.html b/doc/epicbox/broker/stomp/option_setter/trait.OptionSetter.html new file mode 100644 index 0000000..3450470 --- /dev/null +++ b/doc/epicbox/broker/stomp/option_setter/trait.OptionSetter.html @@ -0,0 +1,5 @@ +OptionSetter in epicbox::broker::stomp::option_setter - Rust

Trait epicbox::broker::stomp::option_setter::OptionSetter[][src]

pub trait OptionSetter<T> {
+    fn set_option(self, _: T) -> T;
+}

Required methods

Implementors

+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/constant.GRACE_PERIOD_MULTIPLIER.html b/doc/epicbox/broker/stomp/session/constant.GRACE_PERIOD_MULTIPLIER.html new file mode 100644 index 0000000..2b072bf --- /dev/null +++ b/doc/epicbox/broker/stomp/session/constant.GRACE_PERIOD_MULTIPLIER.html @@ -0,0 +1,3 @@ +GRACE_PERIOD_MULTIPLIER in epicbox::broker::stomp::session - Rust

Constant epicbox::broker::stomp::session::GRACE_PERIOD_MULTIPLIER[][src]

const GRACE_PERIOD_MULTIPLIER: f32 = 2.0;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/enum.DisconnectionReason.html b/doc/epicbox/broker/stomp/session/enum.DisconnectionReason.html new file mode 100644 index 0000000..c6e273e --- /dev/null +++ b/doc/epicbox/broker/stomp/session/enum.DisconnectionReason.html @@ -0,0 +1,24 @@ +DisconnectionReason in epicbox::broker::stomp::session - Rust

Enum epicbox::broker::stomp::session::DisconnectionReason[][src]

pub enum DisconnectionReason {
+    RecvFailed(IoError),
+    ConnectFailed(IoError),
+    SendFailed(IoError),
+    ClosedByOtherSide,
+    HeartBeatTimeout,
+    Requested,
+}

Variants

RecvFailed(IoError)

Tuple Fields of RecvFailed

ConnectFailed(IoError)

Tuple Fields of ConnectFailed

SendFailed(IoError)

Tuple Fields of SendFailed

ClosedByOtherSide
HeartBeatTimeout
Requested

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/enum.SessionEvent.html b/doc/epicbox/broker/stomp/session/enum.SessionEvent.html new file mode 100644 index 0000000..f6637b6 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/enum.SessionEvent.html @@ -0,0 +1,33 @@ +SessionEvent in epicbox::broker::stomp::session - Rust

Enum epicbox::broker::stomp::session::SessionEvent[][src]

pub enum SessionEvent {
+    Connected,
+    Error(Frame),
+    Receipt {
+        id: String,
+        original: Frame,
+        receipt: Frame,
+    },
+    Message {
+        destination: String,
+        ack_mode: AckMode,
+        frame: Frame,
+    },
+    Subscriptionless(Frame),
+    Unknown(Frame),
+    Disconnected(DisconnectionReason),
+}

Variants

Connected
Error(Frame)

Tuple Fields of Error

0: Frame
Receipt

Fields of Receipt

id: Stringoriginal: Framereceipt: Frame
Message

Fields of Message

destination: Stringack_mode: AckModeframe: Frame
Subscriptionless(Frame)

Tuple Fields of Subscriptionless

0: Frame
Unknown(Frame)

Tuple Fields of Unknown

0: Frame
Disconnected(DisconnectionReason)

Tuple Fields of Disconnected

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/enum.StreamState.html b/doc/epicbox/broker/stomp/session/enum.StreamState.html new file mode 100644 index 0000000..2fc9755 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/enum.StreamState.html @@ -0,0 +1,20 @@ +StreamState in epicbox::broker::stomp::session - Rust

Enum epicbox::broker::stomp::session::StreamState[][src]

pub(crate) enum StreamState<T> {
+    Connected(Framed<T, Codec>),
+    Connecting(Box<dyn Future<Item = T, Error = IoError> + Send>),
+    Failed,
+}

Variants

Connected(Framed<T, Codec>)

Tuple Fields of Connected

0: Framed<T, Codec>
Connecting(Box<dyn Future<Item = T, Error = IoError> + Send>)

Tuple Fields of Connecting

0: Box<dyn Future<Item = T, Error = IoError> + Send>
Failed

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/fn.poll_heartbeat.html b/doc/epicbox/broker/stomp/session/fn.poll_heartbeat.html new file mode 100644 index 0000000..8c1fd77 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/fn.poll_heartbeat.html @@ -0,0 +1,3 @@ +poll_heartbeat in epicbox::broker::stomp::session - Rust

Function epicbox::broker::stomp::session::poll_heartbeat[][src]

fn poll_heartbeat(heartbeat: Option<&mut HeartBeatDelay>) -> Poll<(), IoError>
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/index.html b/doc/epicbox/broker/stomp/session/index.html new file mode 100644 index 0000000..bd18247 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/index.html @@ -0,0 +1,8 @@ +epicbox::broker::stomp::session - Rust

Module epicbox::broker::stomp::session[][src]

Structs

+

Enums

+

Constants

+

Functions

+

Type Definitions

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/sidebar-items.js b/doc/epicbox/broker/stomp/session/sidebar-items.js new file mode 100644 index 0000000..110cd53 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"constant":[["GRACE_PERIOD_MULTIPLIER",""]],"enum":[["DisconnectionReason",""],["SessionEvent",""],["StreamState",""]],"fn":[["poll_heartbeat",""]],"struct":[["GenerateReceipt",""],["HeartBeatDelay",""],["OutstandingReceipt",""],["ReceiptRequest",""],["Session",""],["SessionState",""]],"type":[["ConnectFuture",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/struct.GenerateReceipt.html b/doc/epicbox/broker/stomp/session/struct.GenerateReceipt.html new file mode 100644 index 0000000..8870d30 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/struct.GenerateReceipt.html @@ -0,0 +1,16 @@ +GenerateReceipt in epicbox::broker::stomp::session - Rust

Struct epicbox::broker::stomp::session::GenerateReceipt[][src]

pub struct GenerateReceipt;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/struct.HeartBeatDelay.html b/doc/epicbox/broker/stomp/session/struct.HeartBeatDelay.html new file mode 100644 index 0000000..fec3e5f --- /dev/null +++ b/doc/epicbox/broker/stomp/session/struct.HeartBeatDelay.html @@ -0,0 +1,57 @@ +HeartBeatDelay in epicbox::broker::stomp::session - Rust

Struct epicbox::broker::stomp::session::HeartBeatDelay[][src]

struct HeartBeatDelay {
+    interval: u32,
+    delay: Delay,
+}

Fields

interval: u32delay: Delay

Implementations

Trait Implementations

The type of value that this future will resolved with if it is +successful. Read more

+

The type of error that this future will resolve with if it fails in a +normal fashion. Read more

+

Query this future to see if its value has become available, registering +interest if it is not. Read more

+

Block the current thread until this future is resolved. Read more

+

Map this future’s result to a different type, returning a new future of +the resulting type. Read more

+

Map this future’s error to a different error, returning a new future. Read more

+

Map this future’s error to any error implementing From for +this future’s Error, returning a new future. Read more

+

Chain on a computation for when a future finished, passing the result of +the future to the provided closure f. Read more

+

Execute another future after this one has resolved successfully. Read more

+

Execute another future if this one resolves with an error. Read more

+

Waits for either one of two futures to complete. Read more

+

Waits for either one of two differently-typed futures to complete. Read more

+

Joins the result of two futures, waiting for them both to complete. Read more

+

Same as join, but with more futures.

+

Same as join, but with more futures.

+

Same as join, but with more futures.

+

Convert this future into a single element stream. Read more

+

Flatten the execution of this future when the successful result of this +future is itself another future. Read more

+

Flatten the execution of this future when the successful result of this +future is a stream. Read more

+

Fuse a future such that poll will never again be called once it has +completed. Read more

+

Do something with the item of a future, passing it on. Read more

+

Catches unwinding panics while polling the future. Read more

+

Create a cloneable handle to this future where all handles will resolve +to the same result. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Creates a new future which allows self until timeout. Read more

+

Performs the conversion.

+

The future that this type can be converted into.

+

The item that the future may resolve with.

+

The error that the future may resolve with.

+

Consumes this object and produces a future.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/struct.OutstandingReceipt.html b/doc/epicbox/broker/stomp/session/struct.OutstandingReceipt.html new file mode 100644 index 0000000..8079e12 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/struct.OutstandingReceipt.html @@ -0,0 +1,18 @@ +OutstandingReceipt in epicbox::broker::stomp::session - Rust

Struct epicbox::broker::stomp::session::OutstandingReceipt[][src]

pub struct OutstandingReceipt {
+    pub original_frame: Frame,
+}

Fields

original_frame: Frame

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/struct.ReceiptRequest.html b/doc/epicbox/broker/stomp/session/struct.ReceiptRequest.html new file mode 100644 index 0000000..a1db612 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/struct.ReceiptRequest.html @@ -0,0 +1,18 @@ +ReceiptRequest in epicbox::broker::stomp::session - Rust

Struct epicbox::broker::stomp::session::ReceiptRequest[][src]

pub struct ReceiptRequest {
+    pub id: String,
+}

Fields

id: String

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/struct.Session.html b/doc/epicbox/broker/stomp/session/struct.Session.html new file mode 100644 index 0000000..981b964 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/struct.Session.html @@ -0,0 +1,84 @@ +Session in epicbox::broker::stomp::session - Rust

Struct epicbox::broker::stomp::session::Session[][src]

pub struct Session<T> {
+    config: SessionConfig,
+    pub(crate) state: SessionState,
+    stream: StreamState<T>,
+    events: VecDeque<SessionEvent>,
+}

Fields

config: SessionConfigstate: SessionStatestream: StreamState<T>events: VecDeque<SessionEvent>

Implementations

Trait Implementations

The type of item this stream will yield on success.

+

The type of error this stream may generate.

+

Attempt to pull out the next value of this stream, returning None if +the stream is finished. Read more

+

Creates an iterator which blocks the current thread until each item of +this stream is resolved. Read more

+

Converts this stream into a Future. Read more

+

Converts a stream of type T to a stream of type U. Read more

+

Converts a stream of error type T to a stream of error type U. Read more

+

Filters the values produced by this stream according to the provided +predicate. Read more

+

Filters the values produced by this stream while simultaneously mapping +them to a different type. Read more

+

Chain on a computation for when a value is ready, passing the resulting +item to the provided closure f. Read more

+

Chain on a computation for when a value is ready, passing the successful +results to the provided closure f. Read more

+

Chain on a computation for when an error happens, passing the +erroneous result to the provided closure f. Read more

+

Collect all of the values of this stream into a vector, returning a +future representing the result of that computation. Read more

+

Concatenate all results of a stream into a single extendable +destination, returning a future representing the end result. Read more

+
👎 Deprecated since 0.1.14:

please use Stream::concat2 instead

+

Concatenate all results of a stream into a single extendable +destination, returning a future representing the end result. Read more

+

Execute an accumulating computation over a stream, collecting all the +values into one final result. Read more

+

Flattens a stream of streams into just one continuous stream. Read more

+

Skip elements on this stream while the predicate provided resolves to +true. Read more

+

Take elements from this stream while the predicate provided resolves to +true. Read more

+

Runs this stream to completion, executing the provided closure for each +element on the stream. Read more

+

Map this stream’s error to any error implementing From for +this stream’s Error, returning a new stream. Read more

+

Creates a new stream of at most amt items of the underlying stream. Read more

+

Creates a new stream which skips amt items of the underlying stream. Read more

+

Fuse a stream such that poll will never again be called once it has +finished. Read more

+

Borrows a stream, rather than consuming it. Read more

+

Catches unwinding panics while polling the stream. Read more

+

An adaptor for creating a buffered list of pending futures. Read more

+

An adaptor for creating a buffered list of pending futures (unordered). Read more

+
👎 Deprecated:

functionality provided by select now

+

An adapter for merging the output of two streams. Read more

+

An adapter for zipping two streams together. Read more

+

Adapter for chaining two stream. Read more

+

Creates a new stream which exposes a peek method. Read more

+

An adaptor for chunking up items of the stream inside a vector. Read more

+

Creates a stream that selects the next element from either this stream +or the provided one, whichever is ready first. Read more

+

A future that completes after the given stream has been fully processed +into the sink, including flushing. Read more

+

Splits this Stream + Sink object into separate Stream and Sink +objects. Read more

+

Do something with each item of this stream, afterwards passing it on. Read more

+

Do something with the error of this stream, afterwards passing it on. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

Throttle down the stream by enforcing a fixed delay between items. Read more

+

Creates a new stream which gives the current iteration count as well +as the next value. Read more

+

Creates a new stream which allows self until timeout. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/struct.SessionState.html b/doc/epicbox/broker/stomp/session/struct.SessionState.html new file mode 100644 index 0000000..f061b64 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/struct.SessionState.html @@ -0,0 +1,24 @@ +SessionState in epicbox::broker::stomp::session - Rust

Struct epicbox::broker::stomp::session::SessionState[][src]

pub struct SessionState {
+    next_transaction_id: u32,
+    next_subscription_id: u32,
+    next_receipt_id: u32,
+    rx_heartbeat: Option<HeartBeatDelay>,
+    tx_heartbeat: Option<HeartBeatDelay>,
+    pub subscriptions: HashMap<String, Subscription>,
+    pub outstanding_receipts: HashMap<String, OutstandingReceipt>,
+}

Fields

next_transaction_id: u32next_subscription_id: u32next_receipt_id: u32rx_heartbeat: Option<HeartBeatDelay>tx_heartbeat: Option<HeartBeatDelay>subscriptions: HashMap<String, Subscription>outstanding_receipts: HashMap<String, OutstandingReceipt>

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session/type.ConnectFuture.html b/doc/epicbox/broker/stomp/session/type.ConnectFuture.html new file mode 100644 index 0000000..89ccf77 --- /dev/null +++ b/doc/epicbox/broker/stomp/session/type.ConnectFuture.html @@ -0,0 +1,3 @@ +ConnectFuture in epicbox::broker::stomp::session - Rust

Type Definition epicbox::broker::stomp::session::ConnectFuture[][src]

pub type ConnectFuture<T> = Box<dyn Future<Item = T, Error = IoError> + Send>;
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session_builder/index.html b/doc/epicbox/broker/stomp/session_builder/index.html new file mode 100644 index 0000000..3827817 --- /dev/null +++ b/doc/epicbox/broker/stomp/session_builder/index.html @@ -0,0 +1,4 @@ +epicbox::broker::stomp::session_builder - Rust

Module epicbox::broker::stomp::session_builder[][src]

Structs

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session_builder/sidebar-items.js b/doc/epicbox/broker/stomp/session_builder/sidebar-items.js new file mode 100644 index 0000000..9a7918c --- /dev/null +++ b/doc/epicbox/broker/stomp/session_builder/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["SessionBuilder",""],["SessionConfig",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session_builder/struct.SessionBuilder.html b/doc/epicbox/broker/stomp/session_builder/struct.SessionBuilder.html new file mode 100644 index 0000000..7263670 --- /dev/null +++ b/doc/epicbox/broker/stomp/session_builder/struct.SessionBuilder.html @@ -0,0 +1,18 @@ +SessionBuilder in epicbox::broker::stomp::session_builder - Rust

Struct epicbox::broker::stomp::session_builder::SessionBuilder[][src]

pub struct SessionBuilder {
+    pub config: SessionConfig,
+}

Fields

config: SessionConfig

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/session_builder/struct.SessionConfig.html b/doc/epicbox/broker/stomp/session_builder/struct.SessionConfig.html new file mode 100644 index 0000000..06c2f4d --- /dev/null +++ b/doc/epicbox/broker/stomp/session_builder/struct.SessionConfig.html @@ -0,0 +1,32 @@ +SessionConfig in epicbox::broker::stomp::session_builder - Rust

Struct epicbox::broker::stomp::session_builder::SessionConfig[][src]

pub struct SessionConfig {
+    pub credentials: Option<OwnedCredentials>,
+    pub heartbeat: HeartBeat,
+    pub headers: HeaderList,
+}

Fields

credentials: Option<OwnedCredentials>heartbeat: HeartBeatheaders: HeaderList

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/sidebar-items.js b/doc/epicbox/broker/stomp/sidebar-items.js new file mode 100644 index 0000000..ffac93b --- /dev/null +++ b/doc/epicbox/broker/stomp/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"mod":[["codec",""],["connection",""],["frame",""],["header",""],["message_builder",""],["option_setter",""],["session",""],["session_builder",""],["subscription",""],["subscription_builder",""],["transaction",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/subscription/enum.AckMode.html b/doc/epicbox/broker/stomp/subscription/enum.AckMode.html new file mode 100644 index 0000000..f3a5261 --- /dev/null +++ b/doc/epicbox/broker/stomp/subscription/enum.AckMode.html @@ -0,0 +1,33 @@ +AckMode in epicbox::broker::stomp::subscription - Rust

Enum epicbox::broker::stomp::subscription::AckMode[][src]

pub enum AckMode {
+    Auto,
+    Client,
+    ClientIndividual,
+}

Variants

Auto
Client
ClientIndividual

Implementations

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/subscription/enum.AckOrNack.html b/doc/epicbox/broker/stomp/subscription/enum.AckOrNack.html new file mode 100644 index 0000000..61f8969 --- /dev/null +++ b/doc/epicbox/broker/stomp/subscription/enum.AckOrNack.html @@ -0,0 +1,31 @@ +AckOrNack in epicbox::broker::stomp::subscription - Rust

Enum epicbox::broker::stomp::subscription::AckOrNack[][src]

pub enum AckOrNack {
+    Ack,
+    Nack,
+}

Variants

Ack
Nack

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Clone this value, and then immediately put it into a Box +behind a trait object of this trait. Read more

+

Returns the address of self. Read more

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/subscription/index.html b/doc/epicbox/broker/stomp/subscription/index.html new file mode 100644 index 0000000..b18ca78 --- /dev/null +++ b/doc/epicbox/broker/stomp/subscription/index.html @@ -0,0 +1,5 @@ +epicbox::broker::stomp::subscription - Rust

Module epicbox::broker::stomp::subscription[][src]

Structs

+

Enums

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/subscription/sidebar-items.js b/doc/epicbox/broker/stomp/subscription/sidebar-items.js new file mode 100644 index 0000000..253d606 --- /dev/null +++ b/doc/epicbox/broker/stomp/subscription/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"enum":[["AckMode",""],["AckOrNack",""]],"struct":[["Subscription",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/subscription/struct.Subscription.html b/doc/epicbox/broker/stomp/subscription/struct.Subscription.html new file mode 100644 index 0000000..2c470bf --- /dev/null +++ b/doc/epicbox/broker/stomp/subscription/struct.Subscription.html @@ -0,0 +1,21 @@ +Subscription in epicbox::broker::stomp::subscription - Rust

Struct epicbox::broker::stomp::subscription::Subscription[][src]

pub struct Subscription {
+    pub id: String,
+    pub destination: String,
+    pub ack_mode: AckMode,
+    pub headers: HeaderList,
+}

Fields

id: Stringdestination: Stringack_mode: AckModeheaders: HeaderList

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/subscription_builder/index.html b/doc/epicbox/broker/stomp/subscription_builder/index.html new file mode 100644 index 0000000..bc8bcf8 --- /dev/null +++ b/doc/epicbox/broker/stomp/subscription_builder/index.html @@ -0,0 +1,4 @@ +epicbox::broker::stomp::subscription_builder - Rust

Module epicbox::broker::stomp::subscription_builder[][src]

Structs

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/subscription_builder/sidebar-items.js b/doc/epicbox/broker/stomp/subscription_builder/sidebar-items.js new file mode 100644 index 0000000..548d5d4 --- /dev/null +++ b/doc/epicbox/broker/stomp/subscription_builder/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["SubscriptionBuilder",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/subscription_builder/struct.SubscriptionBuilder.html b/doc/epicbox/broker/stomp/subscription_builder/struct.SubscriptionBuilder.html new file mode 100644 index 0000000..837f614 --- /dev/null +++ b/doc/epicbox/broker/stomp/subscription_builder/struct.SubscriptionBuilder.html @@ -0,0 +1,22 @@ +SubscriptionBuilder in epicbox::broker::stomp::subscription_builder - Rust

Struct epicbox::broker::stomp::subscription_builder::SubscriptionBuilder[][src]

pub struct SubscriptionBuilder<'a, T: 'static> {
+    pub session: &'a mut Session<T>,
+    pub destination: String,
+    pub ack_mode: AckMode,
+    pub headers: HeaderList,
+    pub receipt_request: Option<ReceiptRequest>,
+}

Fields

session: &'a mut Session<T>destination: Stringack_mode: AckModeheaders: HeaderListreceipt_request: Option<ReceiptRequest>

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/transaction/index.html b/doc/epicbox/broker/stomp/transaction/index.html new file mode 100644 index 0000000..6b82180 --- /dev/null +++ b/doc/epicbox/broker/stomp/transaction/index.html @@ -0,0 +1,4 @@ +epicbox::broker::stomp::transaction - Rust

Module epicbox::broker::stomp::transaction[][src]

Structs

+
+ + \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/transaction/sidebar-items.js b/doc/epicbox/broker/stomp/transaction/sidebar-items.js new file mode 100644 index 0000000..674ee3e --- /dev/null +++ b/doc/epicbox/broker/stomp/transaction/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["Transaction",""]]}); \ No newline at end of file diff --git a/doc/epicbox/broker/stomp/transaction/struct.Transaction.html b/doc/epicbox/broker/stomp/transaction/struct.Transaction.html new file mode 100644 index 0000000..d5558d8 --- /dev/null +++ b/doc/epicbox/broker/stomp/transaction/struct.Transaction.html @@ -0,0 +1,19 @@ +Transaction in epicbox::broker::stomp::transaction - Rust

Struct epicbox::broker::stomp::transaction::Transaction[][src]

pub struct Transaction<'tx, T: 'static> {
+    pub id: String,
+    pub session: &'tx mut Session<T>,
+}

Fields

id: Stringsession: &'tx mut Session<T>

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/fn.main.html b/doc/epicbox/fn.main.html new file mode 100644 index 0000000..b68ef27 --- /dev/null +++ b/doc/epicbox/fn.main.html @@ -0,0 +1,3 @@ +main in epicbox - Rust

Function epicbox::main[][src]

pub(crate) fn main()
+ + \ No newline at end of file diff --git a/doc/epicbox/index.html b/doc/epicbox/index.html new file mode 100644 index 0000000..945e573 --- /dev/null +++ b/doc/epicbox/index.html @@ -0,0 +1,6 @@ +epicbox - Rust

Crate epicbox[][src]

Modules

+

Macros

+

Functions

+
+ + \ No newline at end of file diff --git a/doc/epicbox/macro.header_list!.html b/doc/epicbox/macro.header_list!.html new file mode 100644 index 0000000..f114a1c --- /dev/null +++ b/doc/epicbox/macro.header_list!.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to macro.header_list.html...

+ + + \ No newline at end of file diff --git a/doc/epicbox/macro.header_list.html b/doc/epicbox/macro.header_list.html new file mode 100644 index 0000000..a3ed9cd --- /dev/null +++ b/doc/epicbox/macro.header_list.html @@ -0,0 +1,7 @@ +header_list in epicbox - Rust

Macro epicbox::header_list[][src]

macro_rules! header_list {
+    ($($header : expr), *) => { ... };
+    ($($key : expr => $value : expr), *) => { ... };
+}
+
+ + \ No newline at end of file diff --git a/doc/epicbox/server/index.html b/doc/epicbox/server/index.html new file mode 100644 index 0000000..f83637e --- /dev/null +++ b/doc/epicbox/server/index.html @@ -0,0 +1,5 @@ +epicbox::server - Rust

Module epicbox::server[][src]

Structs

+

Statics

+
+ + \ No newline at end of file diff --git a/doc/epicbox/server/sidebar-items.js b/doc/epicbox/server/sidebar-items.js new file mode 100644 index 0000000..3c1e228 --- /dev/null +++ b/doc/epicbox/server/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"static":[["MAX_SUBSCRIPTIONS",""]],"struct":[["AsyncServer",""],["BrokerResponseHandler",""],["Server",""],["SignedPayload",""],["Subscription",""]]}); \ No newline at end of file diff --git a/doc/epicbox/server/static.MAX_SUBSCRIPTIONS.html b/doc/epicbox/server/static.MAX_SUBSCRIPTIONS.html new file mode 100644 index 0000000..e2d2829 --- /dev/null +++ b/doc/epicbox/server/static.MAX_SUBSCRIPTIONS.html @@ -0,0 +1,3 @@ +MAX_SUBSCRIPTIONS in epicbox::server - Rust

Static epicbox::server::MAX_SUBSCRIPTIONS[][src]

static MAX_SUBSCRIPTIONS: usize
+ + \ No newline at end of file diff --git a/doc/epicbox/server/struct.AsyncServer.html b/doc/epicbox/server/struct.AsyncServer.html new file mode 100644 index 0000000..a4e49b6 --- /dev/null +++ b/doc/epicbox/server/struct.AsyncServer.html @@ -0,0 +1,45 @@ +AsyncServer in epicbox::server - Rust

Struct epicbox::server::AsyncServer[][src]

pub struct AsyncServer {
+    id: String,
+    inner: Arc<Mutex<Server>>,
+    nats_sender: UnboundedSender<BrokerRequest>,
+    response_handlers_sender: UnboundedSender<BrokerResponseHandler>,
+    subscriptions: HashMap<String, Subscription>,
+    epicbox_domain: String,
+    epicbox_port: u16,
+    epicbox_protocol_unsecure: bool,
+}

Fields

id: Stringinner: Arc<Mutex<Server>>nats_sender: UnboundedSender<BrokerRequest>response_handlers_sender: UnboundedSender<BrokerResponseHandler>subscriptions: HashMap<String, Subscription>epicbox_domain: Stringepicbox_port: u16epicbox_protocol_unsecure: bool

Implementations

Trait Implementations

Executes the destructor for this type. Read more

+

A method for handling the low-level workings of the request portion of the WebSocket +handshake. Read more

+

Called when the WebSocket handshake is successful and the connection is open for sending +and receiving messages. Read more

+

Called on incoming messages.

+

Called any time this endpoint receives a close control frame. +This may be because the other endpoint is initiating a closing handshake, +or it may be the other endpoint confirming the handshake initiated by this endpoint. Read more

+

Called when an error occurs on the WebSocket.

+

Called when a request to shutdown all connections has been received.

+

A method for handling the low-level workings of the response portion of the WebSocket +handshake. Read more

+

Called when a timeout is triggered. Read more

+

Called when a timeout has been scheduled on the eventloop. Read more

+

A method for handling incoming frames. Read more

+

A method for handling outgoing frames. Read more

+

A method for creating the initial handshake request for WebSocket clients. Read more

+

A method for wrapping a client TcpStream with Ssl Authentication machinery Read more

+

A method for wrapping a server TcpStream with Ssl Authentication machinery Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/server/struct.BrokerResponseHandler.html b/doc/epicbox/server/struct.BrokerResponseHandler.html new file mode 100644 index 0000000..9efa61e --- /dev/null +++ b/doc/epicbox/server/struct.BrokerResponseHandler.html @@ -0,0 +1,19 @@ +BrokerResponseHandler in epicbox::server - Rust

Struct epicbox::server::BrokerResponseHandler[][src]

pub struct BrokerResponseHandler {
+    inner: Arc<Mutex<Server>>,
+    response_receiver: UnboundedReceiver<BrokerResponse>,
+}

Fields

inner: Arc<Mutex<Server>>response_receiver: UnboundedReceiver<BrokerResponse>

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/server/struct.Server.html b/doc/epicbox/server/struct.Server.html new file mode 100644 index 0000000..1ade68a --- /dev/null +++ b/doc/epicbox/server/struct.Server.html @@ -0,0 +1,19 @@ +Server in epicbox::server - Rust

Struct epicbox::server::Server[][src]

pub struct Server {
+    id: String,
+    out: Sender,
+}

Fields

id: Stringout: Sender

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/server/struct.SignedPayload.html b/doc/epicbox/server/struct.SignedPayload.html new file mode 100644 index 0000000..eef0ab8 --- /dev/null +++ b/doc/epicbox/server/struct.SignedPayload.html @@ -0,0 +1,23 @@ +SignedPayload in epicbox::server - Rust

Struct epicbox::server::SignedPayload[][src]

struct SignedPayload {
+    str: String,
+    challenge: String,
+    signature: String,
+}

Fields

str: Stringchallenge: Stringsignature: String

Trait Implementations

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/server/struct.Subscription.html b/doc/epicbox/server/struct.Subscription.html new file mode 100644 index 0000000..62bc25e --- /dev/null +++ b/doc/epicbox/server/struct.Subscription.html @@ -0,0 +1,16 @@ +Subscription in epicbox::server - Rust

Struct epicbox::server::Subscription[][src]

struct Subscription {}

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Given ptr, which was obtained from a prior call to Self::borrow(), +return a value with the same nominal lifetime which is guaranteed to +survive mutations to Self. Read more

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/doc/epicbox/sidebar-items.js b/doc/epicbox/sidebar-items.js new file mode 100644 index 0000000..290ad0d --- /dev/null +++ b/doc/epicbox/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["main",""]],"macro":[["header_list",""]],"mod":[["broker",""],["server",""]]}); \ No newline at end of file diff --git a/doc/favicon-16x16.png b/doc/favicon-16x16.png new file mode 100644 index 0000000..7cfe6c1 Binary files /dev/null and b/doc/favicon-16x16.png differ diff --git a/doc/favicon-32x32.png b/doc/favicon-32x32.png new file mode 100644 index 0000000..5109c1d Binary files /dev/null and b/doc/favicon-32x32.png differ diff --git a/doc/favicon.svg b/doc/favicon.svg new file mode 100644 index 0000000..8b34b51 --- /dev/null +++ b/doc/favicon.svg @@ -0,0 +1,24 @@ + + + + + diff --git a/doc/implementors/core/clone/trait.Clone.js b/doc/implementors/core/clone/trait.Clone.js new file mode 100644 index 0000000..c525e9b --- /dev/null +++ b/doc/implementors/core/clone/trait.Clone.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Clone for BrokerSession","synthetic":false,"types":["epicbox::broker::rabbit_broker::BrokerSession"]},{"text":"impl Clone for HeartBeat","synthetic":false,"types":["epicbox::broker::stomp::connection::HeartBeat"]},{"text":"impl<'a> Clone for Credentials<'a>","synthetic":false,"types":["epicbox::broker::stomp::connection::Credentials"]},{"text":"impl Clone for OwnedCredentials","synthetic":false,"types":["epicbox::broker::stomp::connection::OwnedCredentials"]},{"text":"impl Clone for HeaderList","synthetic":false,"types":["epicbox::broker::stomp::header::HeaderList"]},{"text":"impl Clone for Header","synthetic":false,"types":["epicbox::broker::stomp::header::Header"]},{"text":"impl Clone for HeaderName","synthetic":false,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T: Clone> Clone for Repr<T>","synthetic":false,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl Clone for Custom","synthetic":false,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl Clone for StandardHeader","synthetic":false,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl Clone for StompVersion","synthetic":false,"types":["epicbox::broker::stomp::header::StompVersion"]},{"text":"impl Clone for Command","synthetic":false,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl Clone for Frame","synthetic":false,"types":["epicbox::broker::stomp::frame::Frame"]},{"text":"impl Clone for AckMode","synthetic":false,"types":["epicbox::broker::stomp::subscription::AckMode"]},{"text":"impl Clone for AckOrNack","synthetic":false,"types":["epicbox::broker::stomp::subscription::AckOrNack"]},{"text":"impl Clone for SessionConfig","synthetic":false,"types":["epicbox::broker::stomp::session_builder::SessionConfig"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/cmp/trait.Eq.js b/doc/implementors/core/cmp/trait.Eq.js new file mode 100644 index 0000000..ddf1e88 --- /dev/null +++ b/doc/implementors/core/cmp/trait.Eq.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Eq for HeaderName","synthetic":false,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T: Eq> Eq for Repr<T>","synthetic":false,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl Eq for Custom","synthetic":false,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl Eq for StandardHeader","synthetic":false,"types":["epicbox::broker::stomp::header::StandardHeader"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/cmp/trait.PartialEq.js b/doc/implementors/core/cmp/trait.PartialEq.js new file mode 100644 index 0000000..8a4d743 --- /dev/null +++ b/doc/implementors/core/cmp/trait.PartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl PartialEq<HeaderName> for HeaderName","synthetic":false,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T: PartialEq> PartialEq<Repr<T>> for Repr<T>","synthetic":false,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl PartialEq<Custom> for Custom","synthetic":false,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl PartialEq<StandardHeader> for StandardHeader","synthetic":false,"types":["epicbox::broker::stomp::header::StandardHeader"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/fmt/trait.Debug.js b/doc/implementors/core/fmt/trait.Debug.js new file mode 100644 index 0000000..201343d --- /dev/null +++ b/doc/implementors/core/fmt/trait.Debug.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Debug for BrokerRequest","synthetic":false,"types":["epicbox::broker::broker_protocol::BrokerRequest"]},{"text":"impl Debug for BrokerResponse","synthetic":false,"types":["epicbox::broker::broker_protocol::BrokerResponse"]},{"text":"impl Debug for HeaderList","synthetic":false,"types":["epicbox::broker::stomp::header::HeaderList"]},{"text":"impl Debug for Header","synthetic":false,"types":["epicbox::broker::stomp::header::Header"]},{"text":"impl Debug for HeaderName","synthetic":false,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T: Debug> Debug for Repr<T>","synthetic":false,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl Debug for Custom","synthetic":false,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl Debug for StandardHeader","synthetic":false,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl Debug for ParseError","synthetic":false,"types":["epicbox::broker::stomp::codec::ParseError"]},{"text":"impl Debug for Command","synthetic":false,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl Debug for Frame","synthetic":false,"types":["epicbox::broker::stomp::frame::Frame"]},{"text":"impl Debug for Transmission","synthetic":false,"types":["epicbox::broker::stomp::frame::Transmission"]},{"text":"impl Debug for DisconnectionReason","synthetic":false,"types":["epicbox::broker::stomp::session::DisconnectionReason"]},{"text":"impl Debug for SessionEvent","synthetic":false,"types":["epicbox::broker::stomp::session::SessionEvent"]},{"text":"impl Debug for AckMode","synthetic":false,"types":["epicbox::broker::stomp::subscription::AckMode"]},{"text":"impl Debug for SignedPayload","synthetic":false,"types":["epicbox::server::SignedPayload"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/fmt/trait.Display.js b/doc/implementors/core/fmt/trait.Display.js new file mode 100644 index 0000000..622c9c7 --- /dev/null +++ b/doc/implementors/core/fmt/trait.Display.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Display for ParseError","synthetic":false,"types":["epicbox::broker::stomp::codec::ParseError"]},{"text":"impl Display for Command","synthetic":false,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl Display for Frame","synthetic":false,"types":["epicbox::broker::stomp::frame::Frame"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/hash/trait.Hash.js b/doc/implementors/core/hash/trait.Hash.js new file mode 100644 index 0000000..dadc0c9 --- /dev/null +++ b/doc/implementors/core/hash/trait.Hash.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Hash for HeaderName","synthetic":false,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T: Hash> Hash for Repr<T>","synthetic":false,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl Hash for Custom","synthetic":false,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl Hash for StandardHeader","synthetic":false,"types":["epicbox::broker::stomp::header::StandardHeader"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Copy.js b/doc/implementors/core/marker/trait.Copy.js new file mode 100644 index 0000000..ef43ca7 --- /dev/null +++ b/doc/implementors/core/marker/trait.Copy.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Copy for HeartBeat","synthetic":false,"types":["epicbox::broker::stomp::connection::HeartBeat"]},{"text":"impl<'a> Copy for Credentials<'a>","synthetic":false,"types":["epicbox::broker::stomp::connection::Credentials"]},{"text":"impl Copy for StandardHeader","synthetic":false,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl Copy for StompVersion","synthetic":false,"types":["epicbox::broker::stomp::header::StompVersion"]},{"text":"impl Copy for Command","synthetic":false,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl Copy for AckMode","synthetic":false,"types":["epicbox::broker::stomp::subscription::AckMode"]},{"text":"impl Copy for AckOrNack","synthetic":false,"types":["epicbox::broker::stomp::subscription::AckOrNack"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Freeze.js b/doc/implementors/core/marker/trait.Freeze.js new file mode 100644 index 0000000..93727fa --- /dev/null +++ b/doc/implementors/core/marker/trait.Freeze.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Freeze for BrokerRequest","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerRequest"]},{"text":"impl Freeze for BrokerResponse","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerResponse"]},{"text":"impl Freeze for Broker","synthetic":true,"types":["epicbox::broker::rabbit_broker::Broker"]},{"text":"impl Freeze for Consumer","synthetic":true,"types":["epicbox::broker::rabbit_broker::Consumer"]},{"text":"impl Freeze for BrokerSession","synthetic":true,"types":["epicbox::broker::rabbit_broker::BrokerSession"]},{"text":"impl Freeze for HeartBeat","synthetic":true,"types":["epicbox::broker::stomp::connection::HeartBeat"]},{"text":"impl<'a> Freeze for Credentials<'a>","synthetic":true,"types":["epicbox::broker::stomp::connection::Credentials"]},{"text":"impl Freeze for OwnedCredentials","synthetic":true,"types":["epicbox::broker::stomp::connection::OwnedCredentials"]},{"text":"impl Freeze for HeaderList","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderList"]},{"text":"impl<'a> Freeze for SuppressedHeader<'a>","synthetic":true,"types":["epicbox::broker::stomp::header::SuppressedHeader"]},{"text":"impl Freeze for Header","synthetic":true,"types":["epicbox::broker::stomp::header::Header"]},{"text":"impl Freeze for HeaderName","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T> Freeze for Repr<T> where
    T: Freeze
","synthetic":true,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl Freeze for Custom","synthetic":true,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl Freeze for StandardHeader","synthetic":true,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl Freeze for StompVersion","synthetic":true,"types":["epicbox::broker::stomp::header::StompVersion"]},{"text":"impl Freeze for ParseError","synthetic":true,"types":["epicbox::broker::stomp::codec::ParseError"]},{"text":"impl Freeze for Codec","synthetic":true,"types":["epicbox::broker::stomp::codec::Codec"]},{"text":"impl Freeze for Command","synthetic":true,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl Freeze for Frame","synthetic":true,"types":["epicbox::broker::stomp::frame::Frame"]},{"text":"impl Freeze for Transmission","synthetic":true,"types":["epicbox::broker::stomp::frame::Transmission"]},{"text":"impl Freeze for OutstandingReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::OutstandingReceipt"]},{"text":"impl Freeze for GenerateReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::GenerateReceipt"]},{"text":"impl Freeze for ReceiptRequest","synthetic":true,"types":["epicbox::broker::stomp::session::ReceiptRequest"]},{"text":"impl Freeze for HeartBeatDelay","synthetic":true,"types":["epicbox::broker::stomp::session::HeartBeatDelay"]},{"text":"impl Freeze for SessionState","synthetic":true,"types":["epicbox::broker::stomp::session::SessionState"]},{"text":"impl<T> !Freeze for Session<T>","synthetic":true,"types":["epicbox::broker::stomp::session::Session"]},{"text":"impl Freeze for DisconnectionReason","synthetic":true,"types":["epicbox::broker::stomp::session::DisconnectionReason"]},{"text":"impl Freeze for SessionEvent","synthetic":true,"types":["epicbox::broker::stomp::session::SessionEvent"]},{"text":"impl<T> !Freeze for StreamState<T>","synthetic":true,"types":["epicbox::broker::stomp::session::StreamState"]},{"text":"impl Freeze for AckMode","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckMode"]},{"text":"impl Freeze for AckOrNack","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckOrNack"]},{"text":"impl Freeze for Subscription","synthetic":true,"types":["epicbox::broker::stomp::subscription::Subscription"]},{"text":"impl<'tx, T> Freeze for Transaction<'tx, T>","synthetic":true,"types":["epicbox::broker::stomp::transaction::Transaction"]},{"text":"impl<'a, T> Freeze for MessageBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::message_builder::MessageBuilder"]},{"text":"impl Freeze for SessionConfig","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionConfig"]},{"text":"impl Freeze for SessionBuilder","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionBuilder"]},{"text":"impl<'a, T> Freeze for SubscriptionBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::subscription_builder::SubscriptionBuilder"]},{"text":"impl Freeze for BrokerResponseHandler","synthetic":true,"types":["epicbox::server::BrokerResponseHandler"]},{"text":"impl Freeze for AsyncServer","synthetic":true,"types":["epicbox::server::AsyncServer"]},{"text":"impl Freeze for Server","synthetic":true,"types":["epicbox::server::Server"]},{"text":"impl Freeze for Subscription","synthetic":true,"types":["epicbox::server::Subscription"]},{"text":"impl Freeze for SignedPayload","synthetic":true,"types":["epicbox::server::SignedPayload"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Send.js b/doc/implementors/core/marker/trait.Send.js new file mode 100644 index 0000000..2a6c42b --- /dev/null +++ b/doc/implementors/core/marker/trait.Send.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Send for BrokerRequest","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerRequest"]},{"text":"impl Send for BrokerResponse","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerResponse"]},{"text":"impl Send for Broker","synthetic":true,"types":["epicbox::broker::rabbit_broker::Broker"]},{"text":"impl Send for Consumer","synthetic":true,"types":["epicbox::broker::rabbit_broker::Consumer"]},{"text":"impl Send for BrokerSession","synthetic":true,"types":["epicbox::broker::rabbit_broker::BrokerSession"]},{"text":"impl Send for HeartBeat","synthetic":true,"types":["epicbox::broker::stomp::connection::HeartBeat"]},{"text":"impl<'a> Send for Credentials<'a>","synthetic":true,"types":["epicbox::broker::stomp::connection::Credentials"]},{"text":"impl Send for OwnedCredentials","synthetic":true,"types":["epicbox::broker::stomp::connection::OwnedCredentials"]},{"text":"impl Send for HeaderList","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderList"]},{"text":"impl<'a> Send for SuppressedHeader<'a>","synthetic":true,"types":["epicbox::broker::stomp::header::SuppressedHeader"]},{"text":"impl Send for Header","synthetic":true,"types":["epicbox::broker::stomp::header::Header"]},{"text":"impl Send for HeaderName","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T> Send for Repr<T> where
    T: Send
","synthetic":true,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl Send for Custom","synthetic":true,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl Send for StandardHeader","synthetic":true,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl Send for StompVersion","synthetic":true,"types":["epicbox::broker::stomp::header::StompVersion"]},{"text":"impl Send for ParseError","synthetic":true,"types":["epicbox::broker::stomp::codec::ParseError"]},{"text":"impl Send for Codec","synthetic":true,"types":["epicbox::broker::stomp::codec::Codec"]},{"text":"impl Send for Command","synthetic":true,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl Send for Frame","synthetic":true,"types":["epicbox::broker::stomp::frame::Frame"]},{"text":"impl Send for Transmission","synthetic":true,"types":["epicbox::broker::stomp::frame::Transmission"]},{"text":"impl Send for OutstandingReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::OutstandingReceipt"]},{"text":"impl Send for GenerateReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::GenerateReceipt"]},{"text":"impl Send for ReceiptRequest","synthetic":true,"types":["epicbox::broker::stomp::session::ReceiptRequest"]},{"text":"impl Send for HeartBeatDelay","synthetic":true,"types":["epicbox::broker::stomp::session::HeartBeatDelay"]},{"text":"impl Send for SessionState","synthetic":true,"types":["epicbox::broker::stomp::session::SessionState"]},{"text":"impl<T> Send for Session<T> where
    T: Send
","synthetic":true,"types":["epicbox::broker::stomp::session::Session"]},{"text":"impl Send for DisconnectionReason","synthetic":true,"types":["epicbox::broker::stomp::session::DisconnectionReason"]},{"text":"impl Send for SessionEvent","synthetic":true,"types":["epicbox::broker::stomp::session::SessionEvent"]},{"text":"impl<T> Send for StreamState<T> where
    T: Send
","synthetic":true,"types":["epicbox::broker::stomp::session::StreamState"]},{"text":"impl Send for AckMode","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckMode"]},{"text":"impl Send for AckOrNack","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckOrNack"]},{"text":"impl Send for Subscription","synthetic":true,"types":["epicbox::broker::stomp::subscription::Subscription"]},{"text":"impl<'tx, T> Send for Transaction<'tx, T> where
    T: Send
","synthetic":true,"types":["epicbox::broker::stomp::transaction::Transaction"]},{"text":"impl<'a, T> Send for MessageBuilder<'a, T> where
    T: Send
","synthetic":true,"types":["epicbox::broker::stomp::message_builder::MessageBuilder"]},{"text":"impl Send for SessionConfig","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionConfig"]},{"text":"impl Send for SessionBuilder","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionBuilder"]},{"text":"impl<'a, T> Send for SubscriptionBuilder<'a, T> where
    T: Send
","synthetic":true,"types":["epicbox::broker::stomp::subscription_builder::SubscriptionBuilder"]},{"text":"impl Send for BrokerResponseHandler","synthetic":true,"types":["epicbox::server::BrokerResponseHandler"]},{"text":"impl Send for AsyncServer","synthetic":true,"types":["epicbox::server::AsyncServer"]},{"text":"impl Send for Server","synthetic":true,"types":["epicbox::server::Server"]},{"text":"impl Send for Subscription","synthetic":true,"types":["epicbox::server::Subscription"]},{"text":"impl Send for SignedPayload","synthetic":true,"types":["epicbox::server::SignedPayload"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.StructuralEq.js b/doc/implementors/core/marker/trait.StructuralEq.js new file mode 100644 index 0000000..1387ad0 --- /dev/null +++ b/doc/implementors/core/marker/trait.StructuralEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl StructuralEq for HeaderName","synthetic":false,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T> StructuralEq for Repr<T>","synthetic":false,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl StructuralEq for Custom","synthetic":false,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl StructuralEq for StandardHeader","synthetic":false,"types":["epicbox::broker::stomp::header::StandardHeader"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.StructuralPartialEq.js b/doc/implementors/core/marker/trait.StructuralPartialEq.js new file mode 100644 index 0000000..3b55b43 --- /dev/null +++ b/doc/implementors/core/marker/trait.StructuralPartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl StructuralPartialEq for HeaderName","synthetic":false,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T> StructuralPartialEq for Repr<T>","synthetic":false,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl StructuralPartialEq for Custom","synthetic":false,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl StructuralPartialEq for StandardHeader","synthetic":false,"types":["epicbox::broker::stomp::header::StandardHeader"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Sync.js b/doc/implementors/core/marker/trait.Sync.js new file mode 100644 index 0000000..46d5a2a --- /dev/null +++ b/doc/implementors/core/marker/trait.Sync.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Sync for BrokerRequest","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerRequest"]},{"text":"impl Sync for BrokerResponse","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerResponse"]},{"text":"impl Sync for Broker","synthetic":true,"types":["epicbox::broker::rabbit_broker::Broker"]},{"text":"impl Sync for Consumer","synthetic":true,"types":["epicbox::broker::rabbit_broker::Consumer"]},{"text":"impl Sync for BrokerSession","synthetic":true,"types":["epicbox::broker::rabbit_broker::BrokerSession"]},{"text":"impl Sync for HeartBeat","synthetic":true,"types":["epicbox::broker::stomp::connection::HeartBeat"]},{"text":"impl<'a> Sync for Credentials<'a>","synthetic":true,"types":["epicbox::broker::stomp::connection::Credentials"]},{"text":"impl Sync for OwnedCredentials","synthetic":true,"types":["epicbox::broker::stomp::connection::OwnedCredentials"]},{"text":"impl Sync for HeaderList","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderList"]},{"text":"impl<'a> Sync for SuppressedHeader<'a>","synthetic":true,"types":["epicbox::broker::stomp::header::SuppressedHeader"]},{"text":"impl Sync for Header","synthetic":true,"types":["epicbox::broker::stomp::header::Header"]},{"text":"impl Sync for HeaderName","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T> Sync for Repr<T> where
    T: Sync
","synthetic":true,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl Sync for Custom","synthetic":true,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl Sync for StandardHeader","synthetic":true,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl Sync for StompVersion","synthetic":true,"types":["epicbox::broker::stomp::header::StompVersion"]},{"text":"impl Sync for ParseError","synthetic":true,"types":["epicbox::broker::stomp::codec::ParseError"]},{"text":"impl Sync for Codec","synthetic":true,"types":["epicbox::broker::stomp::codec::Codec"]},{"text":"impl Sync for Command","synthetic":true,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl Sync for Frame","synthetic":true,"types":["epicbox::broker::stomp::frame::Frame"]},{"text":"impl Sync for Transmission","synthetic":true,"types":["epicbox::broker::stomp::frame::Transmission"]},{"text":"impl Sync for OutstandingReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::OutstandingReceipt"]},{"text":"impl Sync for GenerateReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::GenerateReceipt"]},{"text":"impl Sync for ReceiptRequest","synthetic":true,"types":["epicbox::broker::stomp::session::ReceiptRequest"]},{"text":"impl Sync for HeartBeatDelay","synthetic":true,"types":["epicbox::broker::stomp::session::HeartBeatDelay"]},{"text":"impl Sync for SessionState","synthetic":true,"types":["epicbox::broker::stomp::session::SessionState"]},{"text":"impl<T> !Sync for Session<T>","synthetic":true,"types":["epicbox::broker::stomp::session::Session"]},{"text":"impl Sync for DisconnectionReason","synthetic":true,"types":["epicbox::broker::stomp::session::DisconnectionReason"]},{"text":"impl Sync for SessionEvent","synthetic":true,"types":["epicbox::broker::stomp::session::SessionEvent"]},{"text":"impl<T> !Sync for StreamState<T>","synthetic":true,"types":["epicbox::broker::stomp::session::StreamState"]},{"text":"impl Sync for AckMode","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckMode"]},{"text":"impl Sync for AckOrNack","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckOrNack"]},{"text":"impl Sync for Subscription","synthetic":true,"types":["epicbox::broker::stomp::subscription::Subscription"]},{"text":"impl<'tx, T> !Sync for Transaction<'tx, T>","synthetic":true,"types":["epicbox::broker::stomp::transaction::Transaction"]},{"text":"impl<'a, T> !Sync for MessageBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::message_builder::MessageBuilder"]},{"text":"impl Sync for SessionConfig","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionConfig"]},{"text":"impl Sync for SessionBuilder","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionBuilder"]},{"text":"impl<'a, T> !Sync for SubscriptionBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::subscription_builder::SubscriptionBuilder"]},{"text":"impl Sync for BrokerResponseHandler","synthetic":true,"types":["epicbox::server::BrokerResponseHandler"]},{"text":"impl Sync for AsyncServer","synthetic":true,"types":["epicbox::server::AsyncServer"]},{"text":"impl Sync for Server","synthetic":true,"types":["epicbox::server::Server"]},{"text":"impl Sync for Subscription","synthetic":true,"types":["epicbox::server::Subscription"]},{"text":"impl Sync for SignedPayload","synthetic":true,"types":["epicbox::server::SignedPayload"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Unpin.js b/doc/implementors/core/marker/trait.Unpin.js new file mode 100644 index 0000000..4c2a0d2 --- /dev/null +++ b/doc/implementors/core/marker/trait.Unpin.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Unpin for BrokerRequest","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerRequest"]},{"text":"impl Unpin for BrokerResponse","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerResponse"]},{"text":"impl Unpin for Broker","synthetic":true,"types":["epicbox::broker::rabbit_broker::Broker"]},{"text":"impl Unpin for Consumer","synthetic":true,"types":["epicbox::broker::rabbit_broker::Consumer"]},{"text":"impl Unpin for BrokerSession","synthetic":true,"types":["epicbox::broker::rabbit_broker::BrokerSession"]},{"text":"impl Unpin for HeartBeat","synthetic":true,"types":["epicbox::broker::stomp::connection::HeartBeat"]},{"text":"impl<'a> Unpin for Credentials<'a>","synthetic":true,"types":["epicbox::broker::stomp::connection::Credentials"]},{"text":"impl Unpin for OwnedCredentials","synthetic":true,"types":["epicbox::broker::stomp::connection::OwnedCredentials"]},{"text":"impl Unpin for HeaderList","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderList"]},{"text":"impl<'a> Unpin for SuppressedHeader<'a>","synthetic":true,"types":["epicbox::broker::stomp::header::SuppressedHeader"]},{"text":"impl Unpin for Header","synthetic":true,"types":["epicbox::broker::stomp::header::Header"]},{"text":"impl Unpin for HeaderName","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T> Unpin for Repr<T> where
    T: Unpin
","synthetic":true,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl Unpin for Custom","synthetic":true,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl Unpin for StandardHeader","synthetic":true,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl Unpin for StompVersion","synthetic":true,"types":["epicbox::broker::stomp::header::StompVersion"]},{"text":"impl Unpin for ParseError","synthetic":true,"types":["epicbox::broker::stomp::codec::ParseError"]},{"text":"impl Unpin for Codec","synthetic":true,"types":["epicbox::broker::stomp::codec::Codec"]},{"text":"impl Unpin for Command","synthetic":true,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl Unpin for Frame","synthetic":true,"types":["epicbox::broker::stomp::frame::Frame"]},{"text":"impl Unpin for Transmission","synthetic":true,"types":["epicbox::broker::stomp::frame::Transmission"]},{"text":"impl Unpin for OutstandingReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::OutstandingReceipt"]},{"text":"impl Unpin for GenerateReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::GenerateReceipt"]},{"text":"impl Unpin for ReceiptRequest","synthetic":true,"types":["epicbox::broker::stomp::session::ReceiptRequest"]},{"text":"impl Unpin for HeartBeatDelay","synthetic":true,"types":["epicbox::broker::stomp::session::HeartBeatDelay"]},{"text":"impl Unpin for SessionState","synthetic":true,"types":["epicbox::broker::stomp::session::SessionState"]},{"text":"impl<T> Unpin for Session<T> where
    T: Unpin
","synthetic":true,"types":["epicbox::broker::stomp::session::Session"]},{"text":"impl Unpin for DisconnectionReason","synthetic":true,"types":["epicbox::broker::stomp::session::DisconnectionReason"]},{"text":"impl Unpin for SessionEvent","synthetic":true,"types":["epicbox::broker::stomp::session::SessionEvent"]},{"text":"impl<T> Unpin for StreamState<T> where
    T: Unpin
","synthetic":true,"types":["epicbox::broker::stomp::session::StreamState"]},{"text":"impl Unpin for AckMode","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckMode"]},{"text":"impl Unpin for AckOrNack","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckOrNack"]},{"text":"impl Unpin for Subscription","synthetic":true,"types":["epicbox::broker::stomp::subscription::Subscription"]},{"text":"impl<'tx, T> Unpin for Transaction<'tx, T>","synthetic":true,"types":["epicbox::broker::stomp::transaction::Transaction"]},{"text":"impl<'a, T> Unpin for MessageBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::message_builder::MessageBuilder"]},{"text":"impl Unpin for SessionConfig","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionConfig"]},{"text":"impl Unpin for SessionBuilder","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionBuilder"]},{"text":"impl<'a, T> Unpin for SubscriptionBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::subscription_builder::SubscriptionBuilder"]},{"text":"impl Unpin for BrokerResponseHandler","synthetic":true,"types":["epicbox::server::BrokerResponseHandler"]},{"text":"impl Unpin for AsyncServer","synthetic":true,"types":["epicbox::server::AsyncServer"]},{"text":"impl Unpin for Server","synthetic":true,"types":["epicbox::server::Server"]},{"text":"impl Unpin for Subscription","synthetic":true,"types":["epicbox::server::Subscription"]},{"text":"impl Unpin for SignedPayload","synthetic":true,"types":["epicbox::server::SignedPayload"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/ops/drop/trait.Drop.js b/doc/implementors/core/ops/drop/trait.Drop.js new file mode 100644 index 0000000..225c1d0 --- /dev/null +++ b/doc/implementors/core/ops/drop/trait.Drop.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Drop for AsyncServer","synthetic":false,"types":["epicbox::server::AsyncServer"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js new file mode 100644 index 0000000..8bd5525 --- /dev/null +++ b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl !RefUnwindSafe for BrokerRequest","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerRequest"]},{"text":"impl RefUnwindSafe for BrokerResponse","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerResponse"]},{"text":"impl RefUnwindSafe for Broker","synthetic":true,"types":["epicbox::broker::rabbit_broker::Broker"]},{"text":"impl !RefUnwindSafe for Consumer","synthetic":true,"types":["epicbox::broker::rabbit_broker::Consumer"]},{"text":"impl RefUnwindSafe for BrokerSession","synthetic":true,"types":["epicbox::broker::rabbit_broker::BrokerSession"]},{"text":"impl RefUnwindSafe for HeartBeat","synthetic":true,"types":["epicbox::broker::stomp::connection::HeartBeat"]},{"text":"impl<'a> RefUnwindSafe for Credentials<'a>","synthetic":true,"types":["epicbox::broker::stomp::connection::Credentials"]},{"text":"impl RefUnwindSafe for OwnedCredentials","synthetic":true,"types":["epicbox::broker::stomp::connection::OwnedCredentials"]},{"text":"impl RefUnwindSafe for HeaderList","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderList"]},{"text":"impl<'a> RefUnwindSafe for SuppressedHeader<'a>","synthetic":true,"types":["epicbox::broker::stomp::header::SuppressedHeader"]},{"text":"impl RefUnwindSafe for Header","synthetic":true,"types":["epicbox::broker::stomp::header::Header"]},{"text":"impl RefUnwindSafe for HeaderName","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T> RefUnwindSafe for Repr<T> where
    T: RefUnwindSafe
","synthetic":true,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl RefUnwindSafe for Custom","synthetic":true,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl RefUnwindSafe for StandardHeader","synthetic":true,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl RefUnwindSafe for StompVersion","synthetic":true,"types":["epicbox::broker::stomp::header::StompVersion"]},{"text":"impl RefUnwindSafe for ParseError","synthetic":true,"types":["epicbox::broker::stomp::codec::ParseError"]},{"text":"impl RefUnwindSafe for Codec","synthetic":true,"types":["epicbox::broker::stomp::codec::Codec"]},{"text":"impl RefUnwindSafe for Command","synthetic":true,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl RefUnwindSafe for Frame","synthetic":true,"types":["epicbox::broker::stomp::frame::Frame"]},{"text":"impl RefUnwindSafe for Transmission","synthetic":true,"types":["epicbox::broker::stomp::frame::Transmission"]},{"text":"impl RefUnwindSafe for OutstandingReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::OutstandingReceipt"]},{"text":"impl RefUnwindSafe for GenerateReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::GenerateReceipt"]},{"text":"impl RefUnwindSafe for ReceiptRequest","synthetic":true,"types":["epicbox::broker::stomp::session::ReceiptRequest"]},{"text":"impl !RefUnwindSafe for HeartBeatDelay","synthetic":true,"types":["epicbox::broker::stomp::session::HeartBeatDelay"]},{"text":"impl !RefUnwindSafe for SessionState","synthetic":true,"types":["epicbox::broker::stomp::session::SessionState"]},{"text":"impl<T> !RefUnwindSafe for Session<T>","synthetic":true,"types":["epicbox::broker::stomp::session::Session"]},{"text":"impl !RefUnwindSafe for DisconnectionReason","synthetic":true,"types":["epicbox::broker::stomp::session::DisconnectionReason"]},{"text":"impl !RefUnwindSafe for SessionEvent","synthetic":true,"types":["epicbox::broker::stomp::session::SessionEvent"]},{"text":"impl<T> !RefUnwindSafe for StreamState<T>","synthetic":true,"types":["epicbox::broker::stomp::session::StreamState"]},{"text":"impl RefUnwindSafe for AckMode","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckMode"]},{"text":"impl RefUnwindSafe for AckOrNack","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckOrNack"]},{"text":"impl RefUnwindSafe for Subscription","synthetic":true,"types":["epicbox::broker::stomp::subscription::Subscription"]},{"text":"impl<'tx, T> !RefUnwindSafe for Transaction<'tx, T>","synthetic":true,"types":["epicbox::broker::stomp::transaction::Transaction"]},{"text":"impl<'a, T> !RefUnwindSafe for MessageBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::message_builder::MessageBuilder"]},{"text":"impl RefUnwindSafe for SessionConfig","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionConfig"]},{"text":"impl RefUnwindSafe for SessionBuilder","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionBuilder"]},{"text":"impl<'a, T> !RefUnwindSafe for SubscriptionBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::subscription_builder::SubscriptionBuilder"]},{"text":"impl !RefUnwindSafe for BrokerResponseHandler","synthetic":true,"types":["epicbox::server::BrokerResponseHandler"]},{"text":"impl !RefUnwindSafe for AsyncServer","synthetic":true,"types":["epicbox::server::AsyncServer"]},{"text":"impl !RefUnwindSafe for Server","synthetic":true,"types":["epicbox::server::Server"]},{"text":"impl RefUnwindSafe for Subscription","synthetic":true,"types":["epicbox::server::Subscription"]},{"text":"impl RefUnwindSafe for SignedPayload","synthetic":true,"types":["epicbox::server::SignedPayload"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js new file mode 100644 index 0000000..0268947 --- /dev/null +++ b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl !UnwindSafe for BrokerRequest","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerRequest"]},{"text":"impl UnwindSafe for BrokerResponse","synthetic":true,"types":["epicbox::broker::broker_protocol::BrokerResponse"]},{"text":"impl UnwindSafe for Broker","synthetic":true,"types":["epicbox::broker::rabbit_broker::Broker"]},{"text":"impl !UnwindSafe for Consumer","synthetic":true,"types":["epicbox::broker::rabbit_broker::Consumer"]},{"text":"impl UnwindSafe for BrokerSession","synthetic":true,"types":["epicbox::broker::rabbit_broker::BrokerSession"]},{"text":"impl UnwindSafe for HeartBeat","synthetic":true,"types":["epicbox::broker::stomp::connection::HeartBeat"]},{"text":"impl<'a> UnwindSafe for Credentials<'a>","synthetic":true,"types":["epicbox::broker::stomp::connection::Credentials"]},{"text":"impl UnwindSafe for OwnedCredentials","synthetic":true,"types":["epicbox::broker::stomp::connection::OwnedCredentials"]},{"text":"impl UnwindSafe for HeaderList","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderList"]},{"text":"impl<'a> UnwindSafe for SuppressedHeader<'a>","synthetic":true,"types":["epicbox::broker::stomp::header::SuppressedHeader"]},{"text":"impl UnwindSafe for Header","synthetic":true,"types":["epicbox::broker::stomp::header::Header"]},{"text":"impl UnwindSafe for HeaderName","synthetic":true,"types":["epicbox::broker::stomp::header::HeaderName"]},{"text":"impl<T> UnwindSafe for Repr<T> where
    T: UnwindSafe
","synthetic":true,"types":["epicbox::broker::stomp::header::Repr"]},{"text":"impl UnwindSafe for Custom","synthetic":true,"types":["epicbox::broker::stomp::header::Custom"]},{"text":"impl UnwindSafe for StandardHeader","synthetic":true,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl UnwindSafe for StompVersion","synthetic":true,"types":["epicbox::broker::stomp::header::StompVersion"]},{"text":"impl UnwindSafe for ParseError","synthetic":true,"types":["epicbox::broker::stomp::codec::ParseError"]},{"text":"impl UnwindSafe for Codec","synthetic":true,"types":["epicbox::broker::stomp::codec::Codec"]},{"text":"impl UnwindSafe for Command","synthetic":true,"types":["epicbox::broker::stomp::frame::Command"]},{"text":"impl UnwindSafe for Frame","synthetic":true,"types":["epicbox::broker::stomp::frame::Frame"]},{"text":"impl UnwindSafe for Transmission","synthetic":true,"types":["epicbox::broker::stomp::frame::Transmission"]},{"text":"impl UnwindSafe for OutstandingReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::OutstandingReceipt"]},{"text":"impl UnwindSafe for GenerateReceipt","synthetic":true,"types":["epicbox::broker::stomp::session::GenerateReceipt"]},{"text":"impl UnwindSafe for ReceiptRequest","synthetic":true,"types":["epicbox::broker::stomp::session::ReceiptRequest"]},{"text":"impl !UnwindSafe for HeartBeatDelay","synthetic":true,"types":["epicbox::broker::stomp::session::HeartBeatDelay"]},{"text":"impl !UnwindSafe for SessionState","synthetic":true,"types":["epicbox::broker::stomp::session::SessionState"]},{"text":"impl<T> !UnwindSafe for Session<T>","synthetic":true,"types":["epicbox::broker::stomp::session::Session"]},{"text":"impl !UnwindSafe for DisconnectionReason","synthetic":true,"types":["epicbox::broker::stomp::session::DisconnectionReason"]},{"text":"impl !UnwindSafe for SessionEvent","synthetic":true,"types":["epicbox::broker::stomp::session::SessionEvent"]},{"text":"impl<T> !UnwindSafe for StreamState<T>","synthetic":true,"types":["epicbox::broker::stomp::session::StreamState"]},{"text":"impl UnwindSafe for AckMode","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckMode"]},{"text":"impl UnwindSafe for AckOrNack","synthetic":true,"types":["epicbox::broker::stomp::subscription::AckOrNack"]},{"text":"impl UnwindSafe for Subscription","synthetic":true,"types":["epicbox::broker::stomp::subscription::Subscription"]},{"text":"impl<'tx, T> !UnwindSafe for Transaction<'tx, T>","synthetic":true,"types":["epicbox::broker::stomp::transaction::Transaction"]},{"text":"impl<'a, T> !UnwindSafe for MessageBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::message_builder::MessageBuilder"]},{"text":"impl UnwindSafe for SessionConfig","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionConfig"]},{"text":"impl UnwindSafe for SessionBuilder","synthetic":true,"types":["epicbox::broker::stomp::session_builder::SessionBuilder"]},{"text":"impl<'a, T> !UnwindSafe for SubscriptionBuilder<'a, T>","synthetic":true,"types":["epicbox::broker::stomp::subscription_builder::SubscriptionBuilder"]},{"text":"impl !UnwindSafe for BrokerResponseHandler","synthetic":true,"types":["epicbox::server::BrokerResponseHandler"]},{"text":"impl !UnwindSafe for AsyncServer","synthetic":true,"types":["epicbox::server::AsyncServer"]},{"text":"impl !UnwindSafe for Server","synthetic":true,"types":["epicbox::server::Server"]},{"text":"impl UnwindSafe for Subscription","synthetic":true,"types":["epicbox::server::Subscription"]},{"text":"impl UnwindSafe for SignedPayload","synthetic":true,"types":["epicbox::server::SignedPayload"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/str/traits/trait.FromStr.js b/doc/implementors/core/str/traits/trait.FromStr.js new file mode 100644 index 0000000..e3e8540 --- /dev/null +++ b/doc/implementors/core/str/traits/trait.FromStr.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl FromStr for StandardHeader","synthetic":false,"types":["epicbox::broker::stomp::header::StandardHeader"]},{"text":"impl FromStr for StompVersion","synthetic":false,"types":["epicbox::broker::stomp::header::StompVersion"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/epicbox/broker/stomp/frame/trait.ToFrameBody.js b/doc/implementors/epicbox/broker/stomp/frame/trait.ToFrameBody.js new file mode 100644 index 0000000..52d143e --- /dev/null +++ b/doc/implementors/epicbox/broker/stomp/frame/trait.ToFrameBody.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/epicbox/broker/stomp/option_setter/trait.OptionSetter.js b/doc/implementors/epicbox/broker/stomp/option_setter/trait.OptionSetter.js new file mode 100644 index 0000000..52d143e --- /dev/null +++ b/doc/implementors/epicbox/broker/stomp/option_setter/trait.OptionSetter.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/futures/future/trait.Future.js b/doc/implementors/futures/future/trait.Future.js new file mode 100644 index 0000000..0ae1ed2 --- /dev/null +++ b/doc/implementors/futures/future/trait.Future.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Future for BrokerSession","synthetic":false,"types":["epicbox::broker::rabbit_broker::BrokerSession"]},{"text":"impl Future for HeartBeatDelay","synthetic":false,"types":["epicbox::broker::stomp::session::HeartBeatDelay"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/futures/stream/trait.Stream.js b/doc/implementors/futures/stream/trait.Stream.js new file mode 100644 index 0000000..b8a059f --- /dev/null +++ b/doc/implementors/futures/stream/trait.Stream.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl<T> Stream for Session<T> where
    T: AsyncWrite + AsyncRead + Send + 'static, 
","synthetic":false,"types":["epicbox::broker::stomp::session::Session"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/serde/de/trait.Deserialize.js b/doc/implementors/serde/de/trait.Deserialize.js new file mode 100644 index 0000000..ec9cfb8 --- /dev/null +++ b/doc/implementors/serde/de/trait.Deserialize.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl<'de> Deserialize<'de> for SignedPayload","synthetic":false,"types":["epicbox::server::SignedPayload"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/serde/ser/trait.Serialize.js b/doc/implementors/serde/ser/trait.Serialize.js new file mode 100644 index 0000000..b9bf238 --- /dev/null +++ b/doc/implementors/serde/ser/trait.Serialize.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Serialize for SignedPayload","synthetic":false,"types":["epicbox::server::SignedPayload"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/std/error/trait.Error.js b/doc/implementors/std/error/trait.Error.js new file mode 100644 index 0000000..d7b3460 --- /dev/null +++ b/doc/implementors/std/error/trait.Error.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Error for ParseError","synthetic":false,"types":["epicbox::broker::stomp::codec::ParseError"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/tokio_io/codec/decoder/trait.Decoder.js b/doc/implementors/tokio_io/codec/decoder/trait.Decoder.js new file mode 100644 index 0000000..44fe979 --- /dev/null +++ b/doc/implementors/tokio_io/codec/decoder/trait.Decoder.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Decoder for Codec","synthetic":false,"types":["epicbox::broker::stomp::codec::Codec"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/tokio_io/codec/encoder/trait.Encoder.js b/doc/implementors/tokio_io/codec/encoder/trait.Encoder.js new file mode 100644 index 0000000..c14adb1 --- /dev/null +++ b/doc/implementors/tokio_io/codec/encoder/trait.Encoder.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Encoder for Codec","synthetic":false,"types":["epicbox::broker::stomp::codec::Codec"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/ws/handler/trait.Handler.js b/doc/implementors/ws/handler/trait.Handler.js new file mode 100644 index 0000000..a2c1b8f --- /dev/null +++ b/doc/implementors/ws/handler/trait.Handler.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["epicbox"] = [{"text":"impl Handler for AsyncServer","synthetic":false,"types":["epicbox::server::AsyncServer"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/light.css b/doc/light.css new file mode 100644 index 0000000..d4d3882 --- /dev/null +++ b/doc/light.css @@ -0,0 +1 @@ + body{background-color:white;color:black;}h1,h2,h3,h4{color:black;}h1.fqn{border-bottom-color:#D5D5D5;}h2,h3,h4{border-bottom-color:#DDDDDD;}.in-band{background-color:white;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#F5F5F5;}pre,.rustdoc.source .example-wrap{background-color:#F5F5F5;}.sidebar{background-color:#F1F1F1;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.logo-container.rust-logo>img{}::-webkit-scrollbar-track{background-color:#ecebeb;}::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar::-webkit-scrollbar-track{background-color:#dcdcdc;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar .current{background-color:#fff;}.source .sidebar{background-color:#fff;}.sidebar .location{border-color:#000;background-color:#fff;color:#333;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#F5F5F5;}.line-numbers span{color:#c67e2d;}.line-numbers .line-highlighted{background-color:#f6fdb0 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#ddd;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.search-results a:hover{background-color:#ddd;}.search-results a:focus{color:#000 !important;background-color:#ccc;}.search-results a:focus span{color:#000 !important;}a.result-trait:focus{background-color:#c7b6ff;}a.result-traitalias:focus{background-color:#c7b6ff;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-enum:focus{background-color:#b4d1b9;}a.result-struct:focus{background-color:#e7b1a0;}a.result-union:focus{background-color:#b7bd49;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#c6afb3;}a.result-type:focus{background-color:#ffc891;}a.result-foreigntype:focus{background-color:#f5c4ff;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#8ce488;}a.result-constant:focus,a.result-static:focus{background-color:#c3e0ff;}a.result-primitive:focus{background-color:#9aecff;}a.result-keyword:focus{background-color:#f99650;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#508157;}.content span.struct,.content a.struct,.block a.current.struct{color:#ad448e;}.content span.type,.content a.type,.block a.current.type{color:#ba5d00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#cd00e2;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#068000;}.content span.union,.content a.union,.block a.current.union{color:#767b27;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#546e8a;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2c8093;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#4d76ae;}.content span.trait,.content a.trait,.block a.current.trait{color:#7c5af3;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#6841f1;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#9a6e31;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#de5249;}nav:not(.sidebar){border-bottom-color:#e0e0e0;}nav.main .current{border-top-color:#000;border-bottom-color:#000;}nav.main .separator{border:1px solid #000;}a{color:#000;}body.source .example-wrap pre.rust a{background:#eee;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#3873AD;}a.test-arrow{color:#f5f5f5;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search{color:#555;background-color:white;border-color:#e0e0e0;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input{color:#555;background-color:white;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input:focus{border-color:#66afe9;}.search-input:disabled{background-color:#e6e6e6;}#crate-search+.search-input:focus{box-shadow:0 0 8px #078dd8;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help>div>span{border-bottom-color:#bfbfbf;}.since{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:black;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#8959A8;}pre.rust .kw-2,pre.rust .prelude-ty{color:#4271AE;}pre.rust .number,pre.rust .string{color:#718C00;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#C82829;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#B76514;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#c7c7c7;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target,:target>*{background:#FDFFD3;}:target{border-right:3px solid #ffb44c;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.5);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.5);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}.notable-traits-tooltiptext .notable{border-bottom-color:#DDDDDD;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#F1F1F1;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F1F1F1;border-right-color:#000;}#sidebar-filler{background-color:#F1F1F1;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background-color:#fff;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#717171;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(35%);}#theme-choices{border-color:#ccc;background-color:#fff;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#eee;}@media (max-width:700px){#theme-picker{background:#fff;}}#all-types{background-color:#fff;}#all-types:hover{background-color:#f9f9f9;}.search-results .result-name span.alias{color:#000;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#F1F1F1;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F1F1F1;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#E0E0E0;}div.files>.selected{background-color:#fff;}.setting-line>.title{border-bottom-color:#D5D5D5;} \ No newline at end of file diff --git a/doc/main.js b/doc/main.js new file mode 100644 index 0000000..33ee852 --- /dev/null +++ b/doc/main.js @@ -0,0 +1,8 @@ +if(!String.prototype.startsWith){String.prototype.startsWith=function(searchString,position){position=position||0;return this.indexOf(searchString,position)===position}}if(!String.prototype.endsWith){String.prototype.endsWith=function(suffix,length){var l=length||this.length;return this.indexOf(suffix,l-suffix.length)!==-1}}if(!DOMTokenList.prototype.add){DOMTokenList.prototype.add=function(className){if(className&&!hasClass(this,className)){if(this.className&&this.className.length>0){this.className+=" "+className}else{this.className=className}}}}if(!DOMTokenList.prototype.remove){DOMTokenList.prototype.remove=function(className){if(className&&this.className){this.className=(" "+this.className+" ").replace(" "+className+" "," ").trim()}}}(function(){var rustdocVars=document.getElementById("rustdoc-vars");if(rustdocVars){window.rootPath=rustdocVars.attributes["data-root-path"].value;window.currentCrate=rustdocVars.attributes["data-current-crate"].value;window.searchJS=rustdocVars.attributes["data-search-js"].value;window.searchIndexJS=rustdocVars.attributes["data-search-index-js"].value}var sidebarVars=document.getElementById("sidebar-vars");if(sidebarVars){window.sidebarCurrent={name:sidebarVars.attributes["data-name"].value,ty:sidebarVars.attributes["data-ty"].value,relpath:sidebarVars.attributes["data-relpath"].value,}}}());function getVirtualKey(ev){if("key"in ev&&typeof ev.key!="undefined"){return ev.key}var c=ev.charCode||ev.keyCode;if(c==27){return"Escape"}return String.fromCharCode(c)}var THEME_PICKER_ELEMENT_ID="theme-picker";var THEMES_ELEMENT_ID="theme-choices";function getThemesElement(){return document.getElementById(THEMES_ELEMENT_ID)}function getThemePickerElement(){return document.getElementById(THEME_PICKER_ELEMENT_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function showThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="block";themePicker.style.borderBottomRightRadius="0";themePicker.style.borderBottomLeftRadius="0"}function hideThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="none";themePicker.style.borderBottomRightRadius="3px";themePicker.style.borderBottomLeftRadius="3px"}(function(){var themeChoices=getThemesElement();var themePicker=getThemePickerElement();var availableThemes=["ayu","dark","light"];function switchThemeButtonState(){if(themeChoices.style.display==="block"){hideThemeButtonState()}else{showThemeButtonState()}}function handleThemeButtonsBlur(e){var active=document.activeElement;var related=e.relatedTarget;if(active.id!==THEME_PICKER_ELEMENT_ID&&(!active.parentNode||active.parentNode.id!==THEMES_ELEMENT_ID)&&(!related||(related.id!==THEME_PICKER_ELEMENT_ID&&(!related.parentNode||related.parentNode.id!==THEMES_ELEMENT_ID)))){hideThemeButtonState()}}themePicker.onclick=switchThemeButtonState;themePicker.onblur=handleThemeButtonsBlur;availableThemes.forEach(function(item){var but=document.createElement("button");but.textContent=item;but.onclick=function(){switchTheme(window.currentTheme,window.mainTheme,item,true);useSystemTheme(false)};but.onblur=handleThemeButtonsBlur;themeChoices.appendChild(but)})}());(function(){"use strict";window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:function(){return document.getElementById("search")},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:function(){if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},focus:function(){searchState.input.focus()},defocus:function(){searchState.input.blur()},showResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(main,"hidden");removeClass(search,"hidden");searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=searchState.titleBeforeSearch;if(searchState.browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:function(){var params={};window.location.search.substring(1).split("&").map(function(s){var pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},putBackSearch:function(search_input){var search=searchState.outputElement();if(search_input.value!==""&&hasClass(search,"hidden")){searchState.showResults(search);if(searchState.browserSupportsHistoryApi()){var extra="?search="+encodeURIComponent(search_input.value);history.replaceState(search_input.value,"",getNakedUrl()+extra+window.location.hash)}document.title=searchState.title}},browserSupportsHistoryApi:function(){return window.history&&typeof window.history.pushState==="function"},setup:function(){var search_input=searchState.input;if(!searchState.input){return}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS);loadScript(window.searchIndexJS)}}search_input.addEventListener("focus",function(){searchState.putBackSearch(this);search_input.origPlaceholder=searchState.input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});search_input.addEventListener("blur",function(){search_input.placeholder=searchState.input.origPlaceholder});search_input.removeAttribute('disabled');searchState.addCrateDropdown(window.ALL_CRATES);var params=searchState.getQueryStringParams();if(params.search!==undefined){var search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search);loadSearch()}},addCrateDropdown:function(crates){var elem=document.getElementById("crate-search");if(!elem){return}var savedCrate=getSettingValue("saved-filter-crate");for(var i=0,len=crates.length;i0){return tmp}}return null}function showSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){addClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];if(sidebar){addClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(!filler){var div=document.createElement("div");div.id="sidebar-filler";sidebar.appendChild(div)}}}function hideSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){removeClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(filler){filler.remove()}document.getElementsByTagName("body")[0].style.marginTop=""}var toggleAllDocsId="toggle-all-docs";var main=document.getElementById("main");var savedHash="";function handleHashes(ev){var elem;var search=searchState.outputElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){searchState.hideResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(searchState.browserSupportsHistoryApi()){history.replaceState(hash,"",getNakedUrl()+window.location.search+"#"+hash)}elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function getHelpElement(build){if(build){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display){help=help?help:getHelpElement(true);if(hasClass(help,"hidden")){ev.preventDefault();removeClass(help,"hidden");addClass(document.body,"blur")}}else{help=help?help:getHelpElement(false);if(help&&!hasClass(help,"hidden")){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=searchState.outputElement();if(help&&!hasClass(help,"hidden")){displayHelp(false,ev,help)}else if(search&&!hasClass(search,"hidden")){searchState.clearInputTimeout();ev.preventDefault();searchState.hideResults(search)}searchState.defocus();hideThemeButtonState()}var disableShortcuts=getSettingValue("disable-shortcuts")==="true";function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":displayHelp(false,ev);ev.preventDefault();searchState.focus();break;case"+":case"-":ev.preventDefault();toggleAllDocs();break;case"?":displayHelp(true,ev);break;case"t":case"T":displayHelp(false,ev);ev.preventDefault();var themePicker=getThemePickerElement();themePicker.click();themePicker.focus();break;default:if(getThemePickerElement().parentNode.contains(ev.target)){handleThemeKeyDown(ev)}}}}function handleThemeKeyDown(ev){var active=document.activeElement;var themes=getThemesElement();switch(getVirtualKey(ev)){case"ArrowUp":ev.preventDefault();if(active.previousElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id===THEME_PICKER_ELEMENT_ID&&themes.style.display==="none"){ev.preventDefault();showThemeButtonState();themes.firstElementChild.focus()}break;case"Home":ev.preventDefault();themes.firstElementChild.focus();break;case"End":ev.preventDefault();themes.lastElementChild.focus();break}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);(function(){var x=document.getElementsByClassName("version-selector");if(x.length>0){x[0].onchange=function(){var i,match,url=document.location.href,stripped="",len=window.rootPath.match(/\.\.\//g).length+1;for(i=0;i .in-band > .trait").textContent;var baseIdName="impl-"+traitName+"-";var libs=Object.getOwnPropertyNames(imp);for(var i=0,llength=libs.length;ithe rustdoc book.";var container=document.createElement("div");var shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["T","Focus the theme picker menu"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(function(x){return"
"+x[0].split(" ").map(function(y,index){return(index&1)===0?""+y+"":" "+y+" "}).join("")+"
"+x[1]+"
"}).join("");var div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

Keyboard Shortcuts

"+shortcuts+"
";var infos=["Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + * -> vec)","Search multiple things at once by splitting your query with comma (e.g., \ + str,u8 or String,struct:Vec,test)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for items inside another one by searching for a path: vec::Vec",].map(function(x){return"

"+x+"

"}).join("");var div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

Search Tricks

"+infos;container.appendChild(book_info);container.appendChild(div_shortcuts);container.appendChild(div_infos);popup.appendChild(container);insertAfter(popup,searchState.outputElement());buildHelperPopup=function(){}};onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){var reset_button_timeout=null;window.copy_path=function(but){var parent=but.parentElement;var path=[];onEach(parent.childNodes,function(child){if(child.tagName==='A'){path.push(child.textContent)}});var el=document.createElement('textarea');el.value=path.join('::');el.setAttribute('readonly','');el.style.position='absolute';el.style.left='-9999px';document.body.appendChild(el);el.select();document.execCommand('copy');document.body.removeChild(el);but.children[0].style.display='none';var tmp;if(but.childNodes.length<2){tmp=document.createTextNode('✓');but.appendChild(tmp)}else{onEachLazy(but.childNodes,function(e){if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent='✓'}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent='';reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/doc/normalize.css b/doc/normalize.css new file mode 100644 index 0000000..469959f --- /dev/null +++ b/doc/normalize.css @@ -0,0 +1,2 @@ + /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none} \ No newline at end of file diff --git a/doc/noscript.css b/doc/noscript.css new file mode 100644 index 0000000..aea68ef --- /dev/null +++ b/doc/noscript.css @@ -0,0 +1 @@ + #main .attributes{margin-left:0 !important;}#copy-path{display:none;} \ No newline at end of file diff --git a/doc/noto-sans-kr-v13-korean-regular-LICENSE.txt b/doc/noto-sans-kr-v13-korean-regular-LICENSE.txt new file mode 100644 index 0000000..922d5fd --- /dev/null +++ b/doc/noto-sans-kr-v13-korean-regular-LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2014, 2015 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/doc/noto-sans-kr-v13-korean-regular.woff b/doc/noto-sans-kr-v13-korean-regular.woff new file mode 100644 index 0000000..01d6b6b Binary files /dev/null and b/doc/noto-sans-kr-v13-korean-regular.woff differ diff --git a/doc/rust-logo.png b/doc/rust-logo.png new file mode 100644 index 0000000..74b4bd6 Binary files /dev/null and b/doc/rust-logo.png differ diff --git a/doc/rustdoc.css b/doc/rustdoc.css new file mode 100644 index 0000000..29c1a7e --- /dev/null +++ b/doc/rustdoc.css @@ -0,0 +1 @@ + @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Noto Sans KR';src:url("noto-sans-kr-v13-korean-regular.woff") format("woff");font-display:swap;unicode-range:U+A960-A97F,U+AC00-D7AF,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:16px/1.4 "Source Serif 4","Noto Sans KR",serif;margin:0;position:relative;padding:10px 15px 20px 15px;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5em;}h2{font-size:1.4em;}h3{font-size:1.3em;}h1,h2,h3,h4{font-weight:500;margin:20px 0 15px 0;padding-bottom:6px;}h1.fqn{display:flex;border-bottom:1px dashed;margin-top:0;padding-left:1px;}h1.fqn>.in-band>a:hover{text-decoration:underline;}h2,h3,h4{border-bottom:1px solid;}h3.code-header,h4.code-header{font-size:1em;font-weight:600;border:none;padding:0;margin:0;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}.impl,.method.trait-impl,.type.trait-impl,.associatedconstant.trait-impl,.associatedtype.trait-impl{padding-left:15px;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,.sidebar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,div.item-list .out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,details.undocumented>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main>ul.docblock>li>a{font-family:"Fira Sans",Arial,sans-serif;}.content ul.crate a.crate{font-size:16px/1.6;}ol,ul{padding-left:25px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.6em;}p{margin:0 0 .6em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.1em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.type-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{margin-top:50px;max-width:none;overflow:visible;margin-left:0px;}nav.sub{font-size:16px;text-transform:uppercase;}.sidebar{width:200px;position:fixed;left:0;top:0;bottom:0;overflow:auto;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.sidebar .block>ul>li{margin-right:-10px;}.content,nav{max-width:960px;}.hidden{display:none !important;}.logo-container{height:100px;width:100px;position:relative;margin:20px auto;display:block;margin-top:10px;}.logo-container>img{max-width:100px;max-height:100px;height:100%;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;}.sidebar .location{border:1px solid;font-size:17px;margin:30px 10px 20px 10px;text-align:center;word-wrap:break-word;font-weight:inherit;padding:0;}.sidebar .version{font-size:15px;text-align:center;border-bottom:1px solid;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.location a:hover{text-decoration:underline;}.block{padding:0;margin-bottom:14px;}.block h2,.block h3{text-align:center;}.block ul,.block li{margin:0 10px;padding:0;list-style:none;}.block a{display:block;text-overflow:ellipsis;overflow:hidden;line-height:15px;padding:7px 5px;font-size:14px;font-weight:300;transition:border 500ms ease-out;}.sidebar-title{border-top:1px solid;border-bottom:1px solid;text-align:center;font-size:17px;margin-bottom:5px;font-weight:inherit;padding:0;}.sidebar-links{margin-bottom:15px;}.sidebar-links>a{padding-left:10px;width:100%;}.sidebar-menu{display:none;}.content{padding:15px 0;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.example-wrap>pre.rust a:hover{text-decoration:underline;}.rustdoc:not(.source) .example-wrap>pre:not(.line-number){width:100%;overflow-x:auto;}.rustdoc .example-wrap>pre{margin:0;}#search{margin-left:230px;position:relative;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom:1px solid;}.top-doc .docblock h1{font-size:1.3em;}.top-doc .docblock h2{font-size:1.15em;}.top-doc .docblock h3,.top-doc .docblock h4,.top-doc .docblock h5{font-size:1em;}.docblock h1{font-size:1em;}.docblock h2{font-size:0.95em;}.docblock h3,.docblock h4,.docblock h5{font-size:0.9em;}.docblock{margin-left:24px;position:relative;}.content .out-of-band{flex-grow:0;text-align:right;font-size:23px;margin:0px;padding:0 0 0 12px;font-weight:normal;}.method>.code-header,.trait-impl>.code-header,.invisible>.code-header{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;}.in-band>code,.in-band>.code-header{display:inline-block;}#main{position:relative;}#main>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.1em;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);overflow-x:auto;display:block;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1em;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8em;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:90%;}.content .item-info{position:relative;margin-left:33px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:25px;position:absolute;top:-6px;left:-19px;}.content .impl-items .method,.content .impl-items>.type,.impl-items>.associatedconstant,.impl-items>.associatedtype,.content .impl-items details>summary>.type,.impl-items details>summary>.associatedconstant,.impl-items details>summary>.associatedtype{margin-left:20px;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main>.item-info{margin-top:0;}nav:not(.sidebar){border-bottom:1px solid;padding-bottom:10px;margin-bottom:10px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}nav.sub,.content{margin-left:230px;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:0;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.anchor::before{content:'§';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.invisible>.srclink,.method>.code-header+.srclink{position:absolute;top:0;right:0;font-size:17px;font-weight:normal;}.block a.current.crate{font-weight:500;}.item-table{display:grid;column-gap:1.2rem;row-gap:0.0rem;grid-template-columns:auto 1fr;justify-items:start;}.item-left,.item-right{display:block;}.item-left{grid-column:1;}.item-right{grid-column:2;}.search-container{position:relative;}.search-container>div{display:inline-flex;width:calc(100% - 63px);}#crate-search{min-width:115px;margin-top:5px;padding:6px;padding-right:19px;flex:none;border:0;border-right:0;border-radius:4px 0 0 4px;outline:none;cursor:pointer;border-right:1px solid;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;}.search-container>.top-button{position:absolute;right:0;top:10px;}.search-input{-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:none;border-radius:1px;margin-top:5px;padding:10px 16px;font-size:17px;transition:border-color 300ms ease;transition:border-radius 300ms ease-in-out;transition:box-shadow 300ms ease-in-out;width:100%;}#crate-search+.search-input{border-radius:0 1px 1px 0;width:calc(100% - 32px);}.search-input:focus{border-radius:2px;border:0;outline:0;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help>div>span{text-align:center;display:block;margin:10px 0;font-size:18px;border-bottom:1px solid #ccc;padding-bottom:4px;margin-bottom:6px;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.item-info .stab{display:table;}.stab{border-width:1px;border-style:solid;padding:3px;margin-bottom:5px;font-size:90%;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.5em;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:80%;line-height:1.2;margin-bottom:0;margin-left:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.impl-items .since,.impl .since,.methods .since{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-size:17px;font-weight:normal;}.rightside{float:right;}.has-srclink{font-size:16px;margin-bottom:12px;justify-content:space-between;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:130%;top:5px;right:5px;z-index:1;}a.test-arrow:hover{text-decoration:none;}.section-header:hover a:before{position:absolute;left:-25px;padding-right:10px;content:'\2002\00a7\2002';}.section-header:hover a{text-decoration:none;}.section-header a{color:inherit;}.code-attribute{font-weight:300;}.since+.srclink{padding-left:10px;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:20px;margin-right:5px;}.sub-variant,.sub-variant>h3{margin-top:0px !important;padding-top:1px;}#main .sub-variant>h3{font-size:15px;margin-left:25px;margin-bottom:5px;}.sub-variant>div{margin-left:20px;margin-bottom:10px;}.sub-variant>div>span{display:block;position:relative;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.docblock>.section-header:first-child{margin-left:15px;margin-top:0;}.docblock>.section-header:first-child:hover>a:before{left:-10px;}:target>code,:target>.code-header{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:16px;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:20px;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:16px;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:19px;font-weight:600;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:20px;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:18px;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:16px;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#all-types{text-align:center;border:1px solid;margin:0 10px;margin-bottom:10px;display:block;border-radius:7px;}#all-types>p{margin:5px 0;}#sidebar-toggle{position:fixed;top:30px;left:300px;z-index:10;padding:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;transition:left .5s;font-size:1.2em;border:1px solid;border-left:0;}#source-sidebar{position:fixed;top:0;bottom:0;left:0;width:300px;z-index:1;overflow:auto;transition:left .5s;border-right:1px solid;}#source-sidebar>.title{font-size:1.5em;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:211px;top:19px;}.theme-picker button{outline:none;}#settings-menu,#help-button{position:absolute;top:10px;}#settings-menu{right:0;outline:none;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:4px;width:27px;height:29px;border:1px solid;border-radius:3px;cursor:pointer;}#help-button{right:30px;font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:17px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;box-shadow:inset 0 -1px 0;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:16px;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:19px;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:17px;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main>ul{padding-left:10px;}#main>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.7em;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary,details.undocumented>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker,details.undocumented>summary::-webkit-details-marker,details.undocumented>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"";cursor:pointer;width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;vertical-align:middle;opacity:.5;}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:16px;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-23px;top:3px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,.undocumented>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-2px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle,details.undocumented{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;content:"";}details.rustdoc-toggle[open] >summary::after,details.rustdoc-toggle[open] >summary.hideme::after{content:"Collapse";}details.undocumented>summary::before{padding-left:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;content:"Show hidden undocumented items";cursor:pointer;font-size:16px;font-weight:300;opacity:.5;}details.undocumented>summary:focus::before,details.undocumented>summary:hover::before{opacity:1;}details.undocumented[open] >summary::before{padding-left:17px;height:max(17px,1.1em);background-repeat:no-repeat background-position:top left;content:"Hide undocumented items";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}}@media (max-width:700px){body{padding-top:0px;}.rustdoc>.sidebar{height:45px;min-height:40px;margin:0;margin-left:-15px;padding:0 15px;position:static;z-index:11;}.sidebar>.location{float:right;margin:0px;margin-top:2px;padding:3px 10px 1px 10px;min-height:39px;background:inherit;text-align:left;font-size:24px;}.sidebar .location:empty{padding:0;}.sidebar .logo-container{width:35px;height:35px;margin-top:5px;margin-bottom:5px;float:left;margin-left:50px;}.sidebar .logo-container>img{max-width:35px;max-height:35px;}.sidebar-menu{position:fixed;z-index:10;font-size:2rem;cursor:pointer;width:45px;left:0;text-align:center;display:block;border-bottom:1px solid;border-right:1px solid;height:45px;}.rustdoc.source>.sidebar>.sidebar-menu{display:none;}.sidebar-elems{position:fixed;z-index:1;top:45px;bottom:0;width:246px;left:-246px;overflow-y:auto;border-right:1px solid;}.sidebar>.block.version{overflow:hidden;border-bottom:none;margin-bottom:0;height:100%;padding-left:12px;}.sidebar>.block.version>div.narrow-helper{float:left;width:1px;height:100%;}.sidebar>.block.version>p{margin:0;min-width:55px;display:flex;align-items:center;height:100%;}nav.sub{width:calc(100% - 32px);float:right;}.content{margin-left:0px;}#main,#search{margin-top:45px;padding:0;}#search{margin-left:0;}.anchor{display:none !important;}.theme-picker{left:10px;top:54px;z-index:1;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}.sidebar.mobile{position:fixed;width:100%;margin-left:0;background-color:rgba(0,0,0,0);height:100%;}.sidebar.mobile>div.version{overflow:hidden;max-height:33px;}.sidebar{width:calc(100% + 30px);}.show-it,.sidebar-elems:focus-within{z-index:2;left:0;}.show-it>.block.items{margin:8px 0;}.show-it>.block.items>ul{margin:0;}.show-it>.block.items>ul>li{text-align:center;margin:2px 0;}.show-it>.block.items>ul>li>a{font-size:21px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main>details.rustdoc-toggle>summary::before,#main>div>details.rustdoc-toggle>summary::before{left:-11px;}#all-types{margin:10px;}#sidebar-toggle{top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;}#source-sidebar{z-index:11;}#main>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-container>div{width:calc(100% - 32px);}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main,#search{margin-top:100px;}#main>table:not(.table-display) td{word-break:break-word;width:50%;}.search-container>div{display:block;width:calc(100% - 37px);}#crate-search{width:100%;border-radius:4px;border:0;}#crate-search+.search-input{width:calc(100% + 71px);margin-left:-36px;}#theme-picker,#settings-menu{padding:5px;width:31px;height:31px;}#theme-picker{margin-top:-2px;}#settings-menu{top:7px;}.docblock{margin-left:12px;}}details.undocumented[open] >summary::before,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{background-image:url(toggle-minus.svg);}details.undocumented>summary::before,details.rustdoc-toggle>summary::before{background-image:url(toggle-plus.svg);} \ No newline at end of file diff --git a/doc/search-index.js b/doc/search-index.js new file mode 100644 index 0000000..735895b --- /dev/null +++ b/doc/search-index.js @@ -0,0 +1,4 @@ +var searchIndex = JSON.parse('{\ +"epicbox":{"doc":"","t":[0,14,5,0,0,0,0,4,4,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,3,3,3,17,17,17,6,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,12,12,12,11,12,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,0,0,0,0,0,0,0,0,0,0,0,3,13,13,4,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,14,5,5,5,11,11,11,11,11,11,11,11,11,12,12,12,12,12,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,4,13,13,13,13,13,13,3,13,13,13,13,13,13,13,8,4,13,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,17,17,13,13,17,17,13,13,3,13,17,13,17,17,3,3,3,13,13,17,13,17,13,17,13,17,13,17,17,13,13,4,17,17,17,13,13,13,4,4,13,13,13,13,3,17,13,17,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,3,11,11,11,12,11,11,11,12,11,12,11,11,11,11,11,8,10,13,13,6,13,13,13,13,4,13,13,17,3,3,13,13,3,13,3,13,13,13,3,4,3,4,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,12,12,11,11,5,11,11,11,11,11,12,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,4,4,13,13,13,13,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,12,11,12,11,11,12,12,11,11,11,11,11,11,3,11,11,11,11,11,11,11,12,11,11,11,12,11,11,11,11,3,3,7,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,12,12,11,11,11,11,11,11,11,11,11,12,12,11,12,12,11,11,11,11,11,12,11,11,11,11,11,11,11,12,11,11,12,12,11,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["broker","header_list","main","server","broker_protocol","rabbit_broker","stomp","BrokerRequest","BrokerResponse","Message","PostMessage","Subscribe","Unsubscribe","borrow","borrow","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","fmt","fmt","from","from","into","into","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","id","id","message_expiration_in_seconds","payload","reply_to","response_sender","subject","subject","payload","reply_to","subject","Broker","BrokerSession","Consumer","DEFAULT_MESSAGE_EXPIRATION","DEFAULT_QUEUE_EXPIRATION","REPLY_TO_HEADER_NAME","Session","address","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","borrow_replacement","clone","clone_any","clone_any_send","clone_any_send_sync","clone_any_sync","clone_boxed","clone_boxed","clone_into","consumers","from","from","from","into","into","into","into_future","new","new","on_connected","on_message","password","poll","publish","self_address_mut","self_address_mut","sender","session","session_number","start","subject","subject_to_consumer_id_lookup","subscribe","subscription_id","subscription_id_to_consumer_id_lookup","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unsubscribe","unsubscribe_by_subject","username","vzip","vzip","vzip","codec","connection","frame","header","message_builder","option_setter","session","session_builder","subscription","subscription_builder","transaction","Codec","ContentLength","Invalid","ParseError","UnknownCommand","Utf8","as_fail","borrow","borrow","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","decode","encode","fmt","fmt","from","from","get_line","into","into","opt_nr","parse_command","parse_header","parse_transmission","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","0","0","0","1","1","Credentials","HeartBeat","OwnedCredentials","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","borrow_replacement","clone","clone","clone","clone_any","clone_any","clone_any","clone_any_send","clone_any_send","clone_any_send","clone_any_send_sync","clone_any_send_sync","clone_any_send_sync","clone_any_sync","clone_any_sync","clone_any_sync","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_into","clone_into","clone_into","from","from","from","from","heartbeat","into","into","into","login","passcode","select_heartbeat","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","set_option","set_option","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Abort","Ack","Begin","Command","Commit","CompleteFrame","Connect","Connected","Disconnect","Error","Frame","HeartBeat","Message","Nack","Receipt","Send","Stomp","Subscribe","ToFrameBody","Transmission","Unsubscribe","abort","ack","as_str","begin","body","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","borrow_replacement","clone","clone","clone_any","clone_any","clone_any_send","clone_any_send","clone_any_send_sync","clone_any_send_sync","clone_any_sync","clone_any_sync","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_into","clone_into","command","commit","connect","count_bytes","disconnect","empty","fmt","fmt","fmt","fmt","fmt","from","from","from","headers","into","into","into","nack","self_address_mut","self_address_mut","self_address_mut","self_address_mut","send","subscribe","to_frame_body","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unsubscribe","vzip","vzip","vzip","write","write","0","0","0","0","1","ACCEPT_VERSION","ACK","AcceptVerion","Ack","CONTENT_LENGTH","CONTENT_TYPE","ContentLength","ContentType","Custom","Custom","DESTINATION","Destination","HEART_BEAT","HOST","Header","HeaderList","HeaderName","HeartBeat","Host","ID","Id","LOGIN","Login","MESSAGE_ID","MessageId","PASSCODE","Passcode","RECEIPT","RECEIPT_ID","Receipt","ReceiptID","Repr","SERVER","SESSION","SUBSCRIPTION","Server","Session","Standard","StandardHeader","StompVersion","Stomp_v1_0","Stomp_v1_1","Stomp_v1_2","Subscription","SuppressedHeader","TRANSACTION","Transaction","VERSION","Version","as_str","as_str","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","clone","clone","clone","clone","clone","clone","clone","clone_any","clone_any","clone_any","clone_any","clone_any","clone_any","clone_any","clone_any_send","clone_any_send","clone_any_send","clone_any_send","clone_any_send","clone_any_send","clone_any_send","clone_any_send_sync","clone_any_send_sync","clone_any_send_sync","clone_any_send_sync","clone_any_send_sync","clone_any_send_sync","clone_any_send_sync","clone_any_sync","clone_any_sync","clone_any_sync","clone_any_sync","clone_any_sync","clone_any_sync","clone_any_sync","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","concat","decode_value","drain","encode_value","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_str","from_str","from_str","get","get_accept_version","get_heart_beat","get_key","get_raw","get_value","hash","hash","hash","hash","headers","inner","into","into","into","into","into","into","into","into","iter","ne","ne","ne","new","new","pop","push","retain","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","self_address_mut","set_option","set_option","set_option","set_option","set_option","set_option","standard_headers","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_capacity","0","0","MessageBuilder","borrow","borrow_mut","borrow_replacement","frame","from","into","new","receipt_request","send","session","try_from","try_into","type_id","vzip","with","OptionSetter","set_option","ClosedByOtherSide","ConnectFailed","ConnectFuture","Connected","Connected","Connecting","Disconnected","DisconnectionReason","Error","Failed","GRACE_PERIOD_MULTIPLIER","GenerateReceipt","HeartBeatDelay","HeartBeatTimeout","Message","OutstandingReceipt","Receipt","ReceiptRequest","RecvFailed","Requested","SendFailed","Session","SessionEvent","SessionState","StreamState","Subscriptionless","Unknown","_send","acknowledge_frame","begin_transaction","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","config","delay","disconnect","events","fmt","fmt","from","from","from","from","from","from","from","from","from","generate_receipt_id","generate_subscription_id","generate_transaction_id","handle_receipt","id","interval","into","into","into","into","into","into","into","into","into","into_future","message","new","new","new","new","new","next_receipt_id","next_subscription_id","next_transaction_id","on_connected_frame_received","on_disconnect","on_message","on_recv_data","on_stream_ready","original_frame","outstanding_receipts","poll","poll","poll_heartbeat","poll_stream","poll_stream_complete","register_rx_heartbeat_timeout","register_tx_heartbeat_timeout","reply_to_heartbeat","rx_heartbeat","send","send_frame","set_option","set_option","state","stream","subscription","subscriptions","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_heartbeat","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unsubscribe","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","ack_mode","destination","frame","id","original","receipt","0","0","SessionBuilder","SessionConfig","borrow","borrow","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","build","clone","clone_any","clone_any_send","clone_any_send_sync","clone_any_sync","clone_boxed","clone_boxed","clone_into","config","credentials","from","from","headers","heartbeat","into","into","new","self_address_mut","self_address_mut","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","with","Ack","AckMode","AckOrNack","Auto","Client","ClientIndividual","Nack","Subscription","ack_mode","as_str","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","borrow_replacement","clone","clone","clone_any","clone_any","clone_any_send","clone_any_send","clone_any_send_sync","clone_any_send_sync","clone_any_sync","clone_any_sync","clone_boxed","clone_boxed","clone_boxed","clone_boxed","clone_into","clone_into","destination","fmt","from","from","from","headers","id","into","into","into","new","self_address_mut","self_address_mut","self_address_mut","self_address_mut","set_option","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","SubscriptionBuilder","ack_mode","borrow","borrow_mut","borrow_replacement","destination","from","headers","into","new","receipt_request","session","start","try_from","try_into","type_id","vzip","with","Transaction","abort","begin","borrow","borrow_mut","borrow_replacement","commit","from","id","into","message","new","session","try_from","try_into","type_id","vzip","AsyncServer","BrokerResponseHandler","MAX_SUBSCRIPTIONS","Server","SignedPayload","Subscription","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","borrow_replacement","challenge","deserialize","drop","epicbox_domain","epicbox_port","epicbox_protocol_unsecure","error","fmt","from","from","from","from","from","get_challenge","get_challenge_raw","id","id","init","inner","inner","into","into","into","into","into","nats_sender","new","ok","on_close","on_error","on_message","on_open","on_request","out","post_slate","post_slate_federated","response_handlers_sender","response_receiver","serialize","signature","str","subscribe","subscriptions","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unsubscribe","verify_signature","vzip","vzip","vzip","vzip","vzip"],"q":["epicbox","","","","epicbox::broker","","","epicbox::broker::broker_protocol","","","","","","","","","","","","","","","","","","","","","","","","","","epicbox::broker::broker_protocol::BrokerRequest","","","","","","","","epicbox::broker::broker_protocol::BrokerResponse","","","epicbox::broker::rabbit_broker","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","epicbox::broker::stomp","","","","","","","","","","","epicbox::broker::stomp::codec","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","epicbox::broker::stomp::codec::ParseError","epicbox::broker::stomp::connection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","epicbox::broker::stomp::frame","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","epicbox::broker::stomp::frame::Transmission","epicbox::broker::stomp::header","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","epicbox::broker::stomp::header::Repr","","epicbox::broker::stomp::message_builder","","","","","","","","","","","","","","","","epicbox::broker::stomp::option_setter","","epicbox::broker::stomp::session","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","epicbox::broker::stomp::session::DisconnectionReason","","","epicbox::broker::stomp::session::SessionEvent","","","","","","","","","","epicbox::broker::stomp::session::StreamState","","epicbox::broker::stomp::session_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","epicbox::broker::stomp::subscription","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","epicbox::broker::stomp::subscription_builder","","","","","","","","","","","","","","","","","","epicbox::broker::stomp::transaction","","","","","","","","","","","","","","","","","epicbox::server","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,1,2,2,2,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,4,5,5,5,3,3,5,6,6,6,0,0,0,0,0,0,0,7,7,8,9,7,8,9,7,8,9,9,9,9,9,9,9,9,9,9,7,8,9,7,8,9,9,7,8,9,9,7,9,9,9,9,8,9,9,7,8,9,9,8,9,9,7,8,9,7,8,9,7,8,9,9,9,7,7,8,9,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,10,10,10,11,10,11,10,11,10,11,11,10,10,11,10,0,11,10,0,0,0,0,10,11,10,11,10,11,10,11,10,12,13,14,13,14,0,0,0,13,14,15,13,14,15,13,14,15,13,14,15,13,14,15,13,14,15,13,14,15,13,14,15,13,13,14,14,15,15,13,14,15,13,14,15,15,0,13,14,15,15,15,0,13,13,14,14,15,15,13,14,13,14,15,13,14,15,13,14,15,13,14,15,13,14,15,16,16,16,0,16,17,16,16,16,16,0,17,16,16,16,16,16,16,0,0,16,18,18,16,18,18,16,18,17,16,18,17,16,18,17,16,18,16,18,16,18,16,18,16,18,16,16,18,18,16,18,18,18,18,18,18,18,16,16,18,18,17,16,18,17,18,16,18,17,18,16,16,18,18,18,18,19,16,18,16,18,16,18,17,16,18,17,16,18,17,18,16,18,17,18,17,20,21,22,23,22,0,0,24,24,0,0,24,24,0,25,0,24,0,0,0,0,0,24,24,0,24,0,24,0,24,0,24,0,0,24,24,0,0,0,0,24,24,25,0,0,26,26,26,24,0,0,24,0,24,27,24,21,28,22,27,25,23,24,26,21,28,22,27,25,23,24,26,21,28,22,27,25,23,24,26,28,22,27,25,23,24,26,28,22,27,25,23,24,26,28,22,27,25,23,24,26,28,22,27,25,23,24,26,28,22,27,25,23,24,26,28,28,22,22,27,27,25,25,23,23,24,24,26,26,28,22,27,25,23,24,26,28,22,28,22,27,25,23,24,27,25,23,24,28,22,27,25,23,24,21,28,22,27,25,23,24,26,27,24,26,28,28,28,22,22,22,27,25,23,24,28,27,21,28,22,27,25,23,24,26,28,27,25,23,28,22,28,28,28,28,28,22,22,27,27,25,25,23,23,24,24,26,26,21,21,21,22,22,22,0,28,22,27,25,23,24,26,21,28,22,27,25,23,24,26,21,28,22,27,25,23,24,26,21,28,22,27,25,23,24,26,21,28,22,27,25,23,24,26,28,29,30,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,32,33,33,0,34,35,34,35,0,35,34,0,0,0,33,35,0,35,0,33,33,33,0,0,0,0,35,35,36,36,36,37,38,39,40,41,36,34,33,35,37,38,39,40,41,36,34,33,35,37,38,39,40,41,36,34,33,35,36,40,36,36,33,35,37,38,39,40,41,36,34,33,35,36,36,36,36,39,40,37,38,39,40,41,36,34,33,35,40,36,37,39,40,41,36,41,41,41,36,36,36,36,36,37,41,40,36,0,36,36,36,36,36,41,36,36,38,38,36,36,36,41,37,38,39,40,41,36,34,33,35,37,38,39,40,41,36,34,33,35,41,37,38,39,40,41,36,34,33,35,36,37,38,39,40,41,36,34,33,35,42,43,44,45,46,47,48,49,49,49,50,50,50,51,52,0,0,53,54,53,54,53,54,53,54,54,54,54,54,54,54,54,53,54,53,54,54,54,53,54,53,54,54,54,53,54,53,54,53,54,53,54,53,55,0,0,56,56,56,55,0,57,56,57,56,55,57,56,55,57,56,55,56,55,56,55,56,55,56,55,56,55,56,56,55,55,56,55,57,56,57,56,55,57,57,57,56,55,57,56,56,55,55,56,56,55,57,56,55,57,56,55,57,56,55,57,56,55,0,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,0,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,0,0,0,0,0,0,60,61,62,63,64,60,61,62,63,64,60,61,62,63,64,64,64,61,61,61,61,61,64,60,61,62,63,64,61,61,61,62,61,60,61,60,61,62,63,64,61,61,61,61,61,61,61,61,62,61,61,61,60,64,64,64,61,61,60,61,62,63,64,60,61,62,63,64,60,61,62,63,64,61,61,60,61,62,63,64],"f":[null,null,[[]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["brokersession",3]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["string",3],["socketaddr",4]],["broker",3]],[[["brokerresponse",4],["string",3],["unboundedsender",3,["brokerresponse"]]],["consumer",3]],[[]],[[["frame",3]]],null,[[],["poll",6]],[[["str",15],["option",4,["u32"]],["u32",15]]],[[]],[[]],null,null,null,[[],[["unboundedsender",3,["brokerrequest"]],["result",6,["unboundedsender"]]]],null,null,[[["brokerresponse",4],["string",3],["unboundedsender",3,["brokerresponse"]]]],null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15]]],[[["str",15]]],null,[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["fail",8]],[[]],[[]],[[]],[[]],[[]],[[]],[[["bytesmut",3]],[["ioerror",3],["option",4,["transmission"]],["result",4,["option","ioerror"]]]],[[["transmission",4],["bytesmut",3]],[["ioerror",3],["result",4,["ioerror"]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],[["parseerror",4],["poll",6,["parseerror"]]]],[[]],[[]],null,[[],[["result",4,["command","parseerror"]],["parseerror",4],["command",4]]],[[],[["header",3],["poll",6,["header","parseerror"]],["parseerror",4]]],[[],[["parseerror",4],["poll",6,["parseerror"]]]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["heartbeat",3]],[[],["credentials",3]],[[],["ownedcredentials",3]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["credentials",3]],["ownedcredentials",3]],[[["u32",15]],["u32",15]],[[]],[[]],[[]],null,null,[[["u32",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["sessionbuilder",3]],["sessionbuilder",3]],[[["sessionbuilder",3]],["sessionbuilder",3]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["str",15]]],[[["str",15]]],[[],["str",15]],[[["str",15]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["command",4]],[[],["frame",3]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[]],[[]],null,[[["str",15]]],[[["u32",15]]],[[],["usize",15]],[[]],[[["headerlist",3],["command",4]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[["str",15]]],[[]],[[]],[[]],[[]],[[["str",15]]],[[["str",15],["ackmode",4]]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15]]],[[]],[[]],[[]],[[["bytesmut",3]]],[[["bytesmut",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["str",15]],[[],["str",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["headerlist",3]],[[],["header",3]],[[],["headername",3]],[[],["repr",4]],[[],["custom",3]],[[],["standardheader",4]],[[],["stompversion",4]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["headerlist",3]]],[[["str",15]],["string",3]],[[]],[[["str",15]],["string",3]],[[["headername",3]],["bool",15]],[[["repr",4]],["bool",15]],[[["custom",3]],["bool",15]],[[["standardheader",4]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["str",15]]],[[["str",15]],["result",4]],[[["str",15]],["result",4]],[[["headername",3]],[["str",15],["option",4,["str"]]]],[[],[["option",4,["vec"]],["vec",3,["stompversion"]]]],[[],["option",4]],[[],["headername",3]],[[],["string",3]],[[],["str",15]],[[]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["iter",3,["header"]],["header",3]]],[[["headername",3]],["bool",15]],[[["repr",4]],["bool",15]],[[["custom",3]],["bool",15]],[[],["headerlist",3]],[[["headername",3],["str",15]],["header",3]],[[],[["header",3],["option",4,["header"]]]],[[["header",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["subscriptionbuilder",3]],["subscriptionbuilder",3]],[[["sessionbuilder",3]],["sessionbuilder",3]],[[["messagebuilder",3]],["messagebuilder",3]],[[["subscriptionbuilder",3]],["subscriptionbuilder",3]],[[["sessionbuilder",3]],["sessionbuilder",3]],[[["messagebuilder",3]],["messagebuilder",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["usize",15]],["headerlist",3]],null,null,null,[[]],[[]],[[]],null,[[]],[[]],[[["session",3],["frame",3]]],null,[[]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[],["messagebuilder",3]],null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["transmission",4]],["result",6]],[[["frame",3],["ackornack",4]]],[[],["transaction",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["u32",15]],[[],["u32",15]],[[],["u32",15]],[[["frame",3]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["str",15],["toframebody",8]],["messagebuilder",3]],[[["frame",3]]],[[["string",3]]],[[["u32",15]]],[[],["sessionstate",3]],[[["box",3,["future"]],["sessionconfig",3],["future",8]]],null,null,null,[[["frame",3]],["result",6]],[[["disconnectionreason",4]]],[[["frame",3]]],[[],["result",6]],[[]],null,null,[[],[["ioerror",3],["poll",6,["ioerror"]]]],[[],[["poll",6,["option"]],["option",4]]],[[["option",4,["heartbeatdelay"]],["heartbeatdelay",3]],[["ioerror",3],["poll",6,["ioerror"]]]],[[],[["async",4,["option"]],["option",4,["transmission"]]]],[[]],[[],["result",6]],[[],["result",6]],[[],["result",6]],null,[[["transmission",4]]],[[["frame",3]]],[[["subscriptionbuilder",3]],["subscriptionbuilder",3]],[[["messagebuilder",3]],["messagebuilder",3]],null,null,[[["str",15]],["subscriptionbuilder",3]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3,["future"]],["future",8]],["session",3]],[[],["sessionconfig",3]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[]],null,null,[[]],[[]],null,null,[[]],[[]],[[],["sessionbuilder",3]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[],["sessionbuilder",3]],null,null,null,null,null,null,null,null,null,[[],["str",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["ackmode",4]],[[],["ackornack",4]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["box",3,["cloneany","global"]],["cloneany",8],["global",3]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["box",3,["cloneany","global"]],["cloneany",8]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["box",3,["defaultfeatures","global"]],["defaultfeatures",8],["global",3]]],[[],[["global",3],["nonsyncfeatures",8],["box",3,["nonsyncfeatures","global"]]]],[[]],[[]],null,[[["formatter",3]],["result",6]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],[[["u32",15],["ackmode",4],["headerlist",3],["str",15]],["subscription",3]],[[]],[[]],[[]],[[]],[[["subscriptionbuilder",3]],["subscriptionbuilder",3]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],null,[[]],[[["string",3],["session",3]]],null,null,[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[],["subscriptionbuilder",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[["str",15],["toframebody",8]],["messagebuilder",3]],[[["session",3]],["transaction",3]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",4]],[[]],null,null,null,[[["epicboxerror",4]],["epicboxresponse",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["epicboxresponse",4]],[[],["str",15]],null,null,[[],[["unboundedsender",3,["brokerresponsehandler"]],["brokerresponsehandler",3]]],null,null,[[]],[[]],[[]],[[]],[[]],null,[[["sender",3],["unboundedsender",3,["brokerrequest"]],["unboundedsender",3,["brokerresponsehandler"]],["str",15],["brokerresponsehandler",3],["brokerrequest",4],["bool",15],["u16",15]],["asyncserver",3]],[[],["epicboxresponse",4]],[[["closecode",4],["str",15]]],[[["error",3]]],[[["message",4]],["wsresult",6]],[[["handshake",3]],["wsresult",6]],[[["request",3]],[["wsresult",6,["response"]],["response",3]]],null,[[["string",3],["option",4,["u32"]],["u32",15]],["epicboxresponse",4]],[[["string",3],["option",4,["u32"]],["epicboxaddress",3],["u32",15]],["epicboxresponse",4]],null,null,[[],["result",4]],null,null,[[["string",3]],["epicboxresponse",4]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["string",3]],["epicboxresponse",4]],[[["str",15]],["result",6]],[[]],[[]],[[]],[[]],[[]]],"p":[[4,"BrokerResponse"],[4,"BrokerRequest"],[13,"Subscribe"],[13,"Unsubscribe"],[13,"PostMessage"],[13,"Message"],[3,"Broker"],[3,"Consumer"],[3,"BrokerSession"],[4,"ParseError"],[3,"Codec"],[13,"UnknownCommand"],[3,"HeartBeat"],[3,"Credentials"],[3,"OwnedCredentials"],[4,"Command"],[4,"Transmission"],[3,"Frame"],[8,"ToFrameBody"],[13,"CompleteFrame"],[3,"SuppressedHeader"],[3,"Header"],[3,"Custom"],[4,"StandardHeader"],[4,"Repr"],[4,"StompVersion"],[3,"HeaderName"],[3,"HeaderList"],[13,"Standard"],[13,"Custom"],[3,"MessageBuilder"],[8,"OptionSetter"],[4,"DisconnectionReason"],[4,"StreamState"],[4,"SessionEvent"],[3,"Session"],[3,"OutstandingReceipt"],[3,"GenerateReceipt"],[3,"ReceiptRequest"],[3,"HeartBeatDelay"],[3,"SessionState"],[13,"RecvFailed"],[13,"ConnectFailed"],[13,"SendFailed"],[13,"Error"],[13,"Subscriptionless"],[13,"Unknown"],[13,"Disconnected"],[13,"Message"],[13,"Receipt"],[13,"Connected"],[13,"Connecting"],[3,"SessionBuilder"],[3,"SessionConfig"],[4,"AckOrNack"],[4,"AckMode"],[3,"Subscription"],[3,"SubscriptionBuilder"],[3,"Transaction"],[3,"BrokerResponseHandler"],[3,"AsyncServer"],[3,"Server"],[3,"Subscription"],[3,"SignedPayload"]]}\ +}'); +if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/doc/search.js b/doc/search.js new file mode 100644 index 0000000..91de2a1 --- /dev/null +++ b/doc/search.js @@ -0,0 +1 @@ +(function(){var itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias"];var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function printTab(nb){if(nb===0||nb===1||nb===2){searchState.currentTab=nb}var nb_copy=nb;onEachLazy(document.getElementById("titles").childNodes,function(elem){if(nb_copy===0){addClass(elem,"selected")}else{removeClass(elem,"selected")}nb_copy-=1});onEachLazy(document.getElementById("results").childNodes,function(elem){if(nb===0){addClass(elem,"active")}else{removeClass(elem,"active")}nb-=1})}function removeEmptyStringsFromArray(x){for(var i=0,len=x.length;i-1){var obj=searchIndex[results[i].id];obj.lev=results[i].lev;var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType){var ar=[];for(var entry in results){if(hasOwnPropertyRustdoc(results,entry)){ar.push(results[entry])}}results=ar;var i,len,result;for(i=0,len=results.length;ib?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});for(i=0,len=results.length;i"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function checkGenerics(obj,val){var tmp_lev,elem_name;if(val.generics.length>0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);var elength=obj[GENERICS_DATA].length;for(var x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length>0){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length!==0){var tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}}}else if(literalSearch){if((!val.generics||val.generics.length===0)&&obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){return obj[GENERICS_DATA].some(function(name){return name===val.name})}return false}lev_distance=Math.min(levenshtein(obj[NAME],val.name),lev_distance);if(lev_distance<=MAX_LEV_DISTANCE){lev_distance=Math.ceil((checkGenerics(obj,val)+lev_distance)/2)}else if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var olength=obj[GENERICS_DATA].length;for(x=0;x0){var length=obj.type[INPUTS_DATA].length;for(var i=0;iOUTPUT_DATA){var ret=obj.type[OUTPUT_DATA];if(typeof ret[0]==="string"){ret=[ret]}for(var x=0,len=ret.length;xlength){return MAX_LEV_DISTANCE+1}for(var i=0;ilength){break}var lev_total=0;var aborted=false;for(var x=0;xMAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER)return true;if(filter===type)return true;var name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates){var aliases=[];var crateAliases=[];if(filterCrates!==undefined){if(ALIASES[filterCrates]&&ALIASES[filterCrates][query.search]){var query_aliases=ALIASES[filterCrates][query.search];var len=query_aliases.length;for(var i=0;iMAX_RESULTS){ret.others.pop()}};onEach(aliases,pushFunc);onEach(crateAliases,pushFunc)}var nSearchWords=searchWords.length;var i,it;var ty;var fullId;var returned;var in_args;var len;if((val.charAt(0)==="\""||val.charAt(0)==="'")&&val.charAt(val.length-1)===val.charAt(0)){val=extractGenerics(val.substr(1,val.length-2));for(i=0;i")>-1){var trimmer=function(s){return s.trim()};var parts=val.split("->").map(trimmer);var input=parts[0];var inputs=input.split(",").map(trimmer).sort();for(i=0,len=inputs.length;i1?paths.length-1:1);var lev,j;for(j=0;j1){lev=checkPath(contains,paths[paths.length-1],ty);if(lev>MAX_LEV_DISTANCE){continue}else if(lev>0){lev_add=lev/10}}returned=MAX_LEV_DISTANCE+1;in_args=MAX_LEV_DISTANCE+1;var index=-1;lev=MAX_LEV_DISTANCE+1;fullId=ty.id;if(searchWords[j].indexOf(split[i])>-1||searchWords[j].indexOf(val)>-1||ty.normalizedName.indexOf(val)>-1){if(typePassesFilter(typeFilter,ty.ty)&&results[fullId]===undefined){index=ty.normalizedName.indexOf(val)}}if((lev=levenshtein(searchWords[j],val))<=MAX_LEV_DISTANCE){if(typePassesFilter(typeFilter,ty.ty)){lev+=1}else{lev=MAX_LEV_DISTANCE+1}}in_args=findArg(ty,valGenerics,false,typeFilter);returned=checkReturned(ty,valGenerics,false,typeFilter);lev+=lev_add;if(lev>0&&val.length>3&&searchWords[j].indexOf(val)>-1){if(val.length<6){lev-=1}else{lev=0}}if(in_args<=MAX_LEV_DISTANCE){if(results_in_args[fullId]===undefined){results_in_args[fullId]={id:j,index:index,lev:in_args,}}results_in_args[fullId].lev=Math.min(results_in_args[fullId].lev,in_args)}if(returned<=MAX_LEV_DISTANCE){if(results_returned[fullId]===undefined){results_returned[fullId]={id:j,index:index,lev:returned,}}results_returned[fullId].lev=Math.min(results_returned[fullId].lev,returned)}if(typePassesFilter(typeFilter,ty.ty)&&(index!==-1||lev<=MAX_LEV_DISTANCE)){if(index!==-1&&paths.length<2){lev=0}if(results[fullId]===undefined){results[fullId]={id:j,index:index,lev:lev,}}results[fullId].lev=Math.min(results[fullId].lev,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results,false),};handleAliases(ret,query,filterCrates);return ret}function validateResult(name,path,keys,parent){for(var i=0,len=keys.length;i-1||path.indexOf(keys[i])>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(keys[i])>-1)||levenshtein(name,keys[i])<=MAX_LEV_DISTANCE)){return false}}return true}function getQuery(raw){var matches,type,query;query=raw;matches=query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);if(matches){type=matches[1].replace(/^const$/,"constant");query=query.substring(matches[0].length)}return{raw:raw,query:query,type:type,id:query+type}}function nextTab(direction){var next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){var target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);if(target){target.focus()}}function buildHrefAndPath(item){var displayPath;var href;var type=itemTypes[item.ty];var name=item.name;var path=item.path;if(type==="mod"){displayPath=path+"::";href=window.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="primitive"||type==="keyword"){displayPath="";href=window.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=window.rootPath+name+"/index.html"}else if(item.parent!==undefined){var myparent=item.parent;var anchor="#"+type+"."+name;var parentType=itemTypes[myparent.ty];var pageType=parentType;var pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){var enumNameIdx=item.path.lastIndexOf("::");var enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=window.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=window.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function escape(content){var h1=document.createElement("h1");h1.textContent=content;return h1.innerHTML}function pathSplitter(path){var tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){var extraClass="";if(display===true){extraClass=" active"}var output=document.createElement("div");var duplicates={};var length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(function(item){if(item.is_alias!==true){if(duplicates[item.fullPath]){return}duplicates[item.fullPath]=true}var name=item.name;var type=itemTypes[item.ty];length+=1;var extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}var link=document.createElement("a");link.className="result-"+type;link.href=item.href;var wrapper=document.createElement("div");var resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){var alias=document.createElement("span");alias.className="alias";var bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");wrapper.appendChild(resultName);var description=document.createElement("div");description.className="desc";var spanDesc=document.createElement("span");spanDesc.insertAdjacentHTML("beforeend",item.desc);description.appendChild(spanDesc);wrapper.appendChild(description);link.appendChild(wrapper);output.appendChild(link)})}else{output.className="search-failed"+extraClass;output.innerHTML="No results :(
"+"Try on DuckDuckGo?

"+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first){var search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){var elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}var query=getQuery(searchState.input.value);currentResults=query.id;var ret_others=addTab(results.others,query);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);var currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}var output="

Results for "+escape(query.query)+(query.type?" (type: "+escape(query.type)+")":"")+"

"+"
"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
";var resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;search.appendChild(resultsElem);searchState.focusedByTab=[null,null,null];searchState.showResults(search);var elems=document.getElementById("titles").childNodes;elems[0].onclick=function(){printTab(0)};elems[1].onclick=function(){printTab(1)};elems[2].onclick=function(){printTab(2)};printTab(currentTab)}function execSearch(query,searchWords,filterCrates){function getSmallest(arrays,positions,notDuplicates){var start=null;for(var it=0,len=positions.length;itpositions[it]&&(start===null||start>arrays[it][positions[it]].lev)&&!notDuplicates[arrays[it][positions[it]].fullPath]){start=arrays[it][positions[it]].lev}}return start}function mergeArrays(arrays){var ret=[];var positions=[];var notDuplicates={};for(var x=0,arrays_len=arrays.length;xpositions[x]&&arrays[x][positions[x]].lev===smallest&&!notDuplicates[arrays[x][positions[x]].fullPath]){ret.push(arrays[x][positions[x]]);notDuplicates[arrays[x][positions[x]].fullPath]=true;positions[x]+=1}}}return ret}function tokenizeQuery(raw){var i,matched;var l=raw.length;var depth=0;var nextAngle=/(<|>)/g;var ret=[];var start=0;for(i=0;i'){depth+=1}break;case">":if(depth>0){depth-=1}break;case",":if(depth===0){ret.push(raw.substring(start,i));start=i+1}break}}if(start!==i){ret.push(raw.substring(start,i))}return ret}var queries=tokenizeQuery(query.raw);var results={"in_args":[],"returned":[],"others":[],};for(var i=0,len=queries.length;i1){return{"in_args":mergeArrays(results.in_args),"returned":mergeArrays(results.returned),"others":mergeArrays(results.others),}}return{"in_args":results.in_args[0],"returned":results.returned[0],"others":results.others[0],}}function getFilterCrates(){var elem=document.getElementById("crate-search");if(elem&&elem.value!=="All crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return undefined}function search(e,forced){var params=searchState.getQueryStringParams();var query=getQuery(searchState.input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(!forced&&query.id===currentResults){if(query.query.length>0){searchState.putBackSearch(searchState.input)}return}searchState.title="Results for "+query.query+" - Rust";if(searchState.browserSupportsHistoryApi()){var newURL=getNakedUrl()+"?search="+encodeURIComponent(query.raw)+window.location.hash;if(!history.state&&!params.search){history.pushState(query,"",newURL)}else{history.replaceState(query,"",newURL)}}var filterCrates=getFilterCrates();showResults(execSearch(query,index,filterCrates),params.go_to_first)}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}var crateSize=0;searchWords.push(crate);var crateRow={crate:crate,ty:1,name:crate,path:"",desc:rawSearchIndex[crate].doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=rawSearchIndex[crate].t;var itemNames=rawSearchIndex[crate].n;var itemPaths=rawSearchIndex[crate].q;var itemDescs=rawSearchIndex[crate].d;var itemParentIdxs=rawSearchIndex[crate].i;var itemFunctionSearchTypes=rawSearchIndex[crate].f;var paths=rawSearchIndex[crate].p;var aliases=rawSearchIndex[crate].a;var len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]={};var j,local_aliases;for(var alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=function(){var qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}index=buildIndex(rawSearchIndex);registerSearchEvents();if(searchState.getQueryStringParams().search){search()}};if(window.searchIndex!==undefined){initSearch(window.searchIndex)}})() \ No newline at end of file diff --git a/doc/settings.css b/doc/settings.css new file mode 100644 index 0000000..6709865 --- /dev/null +++ b/doc/settings.css @@ -0,0 +1 @@ +.setting-line{padding:5px;position:relative;}.setting-line>div{display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.setting-line>.title{font-size:19px;width:100%;max-width:none;border-bottom:1px solid;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{opacity:0;position:absolute;}.select-wrapper{float:right;position:relative;height:27px;min-width:25%;}.select-wrapper select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:none;border:2px solid #ccc;padding-right:28px;width:100%;}.select-wrapper img{pointer-events:none;position:absolute;right:0;bottom:0;background:#ccc;height:100%;width:28px;padding:0px 4px;}.select-wrapper select option{color:initial;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;} \ No newline at end of file diff --git a/doc/settings.html b/doc/settings.html new file mode 100644 index 0000000..83c00aa --- /dev/null +++ b/doc/settings.html @@ -0,0 +1,4 @@ +Rustdoc settings

Rustdoc settings

Theme preferences
Use system theme
Preferred dark theme
Preferred light theme
+
Auto-hide item contents for large items.
Auto-hide item methods' documentation
Auto-hide trait implementation documentation
Directly go to item in search if there is only one result
Show line numbers on code examples
Disable keyboard shortcuts
+ + \ No newline at end of file diff --git a/doc/settings.js b/doc/settings.js new file mode 100644 index 0000000..b4d6fdc --- /dev/null +++ b/doc/settings.js @@ -0,0 +1 @@ +(function(){function changeSetting(settingName,value){updateLocalStorage("rustdoc-"+settingName,value);switch(settingName){case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function setEvents(){onEachLazy(document.getElementsByClassName("slider"),function(elem){var toggle=elem.previousElementSibling;var settingId=toggle.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(document.getElementsByClassName("select-wrapper"),function(elem){var select=elem.getElementsByTagName("select")[0];var settingId=select.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}})}window.addEventListener("DOMContentLoaded",setEvents)})() \ No newline at end of file diff --git a/doc/source-files.js b/doc/source-files.js new file mode 100644 index 0000000..ea10eed --- /dev/null +++ b/doc/source-files.js @@ -0,0 +1,3 @@ +var N = null;var sourcesIndex = {}; +sourcesIndex["epicbox"] = {"name":"","dirs":[{"name":"broker","dirs":[{"name":"stomp","files":["codec.rs","connection.rs","frame.rs","header.rs","message_builder.rs","mod.rs","option_setter.rs","session.rs","session_builder.rs","subscription.rs","subscription_builder.rs","transaction.rs"]}],"files":["broker_protocol.rs","mod.rs","rabbit_broker.rs"]},{"name":"server","files":["mod.rs"]}],"files":["main.rs"]}; +createSourceSidebar(); diff --git a/doc/source-script.js b/doc/source-script.js new file mode 100644 index 0000000..5dc8fee --- /dev/null +++ b/doc/source-script.js @@ -0,0 +1 @@ +(function(){function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i"){sidebar.style.left="";this.style.left="";child.innerText="<";updateLocalStorage("rustdoc-source-sidebar-show","true")}else{sidebar.style.left="-300px";this.style.left="0";child.innerText=">";updateLocalStorage("rustdoc-source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner1=document.createElement("div");inner1.style.position="relative";var inner2=document.createElement("div");inner2.style.paddingTop="3px";if(getCurrentValue("rustdoc-source-sidebar-show")==="true"){inner2.innerText="<"}else{inner2.innerText=">";sidebarToggle.style.left="0"}inner1.appendChild(inner2);sidebarToggle.appendChild(inner1);return sidebarToggle}function createSourceSidebar(){if(!window.rootPath.endsWith("/")){window.rootPath+="/"}var main=document.getElementById("main");var sidebarToggle=createSidebarToggle();main.insertBefore(sidebarToggle,main.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("rustdoc-source-sidebar-show")!=="true"){sidebar.style.left="-300px"}var currentFile=getCurrentFilePath();var hasFoundFile=false;var title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(function(key){sourcesIndex[key].name=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",currentFile,hasFoundFile)});main.insertBefore(sidebar,main.firstChild);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}var lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(scrollTo,match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(tocur_line_id){var tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",function(){var match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(false,match)}});onEachLazy(document.getElementsByClassName("line-numbers"),function(el){el.addEventListener("click",handleSourceHighlight)});highlightSourceLines(true);window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file diff --git a/doc/src/epicbox/broker/broker_protocol.rs.html b/doc/src/epicbox/broker/broker_protocol.rs.html new file mode 100644 index 0000000..52e90e8 --- /dev/null +++ b/doc/src/epicbox/broker/broker_protocol.rs.html @@ -0,0 +1,60 @@ +broker_protocol.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+
use futures::sync::mpsc::UnboundedSender;
+
+#[derive(Debug)]
+pub enum BrokerRequest {
+    Subscribe {
+        id: String,
+        subject: String,
+        response_sender: UnboundedSender<BrokerResponse>,
+    },
+    Unsubscribe {
+        id: String,
+    },
+    PostMessage {
+        subject: String,
+        payload: String,
+        reply_to: String,
+        message_expiration_in_seconds: Option<u32>,
+    },
+}
+
+#[derive(Debug)]
+pub enum BrokerResponse {
+    Message {
+        subject: String,
+        payload: String,
+        reply_to: String,
+    },
+}
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/mod.rs.html b/doc/src/epicbox/broker/mod.rs.html new file mode 100644 index 0000000..2c898b9 --- /dev/null +++ b/doc/src/epicbox/broker/mod.rs.html @@ -0,0 +1,16 @@ +mod.rs - source
1
+2
+3
+4
+5
+6
+
mod broker_protocol;
+mod rabbit_broker;
+mod stomp;
+
+pub use self::broker_protocol::{BrokerRequest, BrokerResponse};
+pub use self::rabbit_broker::Broker;
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/rabbit_broker.rs.html b/doc/src/epicbox/broker/rabbit_broker.rs.html new file mode 100644 index 0000000..4405abf --- /dev/null +++ b/doc/src/epicbox/broker/rabbit_broker.rs.html @@ -0,0 +1,588 @@ +rabbit_broker.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+
use std::collections::HashMap;
+use std::net::SocketAddr;
+use std::sync::{Arc, Mutex};
+use tokio::net::TcpStream;
+use tokio::prelude::*;
+
+use futures::{
+    Stream,
+    sync::mpsc::{unbounded, UnboundedSender},
+    Future
+};
+
+use epicboxlib::error::Result;
+
+use crate::broker::{BrokerRequest, BrokerResponse};
+use crate::broker::stomp::session::SessionEvent;
+use crate::broker::stomp::session_builder::SessionBuilder;
+use crate::broker::stomp::connection::{HeartBeat, Credentials};
+use crate::broker::stomp::header::{Header, HeaderName, SUBSCRIPTION};
+use crate::broker::stomp::subscription::AckMode;
+use crate::broker::stomp::frame::Frame;
+
+type Session = crate::broker::stomp::session::Session<TcpStream>;
+
+const DEFAULT_QUEUE_EXPIRATION: &str = "86400000";
+const DEFAULT_MESSAGE_EXPIRATION: u32 = 86400;
+const REPLY_TO_HEADER_NAME: &str = "epicbox-reply-to";
+
+pub struct Broker {
+    address: SocketAddr,
+    username: String,
+    password: String,
+}
+
+impl Broker {
+    pub fn new(address: SocketAddr, username: String, password: String) -> Broker {
+        Broker {
+            address,
+            username,
+            password,
+        }
+    }
+
+    pub fn start(&mut self) -> Result<UnboundedSender<BrokerRequest>> {
+        let (tx, rx) = unbounded();
+        let address = self.address.clone();
+        let username = self.username.clone();
+        let password = self.password.clone();
+        std::thread::spawn(move || {
+            let tcp_stream = Box::new(TcpStream::connect(&address));
+
+            let session = SessionBuilder::new()
+                .with(Credentials(&username, &password))
+                .with(HeartBeat(10000, 10000))
+                .build(tcp_stream);
+
+            let session = BrokerSession {
+                session: Arc::new(Mutex::new(session)),
+                session_number: 0,
+                consumers: Arc::new(Mutex::new(HashMap::new())),
+                subject_to_consumer_id_lookup: Arc::new(Mutex::new(HashMap::new())),
+                subscription_id_to_consumer_id_lookup: Arc::new(Mutex::new(HashMap::new())),
+            };
+
+            let mut session_clone = session.clone();
+
+            let request_loop = rx
+                .for_each(move |request| {
+                    match request {
+                        BrokerRequest::Subscribe { id, subject, response_sender } => {
+                            session_clone.subscribe(id, subject.clone(), response_sender.clone());
+                        },
+                        BrokerRequest::Unsubscribe { id } => {
+                            session_clone.unsubscribe(&id);
+                        },
+                        BrokerRequest::PostMessage { subject, payload, reply_to, message_expiration_in_seconds } => {
+                            session_clone.publish(&subject, &payload, &reply_to, message_expiration_in_seconds);
+                        },
+                    }
+                    Ok(())
+                })
+                .map_err(|()| std::io::Error::new(std::io::ErrorKind::Other, ""));
+
+            let f = session.select(request_loop).map_err(|_| {}).map(|_| {});
+
+            tokio::run(f);
+
+            error!("broker thread ending!");
+
+            // TODO: attempt reconnection and re-establishment of subscriptions?
+            std::process::exit(1);
+        });
+
+        Ok(tx)
+    }
+}
+
+struct Consumer {
+    subject: String,
+    subscription_id: String,
+    sender: UnboundedSender<BrokerResponse>,
+}
+
+impl Consumer {
+    pub fn new(subject: String, subscription_id: String, sender: UnboundedSender<BrokerResponse>) -> Consumer {
+        Consumer {
+            subject,
+            subscription_id,
+            sender,
+        }
+    }
+}
+
+#[derive(Clone)]
+struct BrokerSession {
+    session: Arc<Mutex<Session>>,
+    session_number: u32,
+    consumers: Arc<Mutex<HashMap<String, Consumer>>>,
+    subject_to_consumer_id_lookup: Arc<Mutex<HashMap<String, String>>>,
+    subscription_id_to_consumer_id_lookup: Arc<Mutex<HashMap<String, String>>>,
+}
+
+impl BrokerSession {
+    fn on_connected(&mut self) {
+        info!("established broker session");
+    }
+
+    fn subscribe(&mut self, id: String, subject: String, sender: UnboundedSender<BrokerResponse>) {
+        self.unsubscribe_by_subject(&subject);
+
+        let subscription_id = self
+            .session
+            .lock()
+            .unwrap()
+            .subscription(&subject)
+            .with(AckMode::Auto)
+            .with(
+                Header::new(
+                    HeaderName::from_str("x-expires"),
+                    DEFAULT_QUEUE_EXPIRATION
+                )
+            )
+            .start();
+
+        let consumer = Consumer::new(subject.clone(), subscription_id.clone(), sender);
+        self.subject_to_consumer_id_lookup.lock().unwrap().insert(subject, id.clone());
+        self.subscription_id_to_consumer_id_lookup.lock().unwrap().insert(subscription_id, id.clone());
+        self.consumers.lock().unwrap().insert(id, consumer);
+    }
+
+    fn unsubscribe_by_subject(&mut self, subject: &str) {
+        if let Some(consumer_id) = self.subject_to_consumer_id_lookup.lock().unwrap().remove(subject) {
+            if let Some(consumer) = self.consumers.lock().unwrap().remove(&consumer_id) {
+                self.subscription_id_to_consumer_id_lookup.lock().unwrap().remove(&consumer.subscription_id);
+                self
+                    .session
+                    .lock()
+                    .unwrap()
+                    .unsubscribe(&consumer.subscription_id);
+
+            } else {
+                error!("could not find consumer for subject [{}]", subject);
+            }
+        }
+    }
+
+    fn unsubscribe(&mut self, id: &str) {
+        if let Some(consumer) = self.consumers.lock().unwrap().remove(id) {
+            if let Some(_) = self.subject_to_consumer_id_lookup.lock().unwrap().remove(&consumer.subject) {
+                self.subscription_id_to_consumer_id_lookup.lock().unwrap().remove(&consumer.subscription_id);
+                self
+                    .session
+                    .lock()
+                    .unwrap()
+                    .unsubscribe(&consumer.subscription_id);
+
+            } else {
+                error!("could not find consumer for id [{}]", id);
+            }
+        }
+    }
+
+    fn publish(&self, subject: &str, payload: &str, reply_to: &str, message_expiration_in_seconds: Option<u32>) {
+        let destination = format!("/queue/{}", subject);
+        let message_expiration = match message_expiration_in_seconds {
+            Some(message_expiration_in_seconds @ 1 ... 86400) => format!("{}", message_expiration_in_seconds * 1000),
+            _ => format!("{}", DEFAULT_MESSAGE_EXPIRATION * 1000),
+        };
+
+        self
+            .session
+            .lock()
+            .unwrap()
+            .message(&destination, payload)
+            .with(
+                Header::new(
+                    HeaderName::from_str("x-expires"),
+                    DEFAULT_QUEUE_EXPIRATION
+                )
+            )
+            .with(
+                Header::new(
+                    HeaderName::from_str("expiration"),
+                    &message_expiration
+                )
+            )
+            .with(
+                Header::new(
+                    HeaderName::from_str(REPLY_TO_HEADER_NAME),
+                    reply_to
+                )
+            )
+            .send();
+    }
+
+    fn on_message(&mut self, frame: Frame) {
+        if let Some(subscription_id) = frame.headers.get(SUBSCRIPTION) {
+            match self.subscription_id_to_consumer_id_lookup.lock().unwrap().get(subscription_id) {
+                Some(consumer_id) => {
+                    match self.consumers.lock().unwrap().get(consumer_id) {
+                        Some(consumer) => {
+                            if let Some(reply_to) = frame.headers.get(HeaderName::from_str(REPLY_TO_HEADER_NAME))
+                                {
+                                    let payload = std::str::from_utf8(&frame.body).unwrap();
+                                    let response = BrokerResponse::Message {
+                                        subject: consumer.subject.clone(),
+                                        payload: payload.to_string(),
+                                        reply_to: reply_to.to_string(),
+                                    };
+                                    if consumer.sender.unbounded_send(response).is_err() {
+                                        error!("failed sending broker message to channel!");
+                                    };
+                                } else {
+                                error!("reply_to header missing on message!");
+                            }
+                        },
+                        None => {
+                            error!("missing consumer for message frame [{}]", subscription_id);
+                        }
+                    }
+                }
+                None => {
+                    error!("missing consumer for message frame [{}]", subscription_id);
+                }
+            }
+        }
+    }
+}
+
+impl Future for BrokerSession {
+    type Item = ();
+    type Error = std::io::Error;
+
+    fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
+        let msg = match try_ready!(self.session.lock().unwrap().poll()) {
+            None => {
+                return Ok(Async::Ready(()));
+            }
+            Some(msg) => msg,
+        };
+
+        trace!("msg: {:?}", msg);
+        match msg {
+            SessionEvent::Connected => {
+                self.on_connected();
+            }
+
+            SessionEvent::Message {
+                destination: _destination,
+                ack_mode: _ack_mode,
+                frame,
+            } => {
+                self.on_message(frame)
+            }
+
+            SessionEvent::Error(frame) => {
+                error!("session error event: {}", frame);
+            }
+
+            SessionEvent::Disconnected(reason) => {
+                warn!("session [{}] disconnected due to [{:?}]", self.session_number, reason);
+                return Ok(Async::Ready(()));
+            }
+
+            m => {
+                warn!("unexepcted msg: {:?}", m);
+            }
+        }
+
+        Ok(Async::NotReady)
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/codec.rs.html b/doc/src/epicbox/broker/stomp/codec.rs.html new file mode 100644 index 0000000..2f04eed --- /dev/null +++ b/doc/src/epicbox/broker/stomp/codec.rs.html @@ -0,0 +1,305 @@ +codec.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+
use std::io::Error as IoError;
+use std::str;
+use bytes::BytesMut;
+use tokio_io::codec::{Encoder, Decoder};
+use futures::prelude::*;
+
+use super::header::{Header, HeaderName, HeaderList, CONTENT_LENGTH};
+use super::frame::{Command, Frame, Transmission};
+
+macro_rules! opt_nr {
+    ($opt: expr) => {
+        match $opt {
+            Some(v) => v,
+            None => return Ok(Async::NotReady),
+        }
+    };
+}
+
+#[derive(Debug)]
+pub enum ParseError {
+    Utf8,
+    ContentLength,
+    UnknownCommand(String),
+    Invalid,
+}
+impl std::fmt::Display for ParseError {
+    fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
+        write!(fmt, "{:?}", self)
+    }
+}
+impl std::error::Error for ParseError {}
+
+fn parse_transmission(src0: &[u8]) -> Poll<(Transmission, usize), ParseError> {
+    let (command, mut src) = try_ready!(get_line(src0));
+    if command.is_empty() {
+        return Ok(Async::Ready((
+            Transmission::HeartBeat,
+            src0.len() - src.len(),
+        )));
+    }
+
+    let command = parse_command(command)?;
+
+    let mut headers = HeaderList::new();
+
+    loop {
+        let (line, src1) = try_ready!(get_line(src));
+        src = src1;
+        if line.is_empty() {
+            break;
+        }
+        let header = try_ready!(parse_header(line));
+        headers.push(header);
+    }
+
+    let (src1, body) = match headers.get(CONTENT_LENGTH) {
+        Some(len) => {
+            let len = len.parse().map_err(|_e| ParseError::ContentLength)?;
+            if src.len() <= len {
+                return Ok(Async::NotReady);
+            }
+            if src[len] != b'\0' {
+                return Err(ParseError::Invalid);
+            }
+
+            (&src[(len + 1)..], Vec::from(&src[..len]))
+        }
+        None => {
+            let mut split = src.splitn(2, |b| *b == b'\0');
+            let body = opt_nr!(split.next());
+            let src = opt_nr!(split.next());
+            (src, Vec::from(body))
+        }
+    };
+    src = src1;
+
+    let frame = Frame {
+        command,
+        headers,
+        body,
+    };
+
+    Ok(Async::Ready((
+        Transmission::CompleteFrame(frame),
+        src0.len() - src.len(),
+    )))
+}
+
+fn parse_header(src: &[u8]) -> Poll<Header, ParseError> {
+    let src = str::from_utf8(src).map_err(|_e| ParseError::Utf8)?;
+    let mut parts = src.split(':');
+
+    let key = opt_nr!(parts.next());
+    let value = opt_nr!(parts.next());
+
+    Ok(Async::Ready(Header::new(HeaderName::from_str(key), &Header::decode_value(value))))
+}
+
+fn parse_command(src: &[u8]) -> Result<Command, ParseError> {
+    let command = match src {
+        b"CONNECTED" => Command::Connected,
+        b"MESSAGE" => Command::Message,
+        b"RECEIPT" => Command::Receipt,
+        b"ERROR" => Command::Error,
+        unknown => {
+            return Err(ParseError::UnknownCommand(
+                str::from_utf8(unknown).unwrap().to_owned(),
+            ))
+        }
+    };
+    Ok(command)
+}
+
+fn get_line<'a>(src: &'a [u8]) -> Poll<(&'a [u8], &'a [u8]), ParseError> {
+    let mut split = src.splitn(2, |b| *b == b'\n');
+
+    let mut line = opt_nr!(split.next());
+    let remain = opt_nr!(split.next());
+
+    if !line.is_empty() && line[line.len() - 1] == b'\r' {
+        line = &line[..(line.len() - 1)];
+    }
+    Ok(Async::Ready((line, remain)))
+}
+
+pub struct Codec;
+
+impl Encoder for Codec {
+    type Item = Transmission;
+    type Error = IoError;
+    fn encode(&mut self, item: Transmission, buffer: &mut BytesMut) -> Result<(), IoError> {
+        item.write(buffer);
+        Ok(())
+    }
+}
+
+impl Decoder for Codec {
+    type Item = Transmission;
+    type Error = IoError;
+
+    fn decode(&mut self, src: &mut BytesMut) -> Result<Option<Transmission>, IoError> {
+        match parse_transmission(&src) {
+            Ok(Async::NotReady) => Ok(None),
+            Ok(Async::Ready((t, len))) => {
+                src.split_to(len);
+                Ok(Some(t))
+            }
+            Err(e) => Err(std::io::Error::new(std::io::ErrorKind::Other, e)),
+        }
+    }
+}
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/connection.rs.html b/doc/src/epicbox/broker/stomp/connection.rs.html new file mode 100644 index 0000000..edb340e --- /dev/null +++ b/doc/src/epicbox/broker/stomp/connection.rs.html @@ -0,0 +1,80 @@ +connection.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+
#[derive(Clone, Copy)]
+pub struct HeartBeat(pub u32, pub u32);
+#[derive(Clone, Copy)]
+pub struct Credentials<'a>(pub &'a str, pub &'a str);
+#[derive(Clone)]
+pub struct OwnedCredentials {
+    pub login: String,
+    pub passcode: String,
+}
+
+impl OwnedCredentials {
+    pub fn from<'a>(credentials: Credentials<'a>) -> OwnedCredentials {
+        OwnedCredentials {
+            login: credentials.0.to_owned(),
+            passcode: credentials.1.to_owned(),
+        }
+    }
+}
+
+fn heartbeat(client_ms: u32, server_ms: u32) -> u32 {
+    if client_ms == 0 || server_ms == 0 {
+        0
+    } else {
+        client_ms.max(server_ms)
+    }
+}
+
+pub fn select_heartbeat(
+    client_tx_ms: u32,
+    client_rx_ms: u32,
+    server_tx_ms: u32,
+    server_rx_ms: u32,
+) -> (u32, u32) {
+    (
+        heartbeat(client_tx_ms, server_tx_ms),
+        heartbeat(client_rx_ms, server_rx_ms),
+    )
+}
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/frame.rs.html b/doc/src/epicbox/broker/stomp/frame.rs.html new file mode 100644 index 0000000..7674844 --- /dev/null +++ b/doc/src/epicbox/broker/stomp/frame.rs.html @@ -0,0 +1,519 @@ +frame.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+
use std::str::from_utf8;
+use std::fmt;
+use std::fmt::Formatter;
+use bytes::BytesMut;
+
+use super::header::*;
+use super::subscription::AckMode;
+
+#[derive(Copy, Clone, Debug)]
+pub enum Command {
+    Send,
+    Subscribe,
+    Unsubscribe,
+    Begin,
+    Commit,
+    Abort,
+    Ack,
+    Nack,
+    Disconnect,
+    Connect,
+    Stomp,
+    Connected,
+    Message,
+    Receipt,
+    Error,
+}
+
+impl Command {
+    pub fn as_str(&self) -> &'static str {
+        use self::Command::*;
+
+        match *self {
+            Send => "SEND",
+            Subscribe => "SUBSCRIBE",
+            Unsubscribe => "UNSUBSCRIBE",
+            Begin => "BEGIN",
+            Commit => "COMMIT",
+            Abort => "ABORT",
+            Ack => "ACK",
+            Nack => "NACK",
+            Disconnect => "DISCONNECT",
+            Connect => "CONNECT",
+            Stomp => "STOMP",
+            Connected => "CONNECTED",
+            Message => "MESSAGE",
+            Receipt => "RECEIPT",
+            Error => "ERROR",
+        }
+    }
+}
+
+impl fmt::Display for Command {
+    fn fmt(&self, f: &mut Formatter) -> fmt::Result {
+        write!(f, "{}", self.as_str())
+    }
+}
+
+pub trait ToFrameBody {
+    fn to_frame_body<'a>(&'a self) -> &'a [u8];
+}
+
+impl<'b> ToFrameBody for &'b [u8] {
+    fn to_frame_body<'a>(&'a self) -> &'a [u8] {
+        self
+    }
+}
+
+impl<'b> ToFrameBody for &'b str {
+    fn to_frame_body<'a>(&'a self) -> &'a [u8] {
+        self.as_bytes()
+    }
+}
+
+impl ToFrameBody for String {
+    fn to_frame_body<'a>(&'a self) -> &'a [u8] {
+        self.as_str().as_bytes()
+    }
+}
+
+#[derive(Clone, Debug)]
+pub struct Frame {
+    pub command: Command,
+    pub headers: HeaderList,
+    pub body: Vec<u8>,
+}
+
+#[derive(Debug)]
+pub enum Transmission {
+    HeartBeat,
+    CompleteFrame(Frame),
+}
+
+impl Transmission {
+    pub fn write(&self, out: &mut BytesMut) {
+        match *self {
+            Transmission::HeartBeat => out.extend("\n".as_bytes()),
+            Transmission::CompleteFrame(ref frame) => frame.write(out),
+        }
+    }
+}
+
+impl fmt::Display for Frame {
+    fn fmt(&self, f: &mut Formatter) -> fmt::Result {
+        let space_required = self.count_bytes();
+        let mut frame_string = String::with_capacity(space_required); // Faster to just allocate?
+        frame_string.push_str(self.command.as_str());
+        frame_string.push_str("\n");
+        for header in self.headers.iter() {
+            frame_string.push_str(&header.get_raw());
+            frame_string.push_str("\n");
+        }
+        frame_string.push_str("\n");
+        let body_string: &str = match from_utf8(self.body.as_ref()) {
+            Ok(ref s) => *s,
+            Err(_) => "<Binary content>", // Space is wasted in this case. Could shrink to fit?
+        };
+        frame_string.push_str(body_string);
+
+        write!(f, "{}", frame_string)
+    }
+}
+
+impl Frame {
+    fn empty(command: Command, headers: HeaderList) -> Self {
+        Self {
+            command,
+            headers,
+            body: Vec::new(),
+        }
+    }
+
+    fn count_bytes(&self) -> usize {
+        let mut space_required: usize = 0;
+        // Add one to space calculations to make room for '\n'
+        space_required += self.command.as_str().len() + 1;
+        space_required += self
+            .headers
+            .iter()
+            .fold(0, |length, header| length + header.get_raw().len() + 1);
+        space_required += 1; // Newline at end of headers
+        space_required += self.body.len();
+        space_required
+    }
+
+    pub fn write(&self, out: &mut BytesMut) {
+        debug!("Sending frame:\n{}", self.to_string());
+        out.extend(self.command.as_str().as_bytes());
+        out.extend("\n".as_bytes());
+
+        for header in self.headers.iter() {
+            out.extend(header.get_raw().as_bytes());
+            out.extend("\n".as_bytes());
+        }
+
+        out.extend("\n".as_bytes());
+        out.extend(&self.body);
+
+        out.extend(&[0]);
+    }
+
+    pub fn connect(tx_heartbeat_ms: u32, rx_heartbeat_ms: u32) -> Self {
+        let heart_beat = format!("{},{}", tx_heartbeat_ms, rx_heartbeat_ms);
+
+        Self::empty(
+            Command::Connect,
+            header_list![
+                ACCEPT_VERSION => "1.2",
+                HEART_BEAT => heart_beat.as_ref(),
+                CONTENT_LENGTH => "0"
+            ],
+        )
+    }
+
+    pub fn disconnect() -> Self {
+        Self::empty(
+            Command::Disconnect,
+            header_list![
+                RECEIPT => "msg/disconnect"
+            ],
+        )
+    }
+
+    pub fn subscribe(subscription_id: &str, destination: &str, ack_mode: AckMode) -> Self {
+        Self::empty(
+            Command::Subscribe,
+            header_list![
+                DESTINATION => destination,
+                ID => subscription_id,
+                ACK => ack_mode.as_str()
+            ],
+        )
+    }
+
+    pub fn unsubscribe(subscription_id: &str) -> Self {
+        Self::empty(
+            Command::Unsubscribe,
+            header_list![
+                ID => subscription_id
+            ],
+        )
+    }
+
+    pub fn ack(ack_id: &str) -> Self {
+        Self::empty(
+            Command::Ack,
+            header_list![
+                ID => ack_id
+            ],
+        )
+    }
+
+    pub fn nack(message_id: &str) -> Self {
+        Self::empty(
+            Command::Nack,
+            header_list![
+                ID => message_id
+            ],
+        )
+    }
+
+    pub fn send(destination: &str, body: &[u8]) -> Self {
+        Self {
+            command: Command::Send,
+            headers: header_list![
+                DESTINATION => destination,
+                CONTENT_LENGTH => body.len().to_string().as_ref()
+            ],
+            body: body.into(),
+        }
+    }
+
+    pub fn begin(transaction_id: &str) -> Self {
+        Self::empty(
+            Command::Begin,
+            header_list![
+                TRANSACTION => transaction_id
+            ],
+        )
+    }
+
+    pub fn abort(transaction_id: &str) -> Self {
+        Self::empty(
+            Command::Abort,
+            header_list![
+                TRANSACTION => transaction_id
+            ],
+        )
+    }
+
+    pub fn commit(transaction_id: &str) -> Self {
+        Self::empty(
+            Command::Commit,
+            header_list![
+                TRANSACTION => transaction_id
+            ],
+        )
+    }
+}
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/header.rs.html b/doc/src/epicbox/broker/stomp/header.rs.html new file mode 100644 index 0000000..5866a34 --- /dev/null +++ b/doc/src/epicbox/broker/stomp/header.rs.html @@ -0,0 +1,594 @@ +header.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+
// Non-camel case types are used for Stomp Protocol version enum variants
+#![macro_use]
+use std;
+use std::slice::Iter;
+use unicode_segmentation::UnicodeSegmentation;
+
+// Ideally this would be a simple typedef. However:
+// See Rust bug #11047: https://github.com/mozilla/rust/issues/11047
+// Cannot call static methods (`with_capacity`) on type aliases (`HeaderList`)
+#[derive(Clone, Debug)]
+pub struct HeaderList {
+    pub headers: Vec<Header>,
+}
+
+impl HeaderList {
+    pub fn new() -> HeaderList {
+        HeaderList::with_capacity(0)
+    }
+    pub fn with_capacity(capacity: usize) -> HeaderList {
+        HeaderList {
+            headers: Vec::with_capacity(capacity),
+        }
+    }
+
+    pub fn push(&mut self, header: Header) {
+        self.headers.push(header);
+    }
+
+    pub fn pop(&mut self) -> Option<Header> {
+        self.headers.pop()
+    }
+
+    pub fn iter<'a>(&'a self) -> Iter<'a, Header> {
+        self.headers.iter()
+    }
+
+    pub fn drain<F>(&mut self, mut sink: F)
+        where
+            F: FnMut(Header),
+    {
+        while let Some(header) = self.headers.pop() {
+            sink(header);
+        }
+    }
+
+    pub fn concat(&mut self, other_list: &mut HeaderList) {
+        other_list.headers.reverse();
+        while let Some(header) = other_list.pop() {
+            self.headers.push(header);
+        }
+    }
+
+    pub fn retain<F>(&mut self, test: F)
+        where
+            F: Fn(&Header) -> bool,
+    {
+        self.headers.retain(test)
+    }
+}
+
+pub struct SuppressedHeader<'a>(pub &'a str);
+#[derive(Clone, Debug)]
+pub struct Header(pub HeaderName, pub String);
+
+impl Header {
+    pub fn new(key: HeaderName, value: &str) -> Header {
+        Header(key, value.to_string())
+    }
+
+    pub fn get_raw(&self) -> String {
+        format!("{}:{}", self.0.as_str(), self.1)
+    }
+
+    pub fn encode_value(value: &str) -> String {
+        let mut encoded = String::new(); //self.strings.detached();
+        for grapheme in UnicodeSegmentation::graphemes(value, true) {
+            match grapheme {
+                "\\" => encoded.push_str(r"\\"), // Order is significant
+                "\r" => encoded.push_str(r"\r"),
+                "\n" => encoded.push_str(r"\n"),
+                ":" => encoded.push_str(r"\c"),
+                g => encoded.push_str(g),
+            }
+        }
+        encoded
+    }
+
+    pub fn decode_value(value: &str) -> String {
+        let decoded = value.to_string().replace(r"\c", ":");
+        decoded
+    }
+
+    pub fn get_key<'a>(&'a self) -> HeaderName {
+        self.0.clone()
+    }
+
+    pub fn get_value<'a>(&'a self) -> &'a str {
+        &self.1
+    }
+}
+
+#[derive(Clone, Eq, PartialEq, Hash, Debug)]
+pub struct HeaderName {
+    inner: Repr<Custom>,
+}
+impl HeaderName {
+    pub fn from_str(src: &str) -> Self {
+        let encoded = Header::encode_value(src);
+        let inner = match encoded.parse::<StandardHeader>() {
+            Ok(h) => Repr::Standard(h),
+            Err(_e) => Repr::Custom(Custom(encoded)),
+        };
+        Self { inner }
+    }
+    pub fn as_str(&self) -> &str {
+        match self.inner {
+            Repr::Standard(v) => v.as_str(),
+            Repr::Custom(ref v) => v.0.as_str(),
+        }
+    }
+}
+
+#[derive(Debug, Clone, Eq, PartialEq, Hash)]
+enum Repr<T> {
+    Standard(StandardHeader),
+    Custom(T),
+}
+
+// Used to hijack the Hash impl
+#[derive(Debug, Clone, Eq, PartialEq, Hash)]
+struct Custom(String);
+
+macro_rules! standard_headers {
+    (
+        $(
+            $(#[$docs:meta])*
+            ($konst:ident, $upcase:ident, $name:expr);
+        )+
+    ) => {
+        #[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
+        enum StandardHeader {
+            $(
+                $konst,
+            )+
+        }
+
+        $(
+            $(#[$docs])*
+            pub const $upcase: HeaderName = HeaderName {
+                inner: Repr::Standard(StandardHeader::$konst),
+            };
+        )+
+
+        impl std::str::FromStr for StandardHeader {
+            type Err = ();
+            fn from_str(s: &str) -> Result<Self, Self::Err> {
+                match s {
+                    $(
+                    $name => Ok(StandardHeader::$konst ),
+                    )+
+                    _ => Err(())
+                }
+            }
+        }
+
+        impl StandardHeader {
+            #[inline]
+            fn as_str(&self) -> &'static str {
+                match *self {
+                    $(
+                    StandardHeader::$konst => $name,
+                    )+
+                }
+            }
+        }
+    }
+}
+
+standard_headers! {
+    (ContentType, CONTENT_TYPE, "content-type");
+    (AcceptVerion, ACCEPT_VERSION, "accept-version");
+    (Ack, ACK, "ack");
+    (ContentLength, CONTENT_LENGTH, "content-length");
+    (Destination, DESTINATION, "destination");
+    (HeartBeat, HEART_BEAT, "heart-beat");
+    (Host, HOST, "host");
+    (Id, ID, "id");
+    (Login, LOGIN, "login");
+    (MessageId, MESSAGE_ID, "message-id");
+    (Passcode, PASSCODE, "passcode");
+    (Receipt, RECEIPT, "receipt");
+    (ReceiptID, RECEIPT_ID, "receipt-id");
+    (Server, SERVER, "server");
+    (Session, SESSION, "session");
+    (Subscription, SUBSCRIPTION, "subscription");
+    (Transaction, TRANSACTION, "transaction");
+    (Version, VERSION, "version");
+}
+
+#[allow(non_camel_case_types)]
+#[derive(Clone, Copy)]
+pub enum StompVersion {
+    Stomp_v1_0,
+    Stomp_v1_1,
+    Stomp_v1_2,
+}
+impl std::str::FromStr for StompVersion {
+    type Err = ();
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        match s {
+            "1.0" => Ok(StompVersion::Stomp_v1_0),
+            "1.1" => Ok(StompVersion::Stomp_v1_1),
+            "1.2" => Ok(StompVersion::Stomp_v1_2),
+            _ => Err(()),
+        }
+    }
+}
+
+impl HeaderList {
+    pub fn get<'a>(&'a self, key: HeaderName) -> Option<&'a str> {
+        self.headers
+            .iter()
+            .find(|header| header.get_key() == key)
+            .map(|v| v.get_value())
+    }
+
+    pub fn get_accept_version(&self) -> Option<Vec<StompVersion>> {
+        let versions: &str = self.get(ACCEPT_VERSION)?;
+        let versions: Vec<StompVersion> = versions
+            .split(',')
+            .filter_map(|v| v.trim().parse::<StompVersion>().ok())
+            .collect();
+        Some(versions)
+    }
+
+    pub fn get_heart_beat(&self) -> Option<(u32, u32)> {
+        let spec = self.get(HEART_BEAT)?;
+        trace!("hb: {}", spec);
+        let spec_list: Vec<u32> = spec
+            .split(',')
+            .filter_map(|str_val| str_val.parse::<u32>().ok())
+            .collect();
+
+        if spec_list.len() != 2 {
+            return None;
+        }
+        Some((spec_list[0], spec_list[1]))
+    }
+}
+
+#[macro_export]
+macro_rules! header_list [
+  ($($header: expr), *) => ({
+    let header_list = HeaderList::new();
+    $(header_list.push($header);)*
+    header_list
+  });
+  ($($key:expr => $value: expr), *) => ({
+    let mut header_list = HeaderList::new();
+    $(header_list.push(Header::new($key, $value));)*
+    header_list
+  })
+];
+
+#[cfg(test)]
+mod test {
+    use super::*;
+    #[test]
+    fn encode_return_carriage() {
+        let unencoded = "Hello\rWorld";
+        let encoded = r"Hello\rWorld";
+        assert!(encoded == Header::encode_value(unencoded));
+    }
+
+    #[test]
+    fn encode_newline() {
+        let unencoded = "Hello\nWorld";
+        let encoded = r"Hello\nWorld";
+        assert!(encoded == Header::encode_value(unencoded));
+    }
+
+    #[test]
+    fn encode_colon() {
+        let unencoded = "Hello:World";
+        let encoded = r"Hello\cWorld";
+        assert!(encoded == Header::encode_value(unencoded));
+    }
+
+    #[test]
+    fn encode_slash() {
+        let unencoded = r"Hello\World";
+        let encoded = r"Hello\\World";
+        assert!(encoded == Header::encode_value(unencoded));
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/message_builder.rs.html b/doc/src/epicbox/broker/stomp/message_builder.rs.html new file mode 100644 index 0000000..34412be --- /dev/null +++ b/doc/src/epicbox/broker/stomp/message_builder.rs.html @@ -0,0 +1,86 @@ +message_builder.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+
use super::session::{Session, ReceiptRequest, OutstandingReceipt};
+use super::frame::Frame;
+use super::option_setter::OptionSetter;
+
+pub struct MessageBuilder<'a, T: 'static> {
+    pub session: &'a mut Session<T>,
+    pub frame: Frame,
+    pub receipt_request: Option<ReceiptRequest>,
+}
+
+impl<'a, T> MessageBuilder<'a, T>
+    where
+        T: tokio_io::AsyncWrite + tokio_io::AsyncRead + Send + 'static,
+{
+    pub fn new(session: &'a mut Session<T>, frame: Frame) -> Self {
+        MessageBuilder {
+            session,
+            frame,
+            receipt_request: None,
+        }
+    }
+
+    pub fn send(self) {
+        if self.receipt_request.is_some() {
+            let request = self.receipt_request.unwrap();
+            self.session
+                .state
+                .outstanding_receipts
+                .insert(request.id, OutstandingReceipt::new(self.frame.clone()));
+        }
+        self.session.send_frame(self.frame)
+    }
+
+    pub fn with<O>(self, option_setter: O) -> MessageBuilder<'a, T>
+        where
+            O: OptionSetter<MessageBuilder<'a, T>>,
+    {
+        option_setter.set_option(self)
+    }
+}
+
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/mod.rs.html b/doc/src/epicbox/broker/stomp/mod.rs.html new file mode 100644 index 0000000..d5834bd --- /dev/null +++ b/doc/src/epicbox/broker/stomp/mod.rs.html @@ -0,0 +1,25 @@ +mod.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+
pub mod connection;
+pub mod header;
+pub mod codec;
+pub mod frame;
+pub mod session;
+pub mod subscription;
+pub mod transaction;
+pub mod message_builder;
+pub mod session_builder;
+pub mod subscription_builder;
+pub mod option_setter;
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/option_setter.rs.html b/doc/src/epicbox/broker/stomp/option_setter.rs.html new file mode 100644 index 0000000..7441b7f --- /dev/null +++ b/doc/src/epicbox/broker/stomp/option_setter.rs.html @@ -0,0 +1,235 @@ +option_setter.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+
use super::message_builder::MessageBuilder;
+use super::session_builder::SessionBuilder;
+use super::subscription_builder::SubscriptionBuilder;
+use super::header::*;
+use super::connection::{HeartBeat, Credentials, OwnedCredentials};
+use super::subscription::AckMode;
+use super::session::{ReceiptRequest, GenerateReceipt};
+
+pub trait OptionSetter<T> {
+    fn set_option(self, T) -> T;
+}
+
+impl<'a, T> OptionSetter<MessageBuilder<'a, T>> for Header {
+    fn set_option(self, mut builder: MessageBuilder<'a, T>) -> MessageBuilder<'a, T> {
+        builder.frame.headers.push(self);
+        builder
+    }
+}
+
+impl<'a, 'b, T> OptionSetter<MessageBuilder<'b, T>> for SuppressedHeader<'a> {
+    fn set_option(self, mut builder: MessageBuilder<'b, T>) -> MessageBuilder<'b, T> {
+        let SuppressedHeader(key) = self;
+        builder
+            .frame
+            .headers
+            .retain(|header| header.get_key().as_str() != key);
+        builder
+    }
+}
+
+impl OptionSetter<SessionBuilder> for Header {
+    fn set_option(self, mut builder: SessionBuilder) -> SessionBuilder {
+        builder.config.headers.push(self);
+        builder
+    }
+}
+
+impl OptionSetter<SessionBuilder> for HeartBeat {
+    fn set_option(self, mut builder: SessionBuilder) -> SessionBuilder {
+        builder.config.heartbeat = self;
+        builder
+    }
+}
+
+impl<'b> OptionSetter<SessionBuilder> for Credentials<'b> {
+    fn set_option(self, mut builder: SessionBuilder) -> SessionBuilder {
+        builder.config.credentials = Some(OwnedCredentials::from(self));
+        builder
+    }
+}
+
+impl<'b> OptionSetter<SessionBuilder> for SuppressedHeader<'b> {
+    fn set_option(self, mut builder: SessionBuilder) -> SessionBuilder {
+        let SuppressedHeader(key) = self;
+        builder
+            .config
+            .headers
+            .retain(|header| header.get_key().as_str() != key);
+        builder
+    }
+}
+
+impl<'a, T> OptionSetter<SubscriptionBuilder<'a, T>> for Header {
+    fn set_option(self, mut builder: SubscriptionBuilder<'a, T>) -> SubscriptionBuilder<'a, T> {
+        builder.headers.push(self);
+        builder
+    }
+}
+
+impl<'a, 'b, T> OptionSetter<SubscriptionBuilder<'b, T>> for SuppressedHeader<'a> {
+    fn set_option(self, mut builder: SubscriptionBuilder<'b, T>) -> SubscriptionBuilder<'b, T> {
+        let SuppressedHeader(key) = self;
+        builder
+            .headers
+            .retain(|header| header.get_key().as_str() != key);
+        builder
+    }
+}
+
+impl<'a, T> OptionSetter<SubscriptionBuilder<'a, T>> for AckMode {
+    fn set_option(self, mut builder: SubscriptionBuilder<'a, T>) -> SubscriptionBuilder<'a, T> {
+        builder.ack_mode = self;
+        builder
+    }
+}
+
+impl<'a, T> OptionSetter<MessageBuilder<'a, T>> for GenerateReceipt
+    where
+        T: tokio_io::AsyncWrite + tokio_io::AsyncRead + Send + 'static,
+{
+    fn set_option(self, mut builder: MessageBuilder<'a, T>) -> MessageBuilder<'a, T> {
+        let next_id = builder.session.generate_receipt_id();
+        let receipt_id = format!("message/{}", next_id);
+        builder.receipt_request = Some(ReceiptRequest::new(receipt_id.clone()));
+        builder
+            .frame
+            .headers
+            .push(Header::new(RECEIPT, receipt_id.as_ref()));
+        builder
+    }
+}
+
+impl<'a, T> OptionSetter<SubscriptionBuilder<'a, T>> for GenerateReceipt
+    where
+        T: tokio_io::AsyncWrite + tokio_io::AsyncRead + Send + 'static,
+{
+    fn set_option(self, mut builder: SubscriptionBuilder<'a, T>) -> SubscriptionBuilder<'a, T> {
+        let next_id = builder.session.generate_receipt_id();
+        let receipt_id = format!("message/{}", next_id);
+        builder.receipt_request = Some(ReceiptRequest::new(receipt_id.clone()));
+        builder
+            .headers
+            .push(Header::new(RECEIPT, receipt_id.as_ref()));
+        builder
+    }
+}
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/session.rs.html b/doc/src/epicbox/broker/stomp/session.rs.html new file mode 100644 index 0000000..4167a62 --- /dev/null +++ b/doc/src/epicbox/broker/stomp/session.rs.html @@ -0,0 +1,1005 @@ +session.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+
use std::collections::hash_map::HashMap;
+use std::collections::VecDeque;
+use std::io::Error as IoError;
+use std::io::ErrorKind;
+use std::io::Result;
+use std::time::{Duration, Instant};
+use tokio_codec::Decoder;
+use tokio_codec::Framed;
+use tokio_io::{AsyncWrite, AsyncRead};
+use tokio_timer::Delay;
+use futures::*;
+
+use super::connection::{self, select_heartbeat};
+use super::subscription::{AckMode, AckOrNack, Subscription};
+use super::frame::{Frame, Command, ToFrameBody};
+use super::frame::Transmission::{self, HeartBeat, CompleteFrame};
+use super::header::*;
+use super::transaction::Transaction;
+use super::session_builder::SessionConfig;
+use super::message_builder::MessageBuilder;
+use super::subscription_builder::SubscriptionBuilder;
+use super::codec::Codec;
+
+const GRACE_PERIOD_MULTIPLIER: f32 = 2.0;
+
+pub struct OutstandingReceipt {
+    pub original_frame: Frame,
+}
+
+impl OutstandingReceipt {
+    pub fn new(original_frame: Frame) -> Self {
+        OutstandingReceipt { original_frame }
+    }
+}
+
+pub struct GenerateReceipt;
+
+pub struct ReceiptRequest {
+    pub id: String,
+}
+
+impl ReceiptRequest {
+    pub fn new(id: String) -> Self {
+        ReceiptRequest { id }
+    }
+}
+
+struct HeartBeatDelay {
+    interval: u32,
+    delay: Delay,
+}
+impl HeartBeatDelay {
+    fn new(interval: u32) -> Self {
+        let delay = Delay::new(Instant::now() + Duration::from_millis(interval as _));
+        Self { interval, delay }
+    }
+}
+impl Future for HeartBeatDelay {
+    type Item = ();
+    type Error = IoError;
+
+    fn poll(&mut self) -> Poll<(), IoError> {
+        match self.delay.poll() {
+            Err(_e) => Err(IoError::new(ErrorKind::Other, "timer")),
+            Ok(res) => Ok(res),
+        }
+    }
+}
+fn poll_heartbeat(mut heartbeat: Option<&mut HeartBeatDelay>) -> Poll<(), IoError> {
+    match heartbeat {
+        Some(ref mut inner) => inner.poll(),
+        None => Ok(Async::NotReady),
+    }
+}
+
+pub struct SessionState {
+    next_transaction_id: u32,
+    next_subscription_id: u32,
+    next_receipt_id: u32,
+
+    rx_heartbeat: Option<HeartBeatDelay>,
+    tx_heartbeat: Option<HeartBeatDelay>,
+
+    pub subscriptions: HashMap<String, Subscription>,
+    pub outstanding_receipts: HashMap<String, OutstandingReceipt>,
+}
+
+impl SessionState {
+    pub fn new() -> SessionState {
+        SessionState {
+            next_transaction_id: 0,
+            next_subscription_id: 0,
+            next_receipt_id: 0,
+            rx_heartbeat: None,
+            tx_heartbeat: None,
+            subscriptions: HashMap::new(),
+            outstanding_receipts: HashMap::new(),
+        }
+    }
+}
+
+// *** Public API ***
+impl<T> Session<T>
+    where
+        T: AsyncWrite + AsyncRead + Send + 'static,
+{
+    pub fn send_frame(&mut self, fr: Frame) {
+        self.send(Transmission::CompleteFrame(fr))
+    }
+
+    pub fn message<'builder, O: ToFrameBody>(
+        &'builder mut self,
+        destination: &str,
+        body_convertible: O,
+    ) -> MessageBuilder<'builder, T> {
+        let send_frame = Frame::send(destination, body_convertible.to_frame_body());
+        MessageBuilder::new(self, send_frame)
+    }
+
+    pub fn subscription<'builder>(
+        &'builder mut self,
+        destination: &str,
+    ) -> SubscriptionBuilder<'builder, T> {
+        SubscriptionBuilder::new(self, destination.to_owned())
+    }
+
+    pub fn begin_transaction<'b>(&'b mut self) -> Transaction<'b, T> {
+        let mut transaction = Transaction::new(self);
+        let _ = transaction.begin();
+        transaction
+    }
+
+    pub fn unsubscribe(&mut self, sub_id: &str) {
+        self.state.subscriptions.remove(sub_id);
+        let unsubscribe_frame = Frame::unsubscribe(sub_id.as_ref());
+        self.send(CompleteFrame(unsubscribe_frame))
+    }
+
+    pub fn disconnect(&mut self) {
+        self.send_frame(Frame::disconnect());
+    }
+
+    pub fn acknowledge_frame(&mut self, frame: &Frame, which: AckOrNack) {
+        if let Some(ack_id) = frame.headers.get(ACK) {
+            let ack_frame = if let AckOrNack::Ack = which {
+                Frame::ack(ack_id)
+            } else {
+                Frame::nack(ack_id)
+            };
+            self.send_frame(ack_frame);
+        }
+    }
+}
+
+pub type ConnectFuture<T> = Box<Future<Item = T, Error = IoError> + Send>;
+
+// *** pub(crate) API ***
+impl<T> Session<T>
+    where
+        T: AsyncWrite + AsyncRead + Send + 'static,
+{
+    pub(crate) fn new(config: SessionConfig, stream: ConnectFuture<T>) -> Self {
+        Self {
+            config,
+            state: SessionState::new(),
+            events: VecDeque::new(),
+            stream: StreamState::Connecting(stream),
+        }
+    }
+
+    pub(crate) fn generate_transaction_id(&mut self) -> u32 {
+        let id = self.state.next_transaction_id;
+        self.state.next_transaction_id += 1;
+        id
+    }
+
+    pub(crate) fn generate_subscription_id(&mut self) -> u32 {
+        let id = self.state.next_subscription_id;
+        self.state.next_subscription_id += 1;
+        id
+    }
+
+    pub(crate) fn generate_receipt_id(&mut self) -> u32 {
+        let id = self.state.next_receipt_id;
+        self.state.next_receipt_id += 1;
+        id
+    }
+}
+
+pub struct Session<T> {
+    config: SessionConfig,
+    pub(crate) state: SessionState,
+    stream: StreamState<T>,
+    events: VecDeque<SessionEvent>,
+}
+
+// *** Internal API ***
+impl<T> Session<T>
+    where
+        T: AsyncWrite + AsyncRead + Send + 'static,
+{
+    fn _send(&mut self, tx: Transmission) -> Result<()> {
+        if let StreamState::Connected(ref mut st) = self.stream {
+            st.start_send(tx)?;
+            st.poll_complete()?;
+        } else {
+            warn!("sending {:?} whilst disconnected", tx);
+        }
+        Ok(())
+    }
+
+    fn send(&mut self, tx: Transmission) {
+        if let Err(e) = self._send(tx) {
+            self.on_disconnect(DisconnectionReason::SendFailed(e));
+        }
+    }
+
+    fn register_tx_heartbeat_timeout(&mut self) -> Result<()> {
+        if let Some(mut hb) = self.state.tx_heartbeat.take() {
+            hb.delay = Delay::new(Instant::now() + Duration::from_millis(hb.interval as _));
+            self.state.tx_heartbeat = Some(hb);
+        }
+        Ok(())
+    }
+
+    fn register_rx_heartbeat_timeout(&mut self) -> Result<()> {
+        if let Some(mut hb) = self.state.rx_heartbeat.take() {
+            hb.delay = Delay::new(Instant::now() + Duration::from_millis(hb.interval as _));
+            self.state.rx_heartbeat = Some(hb);
+        }
+
+        Ok(())
+    }
+
+    fn on_recv_data(&mut self) -> Result<()> {
+        if self.state.rx_heartbeat.is_some() {
+            self.register_rx_heartbeat_timeout()?;
+        }
+        Ok(())
+    }
+
+    fn reply_to_heartbeat(&mut self) -> Result<()> {
+        debug!("Sending heartbeat");
+        self.send(HeartBeat);
+        self.register_tx_heartbeat_timeout()?;
+        Ok(())
+    }
+
+    fn on_disconnect(&mut self, reason: DisconnectionReason) {
+        info!("Disconnected.");
+        self.events.push_back(SessionEvent::Disconnected(reason));
+
+        // drop will disconnect undering AsyncIo
+        self.stream = StreamState::Failed;
+        self.state.tx_heartbeat = None;
+        self.state.rx_heartbeat = None;
+    }
+
+    fn on_stream_ready(&mut self) {
+        debug!("Stream ready!");
+        // Add credentials to the header list if specified
+        match self.config.credentials.clone() {
+            // TODO: Refactor to avoid clone
+            Some(credentials) => {
+                debug!(
+                    "Using provided credentials: login '{}', passcode '{}'",
+                    credentials.login, credentials.passcode
+                );
+                let mut headers = &mut self.config.headers;
+                headers.push(Header::new(LOGIN, &credentials.login));
+                headers.push(Header::new(PASSCODE, &credentials.passcode));
+            }
+            None => debug!("No credentials supplied."),
+        }
+
+        let connection::HeartBeat(client_tx_ms, client_rx_ms) = self.config.heartbeat;
+        let heart_beat_string = format!("{},{}", client_tx_ms, client_rx_ms);
+        debug!("Using heartbeat: {},{}", client_tx_ms, client_rx_ms);
+        self.config
+            .headers
+            .push(Header::new(HEART_BEAT, heart_beat_string.as_ref()));
+
+        let connect_frame = Frame {
+            command: Command::Connect,
+            headers: self.config.headers.clone(), /* Cloned to allow this to be re-used */
+            body: Vec::new(),
+        };
+
+        self.send_frame(connect_frame);
+    }
+    fn on_message(&mut self, frame: Frame) {
+        let mut sub_data = None;
+        if let Some(sub_id) = frame.headers.get(SUBSCRIPTION) {
+            if let Some(ref sub) = self.state.subscriptions.get(sub_id) {
+                sub_data = Some((sub.destination.clone(), sub.ack_mode));
+            }
+        }
+        if let Some((destination, ack_mode)) = sub_data {
+            self.events.push_back(SessionEvent::Message {
+                destination,
+                ack_mode,
+                frame,
+            });
+        } else {
+            self.events.push_back(SessionEvent::Subscriptionless(frame));
+        }
+    }
+
+    fn on_connected_frame_received(&mut self, connected_frame: Frame) -> Result<()> {
+        // The Client's requested tx/rx HeartBeat timeouts
+        let connection::HeartBeat(client_tx_ms, client_rx_ms) = self.config.heartbeat;
+
+        // The timeouts the server is willing to provide
+        let (server_tx_ms, server_rx_ms) = match connected_frame.headers.get_heart_beat() {
+            Some((tx_ms, rx_ms)) => (tx_ms, rx_ms),
+            None => (0, 0),
+        };
+
+        let (agreed_upon_tx_ms, agreed_upon_rx_ms) =
+            select_heartbeat(client_tx_ms, client_rx_ms, server_tx_ms, server_rx_ms);
+
+        self.state.rx_heartbeat = match agreed_upon_rx_ms {
+            0 => None,
+            ms => Some(HeartBeatDelay::new(
+                (ms as f32 * GRACE_PERIOD_MULTIPLIER) as u32,
+            )),
+        };
+        self.state.tx_heartbeat = match agreed_upon_tx_ms {
+            0 => None,
+            ms => Some(HeartBeatDelay::new(ms)),
+        };
+
+        self.register_tx_heartbeat_timeout()?;
+        self.register_rx_heartbeat_timeout()?;
+
+        self.events.push_back(SessionEvent::Connected);
+
+        Ok(())
+    }
+    fn handle_receipt(&mut self, frame: Frame) {
+        let receipt_id = {
+            if let Some(receipt_id) = frame.headers.get(RECEIPT_ID) {
+                Some(receipt_id.to_owned())
+            } else {
+                None
+            }
+        };
+        if let Some(receipt_id) = receipt_id {
+            if receipt_id == "msg/disconnect" {
+                self.on_disconnect(DisconnectionReason::Requested);
+            }
+            if let Some(entry) = self.state.outstanding_receipts.remove(&receipt_id) {
+                let original_frame = entry.original_frame;
+                self.events.push_back(SessionEvent::Receipt {
+                    id: receipt_id,
+                    original: original_frame,
+                    receipt: frame,
+                });
+            }
+        }
+    }
+
+    fn poll_stream_complete(&mut self) {
+        let res = {
+            if let StreamState::Connected(ref mut fr) = self.stream {
+                fr.poll_complete()
+            } else {
+                Ok(Async::NotReady)
+            }
+        };
+        if let Err(e) = res {
+            self.on_disconnect(DisconnectionReason::SendFailed(e));
+        }
+    }
+
+    fn poll_stream(&mut self) -> Async<Option<Transmission>> {
+        use self::StreamState::*;
+        match ::std::mem::replace(&mut self.stream, Failed) {
+            Connected(mut fr) => match fr.poll() {
+                Ok(Async::Ready(Some(r))) => {
+                    self.stream = Connected(fr);
+                    Async::Ready(Some(r))
+                }
+                Ok(Async::Ready(None)) => {
+                    self.on_disconnect(DisconnectionReason::ClosedByOtherSide);
+                    Async::NotReady
+                }
+                Ok(Async::NotReady) => {
+                    self.stream = Connected(fr);
+                    Async::NotReady
+                }
+                Err(e) => {
+                    self.on_disconnect(DisconnectionReason::RecvFailed(e));
+                    Async::NotReady
+                }
+            },
+
+            Connecting(mut tsn) => match tsn.poll() {
+                Ok(Async::Ready(s)) => {
+                    let fr = Codec.framed(s);
+                    self.stream = Connected(fr);
+                    self.on_stream_ready();
+                    self.poll_stream()
+                }
+                Ok(Async::NotReady) => {
+                    self.stream = Connecting(tsn);
+                    Async::NotReady
+                }
+                Err(e) => {
+                    self.on_disconnect(DisconnectionReason::ConnectFailed(e));
+                    Async::NotReady
+                }
+            },
+
+            Failed => Async::NotReady,
+        }
+    }
+}
+
+#[derive(Debug)]
+pub enum DisconnectionReason {
+    RecvFailed(IoError),
+    ConnectFailed(IoError),
+    SendFailed(IoError),
+    ClosedByOtherSide,
+    HeartBeatTimeout,
+    Requested,
+}
+
+#[derive(Debug)]
+pub enum SessionEvent {
+    Connected,
+    Error(Frame),
+    Receipt {
+        id: String,
+        original: Frame,
+        receipt: Frame,
+    },
+    Message {
+        destination: String,
+        ack_mode: AckMode,
+        frame: Frame,
+    },
+    Subscriptionless(Frame),
+    Unknown(Frame),
+    Disconnected(DisconnectionReason),
+}
+
+pub(crate) enum StreamState<T> {
+    Connected(Framed<T, Codec>),
+    Connecting(ConnectFuture<T>),
+    Failed,
+}
+
+impl<T> Stream for Session<T>
+    where
+        T: AsyncWrite + AsyncRead + Send + 'static,
+{
+    type Item = SessionEvent;
+    type Error = IoError;
+
+    fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error> {
+        while let Async::Ready(Some(val)) = self.poll_stream() {
+            match val {
+                HeartBeat => {
+                    debug!("Received heartbeat.");
+                    self.on_recv_data()?;
+                }
+                CompleteFrame(frame) => {
+                    debug!("Received frame: {:?}", frame);
+                    self.on_recv_data()?;
+                    match frame.command {
+                        Command::Error => self.events.push_back(SessionEvent::Error(frame)),
+                        Command::Receipt => self.handle_receipt(frame),
+                        Command::Connected => self.on_connected_frame_received(frame)?,
+                        Command::Message => self.on_message(frame),
+                        _ => self.events.push_back(SessionEvent::Unknown(frame)),
+                    };
+                }
+            }
+        }
+
+        if let Async::Ready(_) = poll_heartbeat(self.state.rx_heartbeat.as_mut())? {
+            self.on_disconnect(DisconnectionReason::HeartBeatTimeout);
+        }
+
+        if let Async::Ready(_) = poll_heartbeat(self.state.tx_heartbeat.as_mut())? {
+            self.reply_to_heartbeat()?;
+        }
+
+        self.poll_stream_complete();
+
+        match self.events.pop_front() {
+            None => Ok(Async::NotReady),
+            Some(ev) => {
+                task::current().notify();
+                Ok(Async::Ready(Some(ev)))
+            }
+        }
+    }
+}
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/session_builder.rs.html b/doc/src/epicbox/broker/stomp/session_builder.rs.html new file mode 100644 index 0000000..a485ec5 --- /dev/null +++ b/doc/src/epicbox/broker/stomp/session_builder.rs.html @@ -0,0 +1,92 @@ +session_builder.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+
use super::option_setter::OptionSetter;
+use super::connection::{HeartBeat, OwnedCredentials};
+use super::header::*;
+use super::session::{ConnectFuture, Session};
+
+#[derive(Clone)]
+pub struct SessionConfig {
+    pub credentials: Option<OwnedCredentials>,
+    pub heartbeat: HeartBeat,
+    pub headers: HeaderList,
+}
+
+pub struct SessionBuilder {
+    pub config: SessionConfig,
+}
+
+impl SessionBuilder {
+    pub fn new() -> SessionBuilder {
+        let config = SessionConfig {
+            credentials: None,
+            heartbeat: HeartBeat(0, 0),
+            headers: header_list![
+                ACCEPT_VERSION => "1.2",
+                CONTENT_LENGTH => "0"
+            ],
+        };
+        SessionBuilder { config: config }
+    }
+
+    pub fn build<T>(self, conn: ConnectFuture<T>) -> Session<T>
+        where
+            T: tokio_io::AsyncWrite + tokio_io::AsyncRead + Send + 'static,
+    {
+        Session::new(self.config, conn)
+    }
+
+    pub fn with<'b, O>(self, option_setter: O) -> SessionBuilder
+        where
+            O: OptionSetter<SessionBuilder>,
+    {
+        option_setter.set_option(self)
+    }
+}
+
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/subscription.rs.html b/doc/src/epicbox/broker/stomp/subscription.rs.html new file mode 100644 index 0000000..5657522 --- /dev/null +++ b/doc/src/epicbox/broker/stomp/subscription.rs.html @@ -0,0 +1,88 @@ +subscription.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+
use super::header::HeaderList;
+
+#[derive(Copy, Clone, Debug)]
+pub enum AckMode {
+    Auto,
+    Client,
+    ClientIndividual,
+}
+
+impl AckMode {
+    pub fn as_str(&self) -> &'static str {
+        match *self {
+            AckMode::Auto => "auto",
+            AckMode::Client => "client",
+            AckMode::ClientIndividual => "client-individual",
+        }
+    }
+}
+
+#[derive(Clone, Copy)]
+pub enum AckOrNack {
+    Ack,
+    Nack,
+}
+
+pub struct Subscription {
+    pub id: String,
+    pub destination: String,
+    pub ack_mode: AckMode,
+    pub headers: HeaderList,
+}
+
+impl Subscription {
+    pub fn new(id: u32, destination: &str, ack_mode: AckMode, headers: HeaderList) -> Subscription {
+        Subscription {
+            id: format!("stomp-rs/{}", id),
+            destination: destination.to_string(),
+            ack_mode: ack_mode,
+            headers: headers,
+        }
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/subscription_builder.rs.html b/doc/src/epicbox/broker/stomp/subscription_builder.rs.html new file mode 100644 index 0000000..1b642d6 --- /dev/null +++ b/doc/src/epicbox/broker/stomp/subscription_builder.rs.html @@ -0,0 +1,143 @@ +subscription_builder.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+
use super::session::{Session, ReceiptRequest, OutstandingReceipt};
+use super::subscription::{Subscription, AckMode};
+use super::frame::Frame;
+use super::header::HeaderList;
+use super::option_setter::OptionSetter;
+
+pub struct SubscriptionBuilder<'a, T: 'static> {
+    pub session: &'a mut Session<T>,
+    pub destination: String,
+    pub ack_mode: AckMode,
+    pub headers: HeaderList,
+    pub receipt_request: Option<ReceiptRequest>,
+}
+
+impl<'a, T> SubscriptionBuilder<'a, T>
+    where
+        T: tokio_io::AsyncWrite + tokio_io::AsyncRead + Send + 'static,
+{
+    pub fn new(session: &'a mut Session<T>, destination: String) -> Self {
+        SubscriptionBuilder {
+            session: session,
+            destination: destination,
+            ack_mode: AckMode::Auto,
+            headers: HeaderList::new(),
+            receipt_request: None,
+        }
+    }
+
+    #[allow(dead_code)]
+    pub fn start(mut self) -> String {
+        let next_id = self.session.generate_subscription_id();
+        let subscription = Subscription::new(
+            next_id,
+            &self.destination,
+            self.ack_mode,
+            self.headers.clone(),
+        );
+        let mut subscribe_frame =
+            Frame::subscribe(&subscription.id, &self.destination, self.ack_mode);
+
+        subscribe_frame.headers.concat(&mut self.headers);
+
+        self.session.send_frame(subscribe_frame.clone());
+
+        debug!(
+            "Registering callback for subscription id '{}' from builder",
+            subscription.id
+        );
+        let id_to_return = subscription.id.to_string();
+        self.session
+            .state
+            .subscriptions
+            .insert(subscription.id.to_string(), subscription);
+        if self.receipt_request.is_some() {
+            let request = self.receipt_request.unwrap();
+            self.session
+                .state
+                .outstanding_receipts
+                .insert(request.id, OutstandingReceipt::new(subscribe_frame.clone()));
+        }
+        id_to_return
+    }
+
+    pub fn with<O>(self, option_setter: O) -> SubscriptionBuilder<'a, T>
+        where
+            O: OptionSetter<SubscriptionBuilder<'a, T>>,
+    {
+        option_setter.set_option(self)
+    }
+}
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/broker/stomp/transaction.rs.html b/doc/src/epicbox/broker/stomp/transaction.rs.html new file mode 100644 index 0000000..99db4d0 --- /dev/null +++ b/doc/src/epicbox/broker/stomp/transaction.rs.html @@ -0,0 +1,106 @@ +transaction.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+
use super::frame::Frame;
+use super::frame::ToFrameBody;
+use super::message_builder::MessageBuilder;
+use super::header::*;
+use super::session::Session;
+
+pub struct Transaction<'tx, T: 'static> {
+    pub id: String,
+    pub session: &'tx mut Session<T>,
+}
+
+impl<'tx, T: 'static> Transaction<'tx, T>
+    where
+        T: tokio_io::AsyncWrite + tokio_io::AsyncRead + Send + 'static,
+{
+    pub fn new(session: &'tx mut Session<T>) -> Transaction<'tx, T> {
+        Transaction {
+            id: format!("tx/{}", session.generate_transaction_id()),
+            session,
+        }
+    }
+
+    pub fn message<'builder, B: ToFrameBody>(
+        &'builder mut self,
+        destination: &str,
+        body_convertible: B,
+    ) -> MessageBuilder<'builder, T> {
+        let mut send_frame = Frame::send(destination, body_convertible.to_frame_body());
+        send_frame
+            .headers
+            .push(Header::new(TRANSACTION, self.id.as_ref()));
+        MessageBuilder::new(self.session, send_frame)
+    }
+
+    // TODO: See if it's feasible to do this via command_sender
+
+    pub fn begin(&mut self) {
+        let begin_frame = Frame::begin(self.id.as_ref());
+        self.session.send_frame(begin_frame)
+    }
+
+    pub fn commit(self) {
+        let commit_frame = Frame::commit(self.id.as_ref());
+        self.session.send_frame(commit_frame)
+    }
+
+    pub fn abort(self) {
+        let abort_frame = Frame::abort(self.id.as_ref());
+        self.session.send_frame(abort_frame)
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/main.rs.html b/doc/src/epicbox/main.rs.html new file mode 100644 index 0000000..4b073eb --- /dev/null +++ b/doc/src/epicbox/main.rs.html @@ -0,0 +1,172 @@ +main.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+
#[macro_use]
+extern crate serde_derive;
+#[macro_use]
+extern crate log;
+extern crate colored;
+extern crate env_logger;
+extern crate failure;
+#[macro_use]
+extern crate futures;
+extern crate bytes;
+extern crate nitox;
+extern crate nom;
+extern crate serde_json;
+extern crate tokio;
+extern crate tokio_codec;
+extern crate tokio_core;
+extern crate tokio_io;
+extern crate tokio_timer;
+extern crate unicode_segmentation;
+extern crate uuid;
+extern crate ws;
+
+extern crate epicboxlib;
+
+mod broker;
+mod server;
+
+use broker::Broker;
+use server::AsyncServer;
+use std::net::ToSocketAddrs;
+
+fn main() {
+    env_logger::init();
+
+    info!("hello, world!");
+
+    let broker_uri = std::env::var("BROKER_URI")
+        .unwrap_or_else(|_| "127.0.0.1:61613".to_string())
+        .to_socket_addrs()
+        .unwrap()
+        .next();
+
+    let username = std::env::var("BROKER_USERNAME").unwrap_or("guest".to_string());
+    let password = std::env::var("BROKER_PASSWORD").unwrap_or("guest".to_string());
+
+    let epicbox_domain = std::env::var("EPICBOX_DOMAIN").unwrap_or("127.0.0.1".to_string());
+    let epicbox_port = std::env::var("EPICBOX_PORT").unwrap_or("13420".to_string());
+    let epicbox_port = u16::from_str_radix(&epicbox_port, 10).expect("invalid EPICBOX_PORT given!");
+    let epicbox_protocol_unsecure = std::env::var("EPICBOX_PROTOCOL_UNSECURE")
+        .map(|_| true)
+        .unwrap_or(false);
+
+    if broker_uri.is_none() {
+        error!("could not resolve broker uri!");
+        panic!();
+    }
+
+    let broker_uri = broker_uri.unwrap();
+
+    let bind_address =
+        std::env::var("BIND_ADDRESS").unwrap_or_else(|_| "0.0.0.0:13420".to_string());
+
+    info!("Broker URI: {}", broker_uri);
+    info!("Bind address: {}", bind_address);
+
+    let mut broker = Broker::new(broker_uri, username, password);
+    let sender = broker.start().expect("failed initiating broker session");
+    let response_handlers_sender = AsyncServer::init();
+
+    ws::Builder::new()
+        .build(|out| {
+            AsyncServer::new(
+                out,
+                sender.clone(),
+                response_handlers_sender.clone(),
+                &epicbox_domain,
+                epicbox_port,
+                epicbox_protocol_unsecure,
+            )
+        })
+        .unwrap()
+        .listen(&bind_address[..])
+        .unwrap();
+}
+
+
+ + \ No newline at end of file diff --git a/doc/src/epicbox/server/mod.rs.html b/doc/src/epicbox/server/mod.rs.html new file mode 100644 index 0000000..5c46aa0 --- /dev/null +++ b/doc/src/epicbox/server/mod.rs.html @@ -0,0 +1,898 @@ +mod.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+
use colored::*;
+use futures::{
+    future::lazy,
+    sync::mpsc::{unbounded, UnboundedReceiver, UnboundedSender},
+    Future, Stream,
+};
+use std::collections::HashMap;
+use uuid::Uuid;
+
+use ws::{CloseCode, Handler, Handshake, Message, Request, Response, Result as WsResult, Sender, connect};
+
+use epicboxlib::error::{ErrorKind, Result};
+use epicboxlib::types::{EpicboxAddress, EpicboxError, EpicboxRequest, EpicboxResponse};
+use epicboxlib::utils::crypto::{verify_signature, Base58, Hex};
+use epicboxlib::utils::secp::{PublicKey, Signature};
+
+use crate::broker::{BrokerRequest, BrokerResponse};
+
+static MAX_SUBSCRIPTIONS: usize = 1;
+
+pub struct BrokerResponseHandler {
+    inner: std::sync::Arc<std::sync::Mutex<Server>>,
+    response_receiver: UnboundedReceiver<BrokerResponse>,
+}
+
+pub struct AsyncServer {
+    id: String,
+    inner: std::sync::Arc<std::sync::Mutex<Server>>,
+    nats_sender: UnboundedSender<BrokerRequest>,
+    response_handlers_sender: UnboundedSender<BrokerResponseHandler>,
+    subscriptions: HashMap<String, Subscription>,
+    epicbox_domain: String,
+    epicbox_port: u16,
+    epicbox_protocol_unsecure: bool,
+}
+
+pub struct Server {
+    id: String,
+    out: Sender,
+}
+
+struct Subscription {}
+
+#[derive(Serialize, Deserialize, Debug)]
+struct SignedPayload {
+    str: String,
+    challenge: String,
+    signature: String,
+}
+
+impl Drop for AsyncServer {
+    fn drop(&mut self) {
+        for (subject, _subscription) in &self.subscriptions {
+            if self
+                .nats_sender
+                .unbounded_send(BrokerRequest::Unsubscribe {
+                    id: self.id.clone(),
+                })
+                .is_err()
+            {
+                error!("failed to unsubscribe while dropping server!");
+            };
+        }
+    }
+}
+
+impl AsyncServer {
+    pub fn new(
+        out: Sender,
+        nats_sender: UnboundedSender<BrokerRequest>,
+        response_handlers_sender: UnboundedSender<BrokerResponseHandler>,
+        epicbox_domain: &str,
+        epicbox_port: u16,
+        epicbox_protocol_unsecure: bool,
+    ) -> AsyncServer {
+        let id = Uuid::new_v4().to_string();
+
+        let server = Server {
+            id: id.clone(),
+            out,
+        };
+
+        AsyncServer {
+            id: id.clone(),
+            inner: std::sync::Arc::new(std::sync::Mutex::new(server)),
+            nats_sender,
+            response_handlers_sender,
+            subscriptions: HashMap::new(),
+            epicbox_domain: epicbox_domain.to_string(),
+            epicbox_port,
+            epicbox_protocol_unsecure,
+        }
+    }
+
+    pub fn init() -> UnboundedSender<BrokerResponseHandler> {
+        let (fut_tx, fut_rx) = unbounded::<BrokerResponseHandler>();
+
+        std::thread::spawn(move || {
+            info!("broker handler started");
+            let fut_loop = fut_rx
+                .for_each(move |handler| {
+                    let clone = handler.inner.clone();
+                    let response_loop = handler.response_receiver.for_each(move |m| {
+                        match m {
+                            BrokerResponse::Message {
+                                subject: _,
+                                payload,
+                                reply_to,
+                            } => {
+                                let signed_payload =
+                                    serde_json::from_str::<SignedPayload>(&payload);
+                                if signed_payload.is_ok() {
+                                    let signed_payload = signed_payload.unwrap();
+                                    let response = EpicboxResponse::Slate {
+                                        from: reply_to,
+                                        str: signed_payload.str,
+                                        challenge: signed_payload.challenge,
+                                        signature: signed_payload.signature,
+                                    };
+                                    let guard = clone.lock().unwrap();
+                                    let ref server = *guard;
+                                    info!("[{}] <- {}", server.id.bright_green(), response);
+                                    if server
+                                        .out
+                                        .send(serde_json::to_string(&response).unwrap())
+                                        .is_err()
+                                    {
+                                        error!("failed sending slate to client!");
+                                    };
+                                } else {
+                                    error!("invalid payload!");
+                                }
+                            }
+                        }
+                        Ok(())
+                    });
+
+                    std::thread::spawn(move || {
+                        tokio::run(lazy(|| {
+                            tokio::spawn(response_loop);
+                            Ok(())
+                        }));
+                    });
+                    Ok(())
+                })
+                .map_err(|_| {});
+
+            tokio::run(lazy(move || tokio::spawn(fut_loop)));
+            debug!("future thread ended...");
+        });
+        fut_tx
+    }
+
+    fn error(kind: EpicboxError) -> EpicboxResponse {
+        let description = format!("{}", kind);
+        EpicboxResponse::Error { kind, description }
+    }
+
+    fn ok() -> EpicboxResponse {
+        EpicboxResponse::Ok
+    }
+
+    fn get_challenge_raw(&self) -> &str {
+        "7WUDtkSaKyGRUnQ22rE3QUXChV8DmA6NnunDYP4vheTpc"
+    }
+
+    fn get_challenge(&self) -> EpicboxResponse {
+        EpicboxResponse::Challenge {
+            str: String::from(self.get_challenge_raw()),
+        }
+    }
+
+    fn verify_signature(&self, public_key: &str, challenge: &str, signature: &str) -> Result<()> {
+        let (public_key, _) = PublicKey::from_base58_check_raw(public_key, 2)?;
+        let signature = Signature::from_hex(signature)?;
+        verify_signature(challenge, &signature, &public_key)
+            .map_err(|_| ErrorKind::EpicboxProtocolError(EpicboxError::InvalidSignature))?;
+        Ok(())
+    }
+
+    fn subscribe(&mut self, address: String, signature: String) -> EpicboxResponse {
+        let result = self.verify_signature(&address, self.get_challenge_raw(), &signature);
+        match result {
+            Ok(()) => {
+                if self.subscriptions.len() == MAX_SUBSCRIPTIONS {
+                    AsyncServer::error(EpicboxError::TooManySubscriptions)
+                } else {
+                    let (res_tx, res_rx) = unbounded::<BrokerResponse>();
+                    if self
+                        .nats_sender
+                        .unbounded_send(BrokerRequest::Subscribe {
+                            id: self.id.clone(),
+                            subject: address.clone(),
+                            response_sender: res_tx,
+                        })
+                        .is_err()
+                    {
+                        error!("could not issue subscribe request!");
+                        return AsyncServer::error(EpicboxError::UnknownError);
+                    };
+
+                    if self
+                        .response_handlers_sender
+                        .unbounded_send(BrokerResponseHandler {
+                            inner: self.inner.clone(),
+                            response_receiver: res_rx,
+                        })
+                        .is_err()
+                    {
+                        error!("could not register subscription handler!");
+                        return AsyncServer::error(EpicboxError::UnknownError);
+                    };
+
+                    self.subscriptions.insert(address.clone(), Subscription {});
+
+                    AsyncServer::ok()
+                }
+            }
+            Err(_) => AsyncServer::error(EpicboxError::UnknownError),
+        }
+    }
+
+    fn unsubscribe(&mut self, address: String) -> EpicboxResponse {
+        let result = self.subscriptions.remove(&address);
+        match result {
+            Some(_subscription) => {
+                if self
+                    .nats_sender
+                    .unbounded_send(BrokerRequest::Unsubscribe {
+                        id: self.id.clone(),
+                    })
+                    .is_err()
+                {
+                    error!("could not unsubscribe!");
+                    return AsyncServer::error(EpicboxError::UnknownError);
+                };
+
+                AsyncServer::ok()
+            }
+            None => AsyncServer::error(EpicboxError::InvalidRequest),
+        }
+    }
+
+    fn post_slate(
+        &self,
+        from: String,
+        to: String,
+        str: String,
+        signature: String,
+        message_expiration_in_seconds: Option<u32>,
+    ) -> EpicboxResponse {
+        let from_address = EpicboxAddress::from_str_raw(&from);
+        if from_address.is_err() {
+            return AsyncServer::error(EpicboxError::InvalidRequest);
+        }
+        let from_address = from_address.unwrap();
+
+        let to_address = EpicboxAddress::from_str_raw(&to);
+        if to_address.is_err() {
+            return AsyncServer::error(EpicboxError::InvalidRequest);
+        }
+        let to_address = to_address.unwrap();
+
+        let mut challenge = String::new();
+        challenge.push_str(&str);
+
+        let mut result =
+            self.verify_signature(&from_address.public_key, &challenge, &signature);
+
+        let mut challenge_raw = "";
+        if result.is_err() {
+            challenge.push_str(self.get_challenge_raw());
+            challenge_raw = self.get_challenge_raw();
+            result = self.verify_signature(&from_address.public_key, &challenge, &signature);
+        }
+
+        if result.is_err() {
+            return AsyncServer::error(EpicboxError::InvalidSignature);
+        }
+
+        if to_address.port == self.epicbox_port && to_address.domain == self.epicbox_domain {
+            let signed_payload = SignedPayload {
+                str,
+                challenge: challenge_raw.to_string(),
+                signature,
+            };
+
+            let signed_payload = serde_json::to_string(&signed_payload).unwrap();
+
+            if self
+                .nats_sender
+                .unbounded_send(BrokerRequest::PostMessage {
+                    subject: to_address.public_key,
+                    payload: signed_payload,
+                    reply_to: from_address.stripped(),
+                    message_expiration_in_seconds,
+                })
+                .is_err()
+                {
+                    error!("could not post message to broker!");
+                    return AsyncServer::error(EpicboxError::UnknownError);
+                };
+
+            AsyncServer::ok()
+        } else {
+            self.post_slate_federated(&from_address, &to_address, str, signature, message_expiration_in_seconds)
+        }
+    }
+
+    fn post_slate_federated(&self, from_address: &EpicboxAddress, to_address: &EpicboxAddress, str: String, signature: String, message_expiration_in_seconds: Option<u32>) -> EpicboxResponse {
+        let url = match self.epicbox_protocol_unsecure {
+            false => format!(
+                "wss://{}:{}",
+                to_address.domain,
+                to_address.port
+            ),
+            true => format!(
+                "ws://{}:{}",
+                to_address.domain,
+                to_address.port
+            )
+        };
+
+        let str = str.clone();
+        let signature = signature.clone();
+        let result = connect(url, move |sender| {
+            let str = str.clone();
+            let signature = signature.clone();
+            move |msg: Message| {
+                let response = serde_json::from_str::<EpicboxResponse>(&msg.to_string())
+                    .expect("could not parse response!");
+
+                match response {
+                    EpicboxResponse::Challenge { str: _ } => {
+                        let request = EpicboxRequest::PostSlate {
+                            from: from_address.stripped(),
+                            to: to_address.stripped(),
+                            str: str.clone(),
+                            signature: signature.clone(),
+                            message_expiration_in_seconds,
+                        };
+
+                        sender
+                            .send(serde_json::to_string(&request).unwrap())
+                            .unwrap();
+                    }
+                    EpicboxResponse::Error {
+                        kind: _,
+                        description: _,
+                    } => {
+                        sender.close(CloseCode::Abnormal).is_ok();
+                    }
+                    EpicboxResponse::Ok => {
+                        sender.close(CloseCode::Normal).is_ok();
+                    }
+                    _ => {}
+                }
+                Ok(())
+            }
+        });
+
+        match result {
+            Ok(()) => AsyncServer::ok(),
+            Err(_) => AsyncServer::error(EpicboxError::UnknownError),
+        }
+    }
+}
+
+impl Handler for AsyncServer {
+    fn on_request(&mut self, req: &Request) -> WsResult<Response> {
+        let res = Response::from_request(req);
+        if let Err(_) = res {
+            let response = Response::new(200, "", vec![]);
+            Ok(response)
+        } else {
+            Ok(res.unwrap())
+        }
+    }
+
+    fn on_open(&mut self, _: Handshake) -> WsResult<()> {
+        info!(
+            "[{}] {}",
+            self.id.bright_green(),
+            "connection established".bright_purple()
+        );
+
+        let response = self.get_challenge();
+        debug!("[{}] <- {}", self.id.bright_green(), response);
+        let server = self.inner.lock().unwrap();
+        if server
+            .out
+            .send(serde_json::to_string(&response).unwrap())
+            .is_err()
+        {
+            error!("could not send challenge to client!");
+        };
+        Ok(())
+    }
+
+    fn on_message(&mut self, msg: Message) -> WsResult<()> {
+        let request = serde_json::from_str(&msg.to_string());
+
+        let response = if request.is_ok() {
+            let request = request.unwrap();
+            info!("[{}] -> {}", self.id.bright_green(), request);
+            match request {
+                EpicboxRequest::Challenge => self.get_challenge(),
+                EpicboxRequest::Subscribe { address, signature } => {
+                    self.subscribe(address, signature)
+                }
+                EpicboxRequest::PostSlate {
+                    from,
+                    to,
+                    str,
+                    signature,
+                    message_expiration_in_seconds,
+                } => self.post_slate(from, to, str, signature, message_expiration_in_seconds),
+                EpicboxRequest::Unsubscribe { address } => self.unsubscribe(address),
+            }
+        } else {
+            debug!(
+                "[{}] -> {}",
+                self.id.bright_green(),
+                "invalid request!".bright_red()
+            );
+            AsyncServer::error(EpicboxError::InvalidRequest)
+        };
+
+        info!("[{}] <- {}", self.id.bright_green(), response);
+        let server = self.inner.lock().unwrap();
+        server.out.send(serde_json::to_string(&response).unwrap())
+    }
+
+    fn on_close(&mut self, code: CloseCode, _reason: &str) {
+        let code = format!("{:?}", code);
+        info!(
+            "[{}] {} [{}]",
+            self.id.bright_green(),
+            "connection dropped".bright_purple(),
+            code.bright_green()
+        );
+    }
+
+    fn on_error(&mut self, err: ws::Error) {
+        error!("the server encountered an error: {:?}", err);
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/doc/storage.js b/doc/storage.js new file mode 100644 index 0000000..6b16cbd --- /dev/null +++ b/doc/storage.js @@ -0,0 +1 @@ +var resourcesSuffix="";var darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");var settingsDataset=(function(){var settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}var dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){var current=getCurrentValue('rustdoc-'+settingName);if(current!==null){return current}if(settingsDataset!==null){var def=settingsDataset[settingName.replace(/-/g,'_')];if(def!==undefined){return def}}return null}var localStoredTheme=getSettingValue("theme");var savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){var length=arr.length;var i;if(reversed){for(i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(i=0;i=0){updateLocalStorage("rustdoc-preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchTheme(window.currentTheme,window.mainTheme,getSettingValue("theme")||"light",false)} \ No newline at end of file diff --git a/doc/toggle-minus.svg b/doc/toggle-minus.svg new file mode 100644 index 0000000..7315478 --- /dev/null +++ b/doc/toggle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doc/toggle-plus.svg b/doc/toggle-plus.svg new file mode 100644 index 0000000..08b1703 --- /dev/null +++ b/doc/toggle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doc/wheel.svg b/doc/wheel.svg new file mode 100644 index 0000000..01da3b2 --- /dev/null +++ b/doc/wheel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/integration.md b/docs/integration.md index 9f15a46..ffac16e 100644 --- a/docs/integration.md +++ b/docs/integration.md @@ -1,8 +1,8 @@ -# Grinbox Integration Guide +# Epicbox Integration Guide ## Introduction -Grinbox is a relay service and protocol for slate exchange between anonymous parties for building grin transactions. +Epicbox is a relay service and protocol for slate exchange between anonymous parties for building epic transactions. ### Data & Privacy @@ -15,47 +15,92 @@ if rust is already installed, you can simply update version with rustup update * A running instance of [rabbitmq](https://www.rabbitmq.com/) +* RabbitMQ Plugin stomp (https://www.rabbitmq.com/stomp.html) [rabbitmq](https://www.rabbitmq.com/) + ### Environment Variables -* `BROKER_URI`: The rabbitmq broker URI in the form of (i.e. domain:port). defaults to 127.0.0.1:5672 -* `RABBITMQ_DEFAULT_USER`: The username with which grinbox would establish connection to the rabbit broker. +* `BROKER_URI`: The rabbitmq broker URI in the form of (i.e. domain:port). defaults to 127.0.0.1:61613, watch your rabbitmq log for the stomp plugin and port started STOMP TCP listener on [::]:61613 + +* `RABBITMQ_DEFAULT_USER`: The username with which epicbox would establish connection to the rabbit broker. * `RABBITMQ_DEFAULT_PASS`: The associated password to use -* `BIND_ADDRESS`: The http listener bind address (defaults to 0.0.0.0:3420) +* `BIND_ADDRESS`: The http listener bind address (defaults to 0.0.0.0:3423) ### Installation ``` -$ git clone https://github.com/vault713/grinbox -$ cd grinbox +$ git clone https://github.com/EpicCash/epicbox +$ cd epicbox $ cargo build --release ``` And then to run: ``` $ cd target/release -$ ./grinbox -``` - -Once grinbox is running it should establish connection with the rabbitmq broker and start to listen to incoming connection on the bind address. +$ ./epicbox +... or with debug information and custom settings +$ RUST_LOG=debug EPICBOX_DOMAIN=epicbox.io BIND_ADDRESS=0.0.0.0:3423 ./epicbox +``` + +Once epicbox is running it should establish connection with the rabbitmq broker and start to listen to incoming connection on the bind address. + + +## Run Epicbox with Nginx (nginx server conf) +``` +server { + + server_name epicbox.io; + + root /var/www/html/epicbox/; + index index.html index.htm; + + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + + # set this to the BIND_ADDRESS=0.0.0.0:3423 + proxy_pass http://0.0.0.0:3423; + proxy_read_timeout 90; + + # WebSocket support + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + + + + + listen 443 ssl; # managed by Certbot + ssl_certificate /etc/letsencrypt/live/epicbox.io/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/epicbox.io/privkey.pem; # managed by Certbot + include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot + + +} +``` ## Integration -The following section covers integration requirements for client that want to communicate with a grinbox relay. +The following section covers integration requirements for client that want to communicate with a epicbox relay. -### Create Grinbox addresses +### Create Epicbox addresses -In order to be able to use grinbox, client must have a valid `grinbox address`. +In order to be able to use epicbox, client must have a valid `epicbox address`. -#### Grinbox address format +#### Epicbox address format -A grinbox address is composed of 4 components: -1. Scheme = "grinbox" [optional, can be omitted] +A epicbox address is composed of 4 components: +1. Scheme = "epicbox" [optional, can be omitted] 2. A base58-check encoded secp256k1 public key (with 2 version bytes) -3. Relay Domain [optional, defaults to `grinbox.io`] +3. Relay Domain [optional, defaults to `epicbox.epic.tech`] 4. Relay Port number [optional, defaults to 443] ``` Note that mainnet and testnet use different version bytes to clearly differentiate real vs. test address: -Mainnet version bytes: [1, 11] which generate addresses starting with a `g` in the public key component +Mainnet version bytes: [1, 11] which generate addresses starting with a `e` in the public key component Testnet version bytes: [1, 120] which generate addresses starting with an `x` in the public key component ``` @@ -63,32 +108,32 @@ Examples of valid addresses for testnet: ``` xd8dyGUuP89t2TT9N9yU7pZsr6VyJAH6wZauESBQe67q741bVoaN -grinbox://xd95u2toAVHE85BCHTi2tqddL6po3g4JVv8fFXVJGUTuMYKn6Bhp -grinbox://xd9XfKTUCGr6iwzuDKyfN8N3EXd19z4kinCWTJyK5LMzdvoY9AZs@example.com -grinbox://xd8EBsMXfYKyDJUiXYURNXJZ5e66hTJWweeYKgjPxwqXYEgkt8SE@example.com:13420 +epicbox://xd95u2toAVHE85BCHTi2tqddL6po3g4JVv8fFXVJGUTuMYKn6Bhp +epicbox://xd9XfKTUCGr6iwzuDKyfN8N3EXd19z4kinCWTJyK5LMzdvoY9AZs@example.com +epicbox://xd8EBsMXfYKyDJUiXYURNXJZ5e66hTJWweeYKgjPxwqXYEgkt8SE@example.com:13420 ``` Examples of valid addresses for mainnet: ``` -gVuQ7cspvtjKZNBuoxyjrLbNTXhqKt7Hd3MnjfMBr3kSE6z3XkCp -grinbox://gVv3oFZofJYFtRQKcab1xwhu3dAZ2EfqfuoxnwYoXL7VU7Tr8Ch2 -grinbox://gVwJ8hXkKyeGMsXgK38URgn5vYeuWRXrBzHGrgM7YcjifJEj52J6@example.com -grinbox://gVuyUw615UYnrUrMc19r8KfaECkrp1UzTT1HUxnXpaUebAGb9Y3s@example.com:13420 +eVuQ7cspvtjKZNBuoxyjrLbNTXhqKt7Hd3MnjfMBr3kSE6z3XkCp +epicbox://eVv3oFZofJYFtRQKcab1xwhu3dAZ2EfqfuoxnwYoXL7VU7Tr8Ch2 +epicbox://eVwJ8hXkKyeGMsXgK38URgn5vYeuWRXrBzHGrgM7YcjifJEj52J6@example.com +epicbox://eVuyUw615UYnrUrMc19r8KfaECkrp1UzTT1HUxnXpaUebAGb9Y3s@example.com:13420 ``` -### Connect to grinbox +### Connect to epicbox -Client communication with the grinbox service is done via websockets, utilizing a json-based protocol, where the client issues json-encoded requests to the server via the websocket, and gets json-encoded responses. Connection to grinbox can be done by any client supportive of RFC6455 websocket protocol, while actual communication with the server involves a custom set of json-encoded messages. +Client communication with the epicbox service is done via websockets, utilizing a json-based protocol, where the client issues json-encoded requests to the server via the websocket, and gets json-encoded responses. Connection to epicbox can be done by any client supportive of RFC6455 websocket protocol, while actual communication with the server involves a custom set of json-encoded messages. Each message is a json object with a `type` attribute that designates the type of message it is, and optional additional attributes depending on the message type. -#### Grinbox Protocol +#### Epicbox Protocol ##### Challenge -Grinbox uses a rolling challenge provided by the server for authenticating ownership of a grinbox address. When clients interact with grinbox to post slates and to get pending slates, they have to assert ownership of their address. They do this by signing the challenge with the private key associated with the address in question. +Epicbox uses a rolling challenge provided by the server for authenticating ownership of a epicbox address. When clients interact with epicbox to post slates and to get pending slates, they have to assert ownership of their address. They do this by signing the challenge with the private key associated with the address in question. -Upon successful connection to grinbox, the server sends the current challenge to the user in the context of a `Challenge` message. +Upon successful connection to epicbox, the server sends the current challenge to the user in the context of a `Challenge` message. ``` { @@ -110,10 +155,10 @@ To generate the signature, the slate sender has to sign a the challenge composed ###### Request: ``` -{ - "type": "PostSlate", - "from": "", - "to": "", +{ + "type": "PostSlate", + "from": "", + "to": "", "str": "", "signature": "" } @@ -136,7 +181,7 @@ Once subscription is established successfully, the server would send any pending ``` { "type": "Subscribe", - "address": "", + "address": "", "signature": "" } ``` @@ -156,7 +201,7 @@ Error Response: `{ "type": "Error", "kind": "", "description": "", + "address": "", } ``` @@ -184,4 +229,4 @@ Rust | [Wallet713](https://github.com/vault713/wallet713) | Original implementat ## Contributing -## Contact \ No newline at end of file +## Contact diff --git a/grinboxlib/Cargo.toml b/epicboxlib/Cargo.toml similarity index 55% rename from grinboxlib/Cargo.toml rename to epicboxlib/Cargo.toml index bd659b9..b6609a3 100644 --- a/grinboxlib/Cargo.toml +++ b/epicboxlib/Cargo.toml @@ -1,9 +1,9 @@ [package] -name = "grinboxlib" +name = "epicboxlib" version = "1.0.1" authors = ["vault713 devs"] -description = "A library that encapsulates grinbox integration." -keywords = [ "grinbox", "vault713", "grin", "mimblewimble", "rust", "crypto", "cryptocurrency", "wallet713" ] +description = "A library that encapsulates epicbox integration." +keywords = [ "epicbox", "vault713", "epic", "mimblewimble", "rust", "crypto", "cryptocurrency", "wallet713" ] license = "Apache-2.0" readme = "README.md" edition = "2018" @@ -20,8 +20,9 @@ serde = "1.0" serde_derive = "1.0" serde_json = "1.0" sha2 = "0.7" -ws = { version="0.7", features=["ssl"] } +ws = { version="0.9.2" } grin_secp256k1zkp = { version = "0.7.4", features = ["bullet-proof-sizing"]} -grin_core = { git = "https://github.com/mimblewimble/grin" } -grin_wallet = { git = "https://github.com/mimblewimble/grin" } + +epic_core = { git = "https://github.com/EpicCash/epic", branch = "master" } +epic_wallet_libwallet = { git = "https://github.com/EpicCash/epic-wallet" , branch = "master" } diff --git a/grinboxlib/src/client/close_reason.rs b/epicboxlib/src/client/close_reason.rs similarity index 100% rename from grinboxlib/src/client/close_reason.rs rename to epicboxlib/src/client/close_reason.rs diff --git a/epicboxlib/src/client/epicbox_publisher.rs b/epicboxlib/src/client/epicbox_publisher.rs new file mode 100644 index 0000000..96889e2 --- /dev/null +++ b/epicboxlib/src/client/epicbox_publisher.rs @@ -0,0 +1,6 @@ +use crate::error::Result; +use crate::types::{EpicboxAddress, Slate}; + +pub trait EpicboxPublisher { + fn post_slate(&self, slate: &Slate, to: &EpicboxAddress) -> Result<()>; +} diff --git a/epicboxlib/src/client/epicbox_subscriber.rs b/epicboxlib/src/client/epicbox_subscriber.rs new file mode 100644 index 0000000..731f415 --- /dev/null +++ b/epicboxlib/src/client/epicbox_subscriber.rs @@ -0,0 +1,8 @@ +use crate::error::Result; +use crate::client::EpicboxSubscriptionHandler; + +pub trait EpicboxSubscriber { + fn subscribe(&mut self, handler: Box) -> Result<()>; + fn unsubscribe(&self); + fn is_running(&self) -> bool; +} diff --git a/grinboxlib/src/client/grinbox_subscription_handler.rs b/epicboxlib/src/client/epicbox_subscription_handler.rs similarity index 53% rename from grinboxlib/src/client/grinbox_subscription_handler.rs rename to epicboxlib/src/client/epicbox_subscription_handler.rs index 826e9b4..c5bd1a5 100644 --- a/grinboxlib/src/client/grinbox_subscription_handler.rs +++ b/epicboxlib/src/client/epicbox_subscription_handler.rs @@ -1,10 +1,10 @@ use crate::client::CloseReason; -use crate::types::{GrinboxAddress, Slate, TxProof}; +use crate::types::{EpicboxAddress, Slate, TxProof}; -pub trait GrinboxSubscriptionHandler: Send { +pub trait EpicboxSubscriptionHandler: Send { fn on_open(&self); - fn on_slate(&self, from: &GrinboxAddress, slate: &mut Slate, proof: Option<&mut TxProof>); + fn on_slate(&self, from: &EpicboxAddress, slate: &mut Slate, proof: Option<&mut TxProof>); fn on_close(&self, result: CloseReason); fn on_dropped(&self); fn on_reestablished(&self); -} \ No newline at end of file +} diff --git a/epicboxlib/src/client/mod.rs b/epicboxlib/src/client/mod.rs new file mode 100644 index 0000000..845484c --- /dev/null +++ b/epicboxlib/src/client/mod.rs @@ -0,0 +1,9 @@ +mod close_reason; +mod epicbox_publisher; +mod epicbox_subscriber; +mod epicbox_subscription_handler; + +pub use self::close_reason::CloseReason; +pub use self::epicbox_publisher::EpicboxPublisher; +pub use self::epicbox_subscriber::EpicboxSubscriber; +pub use self::epicbox_subscription_handler::EpicboxSubscriptionHandler; diff --git a/grinboxlib/src/error/error_kind.rs b/epicboxlib/src/error/error_kind.rs similarity index 79% rename from grinboxlib/src/error/error_kind.rs rename to epicboxlib/src/error/error_kind.rs index ba7d325..41786e4 100644 --- a/grinboxlib/src/error/error_kind.rs +++ b/epicboxlib/src/error/error_kind.rs @@ -1,5 +1,5 @@ use failure::Fail; -use crate::types::GrinboxError; +use crate::types::EpicboxError; #[derive(Clone, Eq, PartialEq, Debug, Fail)] pub enum ErrorKind { @@ -19,16 +19,16 @@ pub enum ErrorKind { InvalidBase58Key, #[fail(display = "\x1b[31;1merror:\x1b[0m could not parse number from string!")] NumberParsingError, - #[fail(display = "\x1b[31;1merror:\x1b[0m could not parse `{}` to a grinbox address!", 0)] - GrinboxAddressParsingError(String), + #[fail(display = "\x1b[31;1merror:\x1b[0m could not parse `{}` to a epicbox address!", 0)] + EpicboxAddressParsingError(String), #[fail(display = "\x1b[31;1merror:\x1b[0m unable to encrypt message")] Encryption, #[fail(display = "\x1b[31;1merror:\x1b[0m unable to decrypt message")] Decryption, #[fail(display = "\x1b[31;1merror:\x1b[0m unable to verify proof")] VerifyProof, - #[fail(display = "\x1b[31;1merror:\x1b[0m grinbox websocket terminated unexpectedly!")] - GrinboxWebsocketAbnormalTermination, - #[fail(display = "\x1b[31;1merror:\x1b[0m grinbox protocol error `{}`", 0)] - GrinboxProtocolError(GrinboxError), + #[fail(display = "\x1b[31;1merror:\x1b[0m epicbox websocket terminated unexpectedly!")] + EpicboxWebsocketAbnormalTermination, + #[fail(display = "\x1b[31;1merror:\x1b[0m epicbox protocol error `{}`", 0)] + EpicboxProtocolError(EpicboxError), } diff --git a/grinboxlib/src/error/mod.rs b/epicboxlib/src/error/mod.rs similarity index 100% rename from grinboxlib/src/error/mod.rs rename to epicboxlib/src/error/mod.rs diff --git a/grinboxlib/src/error/result.rs b/epicboxlib/src/error/result.rs similarity index 100% rename from grinboxlib/src/error/result.rs rename to epicboxlib/src/error/result.rs diff --git a/grinboxlib/src/lib.rs b/epicboxlib/src/lib.rs similarity index 94% rename from grinboxlib/src/lib.rs rename to epicboxlib/src/lib.rs index 86b6ee5..69eccf5 100644 --- a/grinboxlib/src/lib.rs +++ b/epicboxlib/src/lib.rs @@ -12,7 +12,7 @@ extern crate serde_json; extern crate sha2; extern crate ws; -extern crate grin_core; +extern crate epic_core; pub mod client; pub mod error; diff --git a/grinboxlib/src/types/grinbox_address.rs b/epicboxlib/src/types/epicbox_address.rs similarity index 62% rename from grinboxlib/src/types/grinbox_address.rs rename to epicboxlib/src/types/epicbox_address.rs index 58821ec..fba5ae6 100644 --- a/grinboxlib/src/types/grinbox_address.rs +++ b/epicboxlib/src/types/epicbox_address.rs @@ -2,56 +2,61 @@ use regex::Regex; use std::fmt::{self, Display}; use crate::error::{ErrorKind, Result}; +use crate::utils::crypto::Base58; use crate::utils::is_mainnet; use crate::utils::secp::PublicKey; -use crate::utils::crypto::Base58; -pub const GRINBOX_ADDRESS_REGEX: &str = r"^(grinbox://)?(?P[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{52})(@(?P[a-zA-Z0-9\.]+)(:(?P[0-9]*))?)?$"; -pub const GRINBOX_ADDRESS_VERSION_MAINNET: [u8; 2] = [1, 11]; -pub const GRINBOX_ADDRESS_VERSION_TESTNET: [u8; 2] = [1, 120]; -pub const DEFAULT_GRINBOX_DOMAIN: &str = "grinbox.io"; -pub const DEFAULT_GRINBOX_PORT: u16 = 443; +pub const EPICBOX_ADDRESS_REGEX: &str = r"^(epicbox://)?(?P[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{52})(@(?P[a-zA-Z0-9\.]+)(:(?P[0-9]*))?)?$"; +pub const EPICBOX_ADDRESS_VERSION_MAINNET: [u8; 2] = [1, 0]; +pub const EPICBOX_ADDRESS_VERSION_TESTNET: [u8; 2] = [1, 136]; +pub const DEFAULT_EPICBOX_DOMAIN: &str = "127.0.0.1"; +pub const DEFAULT_EPICBOX_PORT: u16 = 443; pub fn version_bytes() -> Vec { if is_mainnet() { - GRINBOX_ADDRESS_VERSION_MAINNET.to_vec() + EPICBOX_ADDRESS_VERSION_MAINNET.to_vec() } else { - GRINBOX_ADDRESS_VERSION_TESTNET.to_vec() + EPICBOX_ADDRESS_VERSION_TESTNET.to_vec() } } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] -pub struct GrinboxAddress { +pub struct EpicboxAddress { pub public_key: String, pub domain: String, pub port: u16, pub version_bytes: Option>, } -impl GrinboxAddress { +impl EpicboxAddress { pub fn new(public_key: PublicKey, domain: Option, port: Option) -> Self { Self { public_key: public_key.to_base58_check(version_bytes()), - domain: domain.unwrap_or(DEFAULT_GRINBOX_DOMAIN.to_string()), - port: port.unwrap_or(DEFAULT_GRINBOX_PORT), + domain: domain.unwrap_or(DEFAULT_EPICBOX_DOMAIN.to_string()), + port: port.unwrap_or(DEFAULT_EPICBOX_PORT), version_bytes: None, } } - pub fn new_raw(public_key: PublicKey, domain: Option, port: Option, version_bytes: Vec) -> Self { + pub fn new_raw( + public_key: PublicKey, + domain: Option, + port: Option, + version_bytes: Vec, + ) -> Self { Self { public_key: public_key.to_base58_check(version_bytes.clone()), - domain: domain.unwrap_or(DEFAULT_GRINBOX_DOMAIN.to_string()), - port: port.unwrap_or(DEFAULT_GRINBOX_PORT), + domain: domain.unwrap_or(DEFAULT_EPICBOX_DOMAIN.to_string()), + port: port.unwrap_or(DEFAULT_EPICBOX_PORT), version_bytes: Some(version_bytes), } } pub fn from_str(s: &str) -> Result { - let re = Regex::new(GRINBOX_ADDRESS_REGEX).unwrap(); + let re = Regex::new(EPICBOX_ADDRESS_REGEX).unwrap(); let captures = re.captures(s); if captures.is_none() { - Err(ErrorKind::GrinboxAddressParsingError(s.to_string()))?; + Err(ErrorKind::EpicboxAddressParsingError(s.to_string()))?; } let captures = captures.unwrap(); @@ -63,14 +68,14 @@ impl GrinboxAddress { let public_key = PublicKey::from_base58_check(&public_key, version_bytes())?; - Ok(GrinboxAddress::new(public_key, domain, port)) + Ok(EpicboxAddress::new(public_key, domain, port)) } pub fn from_str_raw(s: &str) -> Result { - let re = Regex::new(GRINBOX_ADDRESS_REGEX).unwrap(); + let re = Regex::new(EPICBOX_ADDRESS_REGEX).unwrap(); let captures = re.captures(s); if captures.is_none() { - Err(ErrorKind::GrinboxAddressParsingError(s.to_string()))?; + Err(ErrorKind::EpicboxAddressParsingError(s.to_string()))?; } let captures = captures.unwrap(); @@ -82,7 +87,12 @@ impl GrinboxAddress { let (public_key, version_bytes) = PublicKey::from_base58_check_raw(&public_key, 2)?; - Ok(GrinboxAddress::new_raw(public_key, domain, port, version_bytes)) + Ok(EpicboxAddress::new_raw( + public_key, + domain, + port, + version_bytes, + )) } pub fn public_key(&self) -> Result { @@ -94,15 +104,15 @@ impl GrinboxAddress { } } -impl Display for GrinboxAddress { +impl Display for EpicboxAddress { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "grinbox://{}", self.public_key)?; - if self.domain != DEFAULT_GRINBOX_DOMAIN || self.port != DEFAULT_GRINBOX_PORT { + write!(f, "epicbox://{}", self.public_key)?; + if self.domain != DEFAULT_EPICBOX_DOMAIN || self.port != DEFAULT_EPICBOX_PORT { write!(f, "@{}", self.domain)?; - if self.port != DEFAULT_GRINBOX_PORT { + if self.port != DEFAULT_EPICBOX_PORT { write!(f, ":{}", self.port)?; } } Ok(()) } -} \ No newline at end of file +} diff --git a/grinboxlib/src/types/grinbox_message.rs b/epicboxlib/src/types/epicbox_message.rs similarity index 92% rename from grinboxlib/src/types/grinbox_message.rs rename to epicboxlib/src/types/epicbox_message.rs index 48b8438..abd0d6d 100644 --- a/grinboxlib/src/types/grinbox_message.rs +++ b/epicboxlib/src/types/epicbox_message.rs @@ -4,24 +4,24 @@ use ring::{aead, digest, pbkdf2}; use crate::error::{ErrorKind, Result}; use crate::utils::{from_hex, to_hex}; use crate::utils::secp::{Secp256k1, PublicKey, SecretKey}; -use crate::types::GrinboxAddress; +use crate::types::EpicboxAddress; #[derive(Debug, Serialize, Deserialize)] -pub struct GrinboxMessage { +pub struct EpicboxMessage { #[serde(default)] - pub destination: Option, + pub destination: Option, encrypted_message: String, salt: String, nonce: String, } -impl GrinboxMessage { +impl EpicboxMessage { pub fn new( message: String, - destination: &GrinboxAddress, + destination: &EpicboxAddress, receiver_public_key: &PublicKey, secret_key: &SecretKey, - ) -> Result { + ) -> Result { let secp = Secp256k1::new(); let mut common_secret = receiver_public_key.clone(); common_secret @@ -44,7 +44,7 @@ impl GrinboxMessage { aead::seal_in_place(&sealing_key, &nonce, &[], &mut enc_bytes, suffix_len) .map_err(|_| ErrorKind::Encryption)?; - Ok(GrinboxMessage { + Ok(EpicboxMessage { destination: Some(destination.clone()), encrypted_message: to_hex(enc_bytes), salt: to_hex(salt.to_vec()), diff --git a/grinboxlib/src/types/grinbox_request.rs b/epicboxlib/src/types/epicbox_request.rs similarity index 82% rename from grinboxlib/src/types/grinbox_request.rs rename to epicboxlib/src/types/epicbox_request.rs index 1a459dc..965d6fa 100644 --- a/grinboxlib/src/types/grinbox_request.rs +++ b/epicboxlib/src/types/epicbox_request.rs @@ -3,7 +3,7 @@ use std::fmt::{Display, Formatter, Result}; #[derive(Serialize, Deserialize, Debug)] #[serde(tag = "type")] -pub enum GrinboxRequest { +pub enum EpicboxRequest { Challenge, Subscribe { address: String, @@ -21,11 +21,11 @@ pub enum GrinboxRequest { }, } -impl Display for GrinboxRequest { +impl Display for EpicboxRequest { fn fmt(&self, f: &mut Formatter) -> Result { match *self { - GrinboxRequest::Challenge => write!(f, "{}", "Challenge".bright_purple()), - GrinboxRequest::Subscribe { + EpicboxRequest::Challenge => write!(f, "{}", "Challenge".bright_purple()), + EpicboxRequest::Subscribe { ref address, signature: _, } => write!( @@ -34,13 +34,13 @@ impl Display for GrinboxRequest { "Subscribe".bright_purple(), address.bright_green() ), - GrinboxRequest::Unsubscribe { ref address } => write!( + EpicboxRequest::Unsubscribe { ref address } => write!( f, "{} from {}", "Unsubscribe".bright_purple(), address.bright_green() ), - GrinboxRequest::PostSlate { + EpicboxRequest::PostSlate { ref from, ref to, str: _, @@ -55,4 +55,4 @@ impl Display for GrinboxRequest { ), } } -} \ No newline at end of file +} diff --git a/grinboxlib/src/types/grinbox_response.rs b/epicboxlib/src/types/epicbox_response.rs similarity index 64% rename from grinboxlib/src/types/grinbox_response.rs rename to epicboxlib/src/types/epicbox_response.rs index 66a86a4..e389c64 100644 --- a/grinboxlib/src/types/grinbox_response.rs +++ b/epicboxlib/src/types/epicbox_response.rs @@ -2,7 +2,7 @@ use colored::*; use std::fmt::{Display, Formatter, Result}; #[derive(Clone, Eq, PartialEq, Serialize, Deserialize, Debug)] -pub enum GrinboxError { +pub enum EpicboxError { UnknownError, InvalidRequest, InvalidSignature, @@ -10,24 +10,24 @@ pub enum GrinboxError { TooManySubscriptions, } -impl Display for GrinboxError { +impl Display for EpicboxError { fn fmt(&self, f: &mut Formatter) -> Result { match *self { - GrinboxError::UnknownError => write!(f, "{}", "unknown error!"), - GrinboxError::InvalidRequest => write!(f, "{}", "invalid request!"), - GrinboxError::InvalidSignature => write!(f, "{}", "invalid signature!"), - GrinboxError::InvalidChallenge => write!(f, "{}", "invalid challenge!"), - GrinboxError::TooManySubscriptions => write!(f, "{}", "too many subscriptions!"), + EpicboxError::UnknownError => write!(f, "{}", "unknown error!"), + EpicboxError::InvalidRequest => write!(f, "{}", "invalid request!"), + EpicboxError::InvalidSignature => write!(f, "{}", "invalid signature!"), + EpicboxError::InvalidChallenge => write!(f, "{}", "invalid challenge!"), + EpicboxError::TooManySubscriptions => write!(f, "{}", "too many subscriptions!"), } } } #[derive(Serialize, Deserialize, Debug)] #[serde(tag = "type")] -pub enum GrinboxResponse { +pub enum EpicboxResponse { Ok, Error { - kind: GrinboxError, + kind: EpicboxError, description: String, }, Challenge { @@ -41,18 +41,18 @@ pub enum GrinboxResponse { }, } -impl Display for GrinboxResponse { +impl Display for EpicboxResponse { fn fmt(&self, f: &mut Formatter) -> Result { match *self { - GrinboxResponse::Ok => write!(f, "{}", "Ok".cyan()), - GrinboxResponse::Error { + EpicboxResponse::Ok => write!(f, "{}", "Ok".cyan()), + EpicboxResponse::Error { ref kind, description: _, } => write!(f, "{}: {}", "error".bright_red(), kind), - GrinboxResponse::Challenge { ref str } => { + EpicboxResponse::Challenge { ref str } => { write!(f, "{} {}", "Challenge".cyan(), str.bright_green()) } - GrinboxResponse::Slate { + EpicboxResponse::Slate { ref from, str: _, signature: _, @@ -60,4 +60,4 @@ impl Display for GrinboxResponse { } => write!(f, "{} from {}", "Slate".cyan(), from.bright_green()), } } -} \ No newline at end of file +} diff --git a/epicboxlib/src/types/mod.rs b/epicboxlib/src/types/mod.rs new file mode 100644 index 0000000..8bddd23 --- /dev/null +++ b/epicboxlib/src/types/mod.rs @@ -0,0 +1,16 @@ +mod epicbox_address; +mod epicbox_message; +mod epicbox_request; +mod epicbox_response; +mod tx_proof; + +//pub use epic_wallet::libwallet::slate::Slate; +pub use epic_wallet_libwallet::slate::Slate; +pub use parking_lot::{Mutex, MutexGuard}; +pub use std::sync::Arc; + +pub use self::epicbox_address::{EpicboxAddress, EPICBOX_ADDRESS_VERSION_MAINNET, EPICBOX_ADDRESS_VERSION_TESTNET, version_bytes}; +pub use self::epicbox_message::EpicboxMessage; +pub use self::epicbox_request::EpicboxRequest; +pub use self::epicbox_response::{EpicboxError, EpicboxResponse}; +pub use self::tx_proof::{TxProof, ErrorKind as TxProofErrorKind}; diff --git a/grinboxlib/src/types/tx_proof.rs b/epicboxlib/src/types/tx_proof.rs similarity index 84% rename from grinboxlib/src/types/tx_proof.rs rename to epicboxlib/src/types/tx_proof.rs index e50f803..0b1dc8d 100644 --- a/grinboxlib/src/types/tx_proof.rs +++ b/epicboxlib/src/types/tx_proof.rs @@ -1,4 +1,4 @@ -use crate::types::{GrinboxAddress, GrinboxMessage, Slate}; +use crate::types::{EpicboxAddress, EpicboxMessage, Slate}; use crate::utils::secp::{Commitment, SecretKey, Signature}; use crate::utils::crypto::{Hex, verify_signature}; @@ -8,7 +8,7 @@ pub enum ErrorKind { ParsePublicKey, ParseSignature, VerifySignature, - ParseGrinboxMessage, + ParseEpicboxMessage, VerifyDestination, DecryptionKey, DecryptMessage, @@ -17,7 +17,7 @@ pub enum ErrorKind { #[derive(Debug, Serialize, Deserialize)] pub struct TxProof { - pub address: GrinboxAddress, + pub address: EpicboxAddress, pub message: String, pub challenge: String, pub signature: Signature, @@ -31,8 +31,8 @@ pub struct TxProof { impl TxProof { pub fn verify_extract( &self, - expected_destination: Option<&GrinboxAddress>, - ) -> Result<(Option, Slate), ErrorKind> { + expected_destination: Option<&EpicboxAddress>, + ) -> Result<(Option, Slate), ErrorKind> { let mut challenge = String::new(); challenge.push_str(self.message.as_str()); challenge.push_str(self.challenge.as_str()); @@ -45,8 +45,8 @@ impl TxProof { verify_signature(&challenge, &self.signature, &public_key) .map_err(|_| ErrorKind::VerifySignature)?; - let encrypted_message: GrinboxMessage = - serde_json::from_str(&self.message).map_err(|_| ErrorKind::ParseGrinboxMessage)?; + let encrypted_message: EpicboxMessage = + serde_json::from_str(&self.message).map_err(|_| ErrorKind::ParseEpicboxMessage)?; // TODO: at some point, make this check required let destination = encrypted_message.destination.clone(); @@ -72,17 +72,17 @@ impl TxProof { challenge: String, signature: String, secret_key: &SecretKey, - expected_destination: Option<&GrinboxAddress>, + expected_destination: Option<&EpicboxAddress>, ) -> Result<(Slate, TxProof), ErrorKind> { let address = - GrinboxAddress::from_str(from.as_str()).map_err(|_| ErrorKind::ParseAddress)?; + EpicboxAddress::from_str(from.as_str()).map_err(|_| ErrorKind::ParseAddress)?; let signature = Signature::from_hex(signature.as_str()).map_err(|_| ErrorKind::ParseSignature)?; let public_key = address .public_key() .map_err(|_| ErrorKind::ParsePublicKey)?; - let encrypted_message: GrinboxMessage = - serde_json::from_str(&message).map_err(|_| ErrorKind::ParseGrinboxMessage)?; + let encrypted_message: EpicboxMessage = + serde_json::from_str(&message).map_err(|_| ErrorKind::ParseEpicboxMessage)?; let key = encrypted_message .key(&public_key, secret_key) .map_err(|_| ErrorKind::DecryptionKey)?; diff --git a/grinboxlib/src/utils/base58.rs b/epicboxlib/src/utils/base58.rs similarity index 100% rename from grinboxlib/src/utils/base58.rs rename to epicboxlib/src/utils/base58.rs diff --git a/grinboxlib/src/utils/crypto.rs b/epicboxlib/src/utils/crypto.rs similarity index 100% rename from grinboxlib/src/utils/crypto.rs rename to epicboxlib/src/utils/crypto.rs diff --git a/grinboxlib/src/utils/mod.rs b/epicboxlib/src/utils/mod.rs similarity index 96% rename from grinboxlib/src/utils/mod.rs rename to epicboxlib/src/utils/mod.rs index 82c73cd..c21a04a 100644 --- a/grinboxlib/src/utils/mod.rs +++ b/epicboxlib/src/utils/mod.rs @@ -1,7 +1,7 @@ use std::fmt::Write; use crate::error::{Result, ErrorKind}; -pub use grin_core::global::is_mainnet; +pub use epic_core::global::is_mainnet; pub mod base58; pub mod crypto; @@ -38,4 +38,3 @@ fn split_n(s: &str, n: usize) -> Vec<&str> { .map(|i| &s[2 * i..2 * i + n]) .collect() } - diff --git a/grinboxlib/src/utils/secp.rs b/epicboxlib/src/utils/secp.rs similarity index 100% rename from grinboxlib/src/utils/secp.rs rename to epicboxlib/src/utils/secp.rs diff --git a/grinboxlib/Cargo.lock b/grinboxlib/Cargo.lock deleted file mode 100644 index ed3ccbd..0000000 --- a/grinboxlib/Cargo.lock +++ /dev/null @@ -1,2604 +0,0 @@ -[[package]] -name = "adler32" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "aho-corasick" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "antidote" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "arrayref" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "arrayvec" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "arrayvec" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "atty" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "autocfg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "backtrace" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "backtrace-sys" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "base64" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "bindgen" -version = "0.37.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cexpr 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "clang-sys 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "which 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "bitflags" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bitflags" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "blake2-rfc" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "block-buffer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "build_const" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byte-tools" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byteorder" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bytes" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "cc" -version = "1.0.29" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "cexpr" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nom 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "cfg-if" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "chrono" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "clang-sys" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "clap" -version = "2.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "colored" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "constant_time_eq" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "crc" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crc32fast" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "croaring" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "croaring-sys 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "croaring-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bindgen 0.37.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "crossbeam" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-channel" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-deque" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-utils" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crypto-mac" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "csv" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ct-logs" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "digest" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "dtoa" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "encode_unicode" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "enum_primitive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "env_logger" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "failure" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "failure_derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "flate2" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fnv" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures-cpupool" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "gcc" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "generic-array" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "glob" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "grin_api" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#a63cfa713824d151952a1a02fd1a95d5e4a5bd40" -dependencies = [ - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_chain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_p2p 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_pool 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-rustls 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-rustls 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_chain" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#a63cfa713824d151952a1a02fd1a95d5e4a5bd40" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "croaring 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "lmdb-zero 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_core" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#a63cfa713824d151952a1a02fd1a95d5e4a5bd40" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "croaring 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_keychain" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#a63cfa713824d151952a1a02fd1a95d5e4a5bd40" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "pbkdf2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ripemd160 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_p2p" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#a63cfa713824d151952a1a02fd1a95d5e4a5bd40" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "lmdb-zero 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_pool" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#a63cfa713824d151952a1a02fd1a95d5e4a5bd40" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_secp256k1zkp" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)", - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_store" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#a63cfa713824d151952a1a02fd1a95d5e4a5bd40" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "croaring 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "lmdb-zero 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_util" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#a63cfa713824d151952a1a02fd1a95d5e4a5bd40" -dependencies = [ - "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_secp256k1zkp 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log4rs 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zip 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grin_wallet" -version = "1.0.1" -source = "git+https://github.com/mimblewimble/grin#a63cfa713824d151952a1a02fd1a95d5e4a5bd40" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_api 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_chain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "prettytable-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "term 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-retry 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "grinboxlib" -version = "1.0.1" -dependencies = [ - "colored 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)", - "grin_secp256k1zkp 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "grin_wallet 1.0.1 (git+https://github.com/mimblewimble/grin)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "h2" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "hmac" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "http" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "httparse" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "humantime" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "hyper" -version = "0.12.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "hyper-rustls" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ct-logs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-rustls 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "idna" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "indexmap" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "iovec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "itoa" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lazy_static" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "lazycell" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "libc" -version = "0.2.48" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "liblmdb-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "libloading" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "linked-hash-map" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "linked-hash-map" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "lmdb-zero" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "liblmdb-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "supercow 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lock_api" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "log" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "log-mdc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "log4rs" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log-mdc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde-value 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)", - "thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lru-cache" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "matches" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memchr" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "memchr" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "memmap" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "memoffset" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "miniz-sys" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "miniz_oxide" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "miniz_oxide_c_api" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "mio" -version = "0.6.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "mio-extras" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "mio-uds" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "miow" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "msdos_time" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "net2" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "nodrop" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "nom" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num" -version = "0.1.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", - "num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-complex 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-bigint" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-bigint" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-complex" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-complex" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-integer" -version = "0.1.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-iter" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-rational" -version = "0.1.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-rational" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-traits" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num-traits" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "num_cpus" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "odds" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "openssl" -version = "0.10.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "openssl-sys" -version = "0.9.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ordered-float" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "owning_ref" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parking_lot" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parking_lot" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parking_lot_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parking_lot_core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "pbkdf2" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "percent-encoding" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "pkg-config" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "podio" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "prettytable-rs" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "csv 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "term 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro2" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro2" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quick-error" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "quote" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quote" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_jitter" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_os" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_pcg" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "redox_syscall" -version = "0.1.51" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "redox_termios" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex-syntax" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ring" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ripemd160" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rustc-serialize" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rustls" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ryu" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "safemem" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "same-file" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "scoped-tls" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "scopeguard" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "sct" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "serde" -version = "1.0.87" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "serde-value" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ordered-float 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_derive" -version = "1.0.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_json" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_yaml" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "sha1" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "sha2" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "siphasher" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "smallvec" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "stable_deref_trait" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "string" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "strsim" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "supercow" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "syn" -version = "0.15.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "synstructure" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "term" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "termcolor" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "termion" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "textwrap" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thread-id" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thread_local" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "time" -version = "0.1.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-codec" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-core" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-current-thread" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-executor" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-fs" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-io" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-reactor" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-retry" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-rustls" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-service" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-tcp" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-threadpool" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-timer" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-udp" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-uds" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "traitobject" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "try-lock" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "typemap" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "typenum" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "ucd-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicode-bidi" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unicode-normalization" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unicode-width" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unsafe-any" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "untrusted" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "url" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "utf8-ranges" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "uuid" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "vcpkg" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "vec_map" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "walkdir" -version = "2.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "want" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "webpki" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "webpki-roots" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "which" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wincolor" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ws" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "yaml-rust" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "zeroize" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "zip" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "msdos_time 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[metadata] -"checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" -"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" -"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -"checksum antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5" -"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" -"checksum arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)" = "06f59fe10306bb78facd90d28c2038ad23ffaaefa85bac43c8a434cde383334f" -"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" -"checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5" -"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" -"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -"checksum bindgen 0.37.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1b25ab82877ea8fe6ce1ce1f8ac54361f0218bad900af9eb11803994bf67c221" -"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" -"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" -"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" -"checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" -"checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" -"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" -"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" -"checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa" -"checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e" -"checksum cexpr 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "42aac45e9567d97474a834efdee3081b3c942b2205be932092f53354ce503d6c" -"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" -"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" -"checksum clang-sys 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d7f7c04e52c35222fffcc3a115b5daf5f7e2bfb71c13c4e2321afe1fc71859c2" -"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum colored 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6e9a455e156a4271e12fd0246238c380b1e223e3736663c7a18ed8b6362028a9" -"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" -"checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" -"checksum crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e91d5240c6975ef33aeb5f148f35275c25eda8e8a5f95abe421978b05b8bf192" -"checksum croaring 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b350ece8a9ba71eeb9c068a98a86dc420ca5c1d6bd4e1627a4581e9c843c38" -"checksum croaring-sys 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "546b00f33bdf591bce6410a8dca65047d126b1d5a9189190d085aa8c493d43a7" -"checksum crossbeam 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "24ce9782d4d5c53674646a6a4c1863a21a8fc0cb649b3c94dfc16e45071dea19" -"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" -"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" -"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" -"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" -"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" -"checksum crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7afa06d05a046c7a47c3a849907ec303504608c927f4e85f7bfff22b7180d971" -"checksum csv 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7ef22b37c7a51c564a365892c012dc0271221fdcc64c69b19ba4d6fa8bd96d9c" -"checksum ct-logs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "95a4bf5107667e12bf6ce31a3a5066d67acc88942b6742117a41198734aaccaa" -"checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" -"checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" -"checksum encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90b2c9496c001e8cb61827acdefad780795c42264c137744cae6f7d9e3450abd" -"checksum enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180" -"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" -"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" -"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" -"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2291c165c8e703ee54ef3055ad6188e3d51108e2ded18e9f2476e774fc5ad3d4" -"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" -"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" -"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" -"checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d" -"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" -"checksum grin_api 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_chain 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_core 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_keychain 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_p2p 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_pool 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_secp256k1zkp 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "223095ed6108a42855ab2ce368d2056cfd384705f81c494f6d88ab3383161562" -"checksum grin_store 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_util 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum grin_wallet 1.0.1 (git+https://github.com/mimblewimble/grin)" = "" -"checksum h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ddb2b25a33e231484694267af28fec74ac63b5ccf51ee2065a5e313b834d836e" -"checksum hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "733e1b3ac906631ca01ebb577e9bb0f5e37a454032b9036b5eaea4013ed6f99a" -"checksum http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "1a10e5b573b9a0146545010f50772b9e8b1dd0a256564cc4307694c68832a2f5" -"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" -"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f1ebec079129e43af5e234ef36ee3d7e6085687d145b7ea653b262d16c6b65f1" -"checksum hyper-rustls 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "68f2aa6b1681795bf4da8063f718cd23145aa0c9a5143d9787b345aa60d38ee4" -"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" -"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" -"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" -"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "e962c7641008ac010fa60a7dfdc1712449f29c44ef2d4702394aea943ee75047" -"checksum liblmdb-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "feed38a3a580f60bf61aaa067b0ff4123395966839adeaf67258a9e50c4d2e49" -"checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" -"checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" -"checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" -"checksum lmdb-zero 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "13416eee745b087c22934f35f1f24da22da41ba2a5ce197143d168ce055cc58d" -"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" -"checksum log-mdc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" -"checksum log4rs 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "25e0fc8737a634116a2deb38d821e4400ed16ce9dcb0d628a978d399260f5902" -"checksum lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d06ff7ff06f729ce5f4e227876cb88d10bc59cd4ae1e09fbb2bde15c850dc21" -"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a" -"checksum memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e1dd4eaac298c32ce07eb6ed9242eda7d82955b9170b7d6db59b2e02cc63fcb8" -"checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" -"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" -"checksum miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0300eafb20369952951699b68243ab4334f4b10a88f411c221d444b36c40e649" -"checksum miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c468f2369f07d651a5d0bb2c9079f8488a66d5466efe42d0c5c6466edcb7f71e" -"checksum miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7fe927a42e3807ef71defb191dc87d4e24479b221e67015fe38ae2b7b447bab" -"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" -"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" -"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" -"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum msdos_time 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aad9dfe950c057b1bfe9c1f2aa51583a8468ef2a5baba2ebbe06d775efeb7729" -"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum nom 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05aec50c70fd288702bcd93284a8444607f3292dbdf2a30de5ea5dcdbe72287b" -"checksum num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" -"checksum num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf4825417e1e1406b3782a8ce92f4d53f26ec055e3622e1881ca8e9f5f9e08db" -"checksum num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1" -"checksum num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "57450397855d951f1a41305e54851b1a7b8f5d2e349543a02a2effe25459f718" -"checksum num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656" -"checksum num-complex 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "107b9be86cd2481930688277b675b0114578227f034674726605b8a482d8baf8" -"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" -"checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" -"checksum num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e" -"checksum num-rational 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e96f040177bb3da242b5b1ecf3f54b5d5af3efbbfb18608977a5d2767b22f10" -"checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" -"checksum num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a69d464bdc213aaaff628444e99578ede64e9c854025aa43b9796530afa9238" -"checksum odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" -"checksum openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ec7bd7ca4cce6dbdc77e7c1230682740d307d1218a87fb0349a571272be749f9" -"checksum openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)" = "1bb974e77de925ef426b6bc82fce15fd45bdcbeb5728bffcfc7cdeeb7ce1c2d6" -"checksum ordered-float 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2f0015e9e8e28ee20c581cfbfe47c650cedeb9ed0721090e0b7ebb10b9cdbcc2" -"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" -"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" -"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum pbkdf2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0c09cddfbfc98de7f76931acf44460972edb4023eb14d0c6d4018800e552d8e0" -"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" -"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" -"checksum podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "780fb4b6698bbf9cf2444ea5d22411cef2953f0824b98f33cf454ec5615645bd" -"checksum prettytable-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5511ca4c805aa35f0abff6be7923231d664408b60c09f44ef715f2bce106cd9e" -"checksum proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "77997c53ae6edd6d187fec07ec41b207063b5ee6f33680e9fa86d405cdd313d4" -"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" -"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" -"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" -"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832" -"checksum rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c690732391ae0abafced5015ffb53656abfaec61b342290e5eb56b286a679d" -"checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" -"checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861" -"checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" -"checksum ripemd160 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "482aa56cc68aaeccdaaff1cc5a72c247da8bbad3beb174ca5741f274c22883fb" -"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" -"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" -"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" -"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" -"checksum same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267" -"checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" -"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb8f61f9e6eadd062a71c380043d28036304a4706b3c4dd001ff3387ed00745a" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "2e20fde37801e83c891a2dc4ebd3b81f0da4d1fb67a9e0a2a3b921e2536a58ee" -"checksum serde-value 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7a663f873dedc4eac1a559d4c6bc0d0b2c34dc5ac4702e105014b8281489e44f" -"checksum serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "633e97856567e518b59ffb2ad7c7a4fd4c5d91d9c7f32dd38a27b2bf7e8114ea" -"checksum serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "27dce848e7467aa0e2fcaf0a413641499c0b745452aaca1194d24dedde9e13c9" -"checksum serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0887a8e097a69559b56aa2526bf7aff7c3048cf627dff781f0b56a6001534593" -"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" -"checksum sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eb6be24e4c23a84d7184280d2722f7f2731fcdd4a9d886efbfe4413e4847ea0" -"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "88aea073965ab29f6edb5493faf96ad662fb18aa9eeb186a3b7057951605ed15" -"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b" -"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" -"checksum supercow 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "171758edb47aa306a78dfa4ab9aeb5167405bd4e3dc2b64e88f6a84bbe98bd63" -"checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" -"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" -"checksum term 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5e6b677dd1e8214ea1ef4297f85dbcbed8e8cdddb561040cc998ca2551c37561" -"checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" -"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" -"checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" -"checksum thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1" -"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" -"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" -"checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" -"checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" -"checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" -"checksum tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e9cbbc8a3698b7ab652340f46633364f9eaa928ddaaee79d8b8f356dd79a09d" -"checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" -"checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" -"checksum tokio-retry 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f05746ae87dca83a2016b4f5dba5b237b897dd12fd324f60afe282112f16969a" -"checksum tokio-rustls 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "208d62fa3e015426e3c64039d9d20adf054a3c9b4d9445560f1c41c75bef3eab" -"checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb" -"checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" -"checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" -"checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" -"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" -"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"checksum typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "653be63c80a3296da5551e1bfd2cca35227e13cdd08c6668903ae2f4f77aa1f6" -"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" -"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" -"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -"checksum unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f30360d7979f5e9c6e6cea48af192ea8fab4afb3cf72597154b8f08935bc9c7f" -"checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" -"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" -"checksum uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e1436e58182935dcd9ce0add9ea0b558e8a87befe01c1a301e6020aeb0876363" -"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" -"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1" -"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" -"checksum webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "17d7967316d8411ca3b01821ee6c332bde138ba4363becdb492f12e514daa17f" -"checksum webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85d1f408918fd590908a70d36b7ac388db2edc221470333e4d6e5b598e44cabf" -"checksum which 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e84a603e7e0b1ce1aa1ee2b109c7be00155ce52df5081590d1ffb93f4f515cb2" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" -"checksum ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "329d3e6dd450a9c5c73024e1047f0be7e24121a68484eb0b5368977bee3cf8c3" -"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -"checksum yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "95acf0db5515d07da9965ec0e0ba6cc2d825e2caeb7303b66ca441729801254e" -"checksum zeroize 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8ddfeb6eee2fb3b262ef6e0898a52b7563bb8e0d5955a313b3cf2f808246ea14" -"checksum zip 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "36b9e08fb518a65cf7e08a1e482573eb87a2f4f8c6619316612a3c1f162fe822" diff --git a/grinboxlib/src/client/grinbox_publisher.rs b/grinboxlib/src/client/grinbox_publisher.rs deleted file mode 100644 index 22a2869..0000000 --- a/grinboxlib/src/client/grinbox_publisher.rs +++ /dev/null @@ -1,6 +0,0 @@ -use crate::error::Result; -use crate::types::{GrinboxAddress, Slate}; - -pub trait GrinboxPublisher { - fn post_slate(&self, slate: &Slate, to: &GrinboxAddress) -> Result<()>; -} diff --git a/grinboxlib/src/client/grinbox_subscriber.rs b/grinboxlib/src/client/grinbox_subscriber.rs deleted file mode 100644 index a264e7d..0000000 --- a/grinboxlib/src/client/grinbox_subscriber.rs +++ /dev/null @@ -1,8 +0,0 @@ -use crate::error::Result; -use crate::client::GrinboxSubscriptionHandler; - -pub trait GrinboxSubscriber { - fn subscribe(&mut self, handler: Box) -> Result<()>; - fn unsubscribe(&self); - fn is_running(&self) -> bool; -} diff --git a/grinboxlib/src/client/mod.rs b/grinboxlib/src/client/mod.rs deleted file mode 100644 index 5cd8d87..0000000 --- a/grinboxlib/src/client/mod.rs +++ /dev/null @@ -1,9 +0,0 @@ -mod close_reason; -mod grinbox_publisher; -mod grinbox_subscriber; -mod grinbox_subscription_handler; - -pub use self::close_reason::CloseReason; -pub use self::grinbox_publisher::GrinboxPublisher; -pub use self::grinbox_subscriber::GrinboxSubscriber; -pub use self::grinbox_subscription_handler::GrinboxSubscriptionHandler; \ No newline at end of file diff --git a/grinboxlib/src/types/mod.rs b/grinboxlib/src/types/mod.rs deleted file mode 100644 index cb195c6..0000000 --- a/grinboxlib/src/types/mod.rs +++ /dev/null @@ -1,15 +0,0 @@ -mod grinbox_address; -mod grinbox_message; -mod grinbox_request; -mod grinbox_response; -mod tx_proof; - -pub use grin_wallet::libwallet::slate::Slate; -pub use parking_lot::{Mutex, MutexGuard}; -pub use std::sync::Arc; - -pub use self::grinbox_address::{GrinboxAddress, GRINBOX_ADDRESS_VERSION_MAINNET, GRINBOX_ADDRESS_VERSION_TESTNET, version_bytes}; -pub use self::grinbox_message::GrinboxMessage; -pub use self::grinbox_request::GrinboxRequest; -pub use self::grinbox_response::{GrinboxError, GrinboxResponse}; -pub use self::tx_proof::{TxProof, ErrorKind as TxProofErrorKind}; diff --git a/site/css/tachyons.min.css b/site/css/tachyons.min.css deleted file mode 100644 index c4970b6..0000000 --- a/site/css/tachyons.min.css +++ /dev/null @@ -1,3 +0,0 @@ -/*! TACHYONS v4.11.2 | http://tachyons.io */ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}.border-box,a,article,aside,blockquote,body,code,dd,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,html,input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],legend,li,main,nav,ol,p,pre,section,table,td,textarea,th,tr,ul{box-sizing:border-box}.aspect-ratio{height:0;position:relative}.aspect-ratio--16x9{padding-bottom:56.25%}.aspect-ratio--9x16{padding-bottom:177.77%}.aspect-ratio--4x3{padding-bottom:75%}.aspect-ratio--3x4{padding-bottom:133.33%}.aspect-ratio--6x4{padding-bottom:66.6%}.aspect-ratio--4x6{padding-bottom:150%}.aspect-ratio--8x5{padding-bottom:62.5%}.aspect-ratio--5x8{padding-bottom:160%}.aspect-ratio--7x5{padding-bottom:71.42%}.aspect-ratio--5x7{padding-bottom:140%}.aspect-ratio--1x1{padding-bottom:100%}.aspect-ratio--object{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}img{max-width:100%}.cover{background-size:cover!important}.contain{background-size:contain!important}.bg-center{background-position:50%}.bg-center,.bg-top{background-repeat:no-repeat}.bg-top{background-position:top}.bg-right{background-position:100%}.bg-bottom,.bg-right{background-repeat:no-repeat}.bg-bottom{background-position:bottom}.bg-left{background-repeat:no-repeat;background-position:0}.outline{outline:1px solid}.outline-transparent{outline:1px solid transparent}.outline-0{outline:0}.ba{border-style:solid;border-width:1px}.bt{border-top-style:solid;border-top-width:1px}.br{border-right-style:solid;border-right-width:1px}.bb{border-bottom-style:solid;border-bottom-width:1px}.bl{border-left-style:solid;border-left-width:1px}.bn{border-style:none;border-width:0}.b--black{border-color:#000}.b--near-black{border-color:#111}.b--dark-gray{border-color:#333}.b--mid-gray{border-color:#555}.b--gray{border-color:#777}.b--silver{border-color:#999}.b--light-silver{border-color:#aaa}.b--moon-gray{border-color:#ccc}.b--light-gray{border-color:#eee}.b--near-white{border-color:#f4f4f4}.b--white{border-color:#fff}.b--white-90{border-color:hsla(0,0%,100%,.9)}.b--white-80{border-color:hsla(0,0%,100%,.8)}.b--white-70{border-color:hsla(0,0%,100%,.7)}.b--white-60{border-color:hsla(0,0%,100%,.6)}.b--white-50{border-color:hsla(0,0%,100%,.5)}.b--white-40{border-color:hsla(0,0%,100%,.4)}.b--white-30{border-color:hsla(0,0%,100%,.3)}.b--white-20{border-color:hsla(0,0%,100%,.2)}.b--white-10{border-color:hsla(0,0%,100%,.1)}.b--white-05{border-color:hsla(0,0%,100%,.05)}.b--white-025{border-color:hsla(0,0%,100%,.025)}.b--white-0125{border-color:hsla(0,0%,100%,.0125)}.b--black-90{border-color:rgba(0,0,0,.9)}.b--black-80{border-color:rgba(0,0,0,.8)}.b--black-70{border-color:rgba(0,0,0,.7)}.b--black-60{border-color:rgba(0,0,0,.6)}.b--black-50{border-color:rgba(0,0,0,.5)}.b--black-40{border-color:rgba(0,0,0,.4)}.b--black-30{border-color:rgba(0,0,0,.3)}.b--black-20{border-color:rgba(0,0,0,.2)}.b--black-10{border-color:rgba(0,0,0,.1)}.b--black-05{border-color:rgba(0,0,0,.05)}.b--black-025{border-color:rgba(0,0,0,.025)}.b--black-0125{border-color:rgba(0,0,0,.0125)}.b--dark-red{border-color:#e7040f}.b--red{border-color:#ff4136}.b--light-red{border-color:#ff725c}.b--orange{border-color:#ff6300}.b--gold{border-color:#ffb700}.b--yellow{border-color:gold}.b--light-yellow{border-color:#fbf1a9}.b--purple{border-color:#5e2ca5}.b--light-purple{border-color:#a463f2}.b--dark-pink{border-color:#d5008f}.b--hot-pink{border-color:#ff41b4}.b--pink{border-color:#ff80cc}.b--light-pink{border-color:#ffa3d7}.b--dark-green{border-color:#137752}.b--green{border-color:#19a974}.b--light-green{border-color:#9eebcf}.b--navy{border-color:#001b44}.b--dark-blue{border-color:#00449e}.b--blue{border-color:#357edd}.b--light-blue{border-color:#96ccff}.b--lightest-blue{border-color:#cdecff}.b--washed-blue{border-color:#f6fffe}.b--washed-green{border-color:#e8fdf5}.b--washed-yellow{border-color:#fffceb}.b--washed-red{border-color:#ffdfdf}.b--transparent{border-color:transparent}.b--inherit{border-color:inherit}.br0{border-radius:0}.br1{border-radius:.125rem}.br2{border-radius:.25rem}.br3{border-radius:.5rem}.br4{border-radius:1rem}.br-100{border-radius:100%}.br-pill{border-radius:9999px}.br--bottom{border-top-left-radius:0;border-top-right-radius:0}.br--top{border-bottom-right-radius:0}.br--right,.br--top{border-bottom-left-radius:0}.br--right{border-top-left-radius:0}.br--left{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted{border-style:dotted}.b--dashed{border-style:dashed}.b--solid{border-style:solid}.b--none{border-style:none}.bw0{border-width:0}.bw1{border-width:.125rem}.bw2{border-width:.25rem}.bw3{border-width:.5rem}.bw4{border-width:1rem}.bw5{border-width:2rem}.bt-0{border-top-width:0}.br-0{border-right-width:0}.bb-0{border-bottom-width:0}.bl-0{border-left-width:0}.shadow-1{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.top-1{top:1rem}.right-1{right:1rem}.bottom-1{bottom:1rem}.left-1{left:1rem}.top-2{top:2rem}.right-2{right:2rem}.bottom-2{bottom:2rem}.left-2{left:2rem}.top--1{top:-1rem}.right--1{right:-1rem}.bottom--1{bottom:-1rem}.left--1{left:-1rem}.top--2{top:-2rem}.right--2{right:-2rem}.bottom--2{bottom:-2rem}.left--2{left:-2rem}.absolute--fill{top:0;right:0;bottom:0;left:0}.cf:after,.cf:before{content:" ";display:table}.cf:after{clear:both}.cf{*zoom:1}.cl{clear:left}.cr{clear:right}.cb{clear:both}.cn{clear:none}.dn{display:none}.di{display:inline}.db{display:block}.dib{display:inline-block}.dit{display:inline-table}.dt{display:table}.dtc{display:table-cell}.dt-row{display:table-row}.dt-row-group{display:table-row-group}.dt-column{display:table-column}.dt-column-group{display:table-column-group}.dt--fixed{table-layout:fixed;width:100%}.flex{display:flex}.inline-flex{display:inline-flex}.flex-auto{flex:1 1 auto;min-width:0;min-height:0}.flex-none{flex:none}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-row-reverse{flex-direction:row-reverse}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-baseline{align-self:baseline}.self-stretch{align-self:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-stretch{align-content:stretch}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-last{order:99999}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.fl{float:left}.fl,.fr{_display:inline}.fr{float:right}.fn{float:none}.sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.serif{font-family:georgia,times,serif}.system-sans-serif{font-family:sans-serif}.system-serif{font-family:serif}.code,code{font-family:Consolas,monaco,monospace}.courier{font-family:Courier Next,courier,monospace}.helvetica{font-family:helvetica neue,helvetica,sans-serif}.avenir{font-family:avenir next,avenir,sans-serif}.athelas{font-family:athelas,georgia,serif}.georgia{font-family:georgia,serif}.times{font-family:times,serif}.bodoni{font-family:Bodoni MT,serif}.calisto{font-family:Calisto MT,serif}.garamond{font-family:garamond,serif}.baskerville{font-family:baskerville,serif}.i{font-style:italic}.fs-normal{font-style:normal}.normal{font-weight:400}.b{font-weight:700}.fw1{font-weight:100}.fw2{font-weight:200}.fw3{font-weight:300}.fw4{font-weight:400}.fw5{font-weight:500}.fw6{font-weight:600}.fw7{font-weight:700}.fw8{font-weight:800}.fw9{font-weight:900}.input-reset{-webkit-appearance:none;-moz-appearance:none}.button-reset::-moz-focus-inner,.input-reset::-moz-focus-inner{border:0;padding:0}.h1{height:1rem}.h2{height:2rem}.h3{height:4rem}.h4{height:8rem}.h5{height:16rem}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.min-h-100{min-height:100%}.vh-25{height:25vh}.vh-50{height:50vh}.vh-75{height:75vh}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.h-auto{height:auto}.h-inherit{height:inherit}.tracked{letter-spacing:.1em}.tracked-tight{letter-spacing:-.05em}.tracked-mega{letter-spacing:.25em}.lh-solid{line-height:1}.lh-title{line-height:1.25}.lh-copy{line-height:1.5}.link{text-decoration:none}.link,.link:active,.link:focus,.link:hover,.link:link,.link:visited{transition:color .15s ease-in}.link:focus{outline:1px dotted currentColor}.list{list-style-type:none}.mw-100{max-width:100%}.mw1{max-width:1rem}.mw2{max-width:2rem}.mw3{max-width:4rem}.mw4{max-width:8rem}.mw5{max-width:16rem}.mw6{max-width:32rem}.mw7{max-width:48rem}.mw8{max-width:64rem}.mw9{max-width:96rem}.mw-none{max-width:none}.w1{width:1rem}.w2{width:2rem}.w3{width:4rem}.w4{width:8rem}.w5{width:16rem}.w-10{width:10%}.w-20{width:20%}.w-25{width:25%}.w-30{width:30%}.w-33{width:33%}.w-34{width:34%}.w-40{width:40%}.w-50{width:50%}.w-60{width:60%}.w-70{width:70%}.w-75{width:75%}.w-80{width:80%}.w-90{width:90%}.w-100{width:100%}.w-third{width:33.33333%}.w-two-thirds{width:66.66667%}.w-auto{width:auto}.overflow-visible{overflow:visible}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.overflow-x-visible{overflow-x:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-visible{overflow-y:visible}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.overflow-y-auto{overflow-y:auto}.static{position:static}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.o-100{opacity:1}.o-90{opacity:.9}.o-80{opacity:.8}.o-70{opacity:.7}.o-60{opacity:.6}.o-50{opacity:.5}.o-40{opacity:.4}.o-30{opacity:.3}.o-20{opacity:.2}.o-10{opacity:.1}.o-05{opacity:.05}.o-025{opacity:.025}.o-0{opacity:0}.rotate-45{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.black-90{color:rgba(0,0,0,.9)}.black-80{color:rgba(0,0,0,.8)}.black-70{color:rgba(0,0,0,.7)}.black-60{color:rgba(0,0,0,.6)}.black-50{color:rgba(0,0,0,.5)}.black-40{color:rgba(0,0,0,.4)}.black-30{color:rgba(0,0,0,.3)}.black-20{color:rgba(0,0,0,.2)}.black-10{color:rgba(0,0,0,.1)}.black-05{color:rgba(0,0,0,.05)}.white-90{color:hsla(0,0%,100%,.9)}.white-80{color:hsla(0,0%,100%,.8)}.white-70{color:hsla(0,0%,100%,.7)}.white-60{color:hsla(0,0%,100%,.6)}.white-50{color:hsla(0,0%,100%,.5)}.white-40{color:hsla(0,0%,100%,.4)}.white-30{color:hsla(0,0%,100%,.3)}.white-20{color:hsla(0,0%,100%,.2)}.white-10{color:hsla(0,0%,100%,.1)}.black{color:#000}.near-black{color:#111}.dark-gray{color:#333}.mid-gray{color:#555}.gray{color:#777}.silver{color:#999}.light-silver{color:#aaa}.moon-gray{color:#ccc}.light-gray{color:#eee}.near-white{color:#f4f4f4}.white{color:#fff}.dark-red{color:#e7040f}.red{color:#ff4136}.light-red{color:#ff725c}.orange{color:#ff6300}.gold{color:#ffb700}.yellow{color:gold}.light-yellow{color:#fbf1a9}.purple{color:#5e2ca5}.light-purple{color:#a463f2}.dark-pink{color:#d5008f}.hot-pink{color:#ff41b4}.pink{color:#ff80cc}.light-pink{color:#ffa3d7}.dark-green{color:#137752}.green{color:#19a974}.light-green{color:#9eebcf}.navy{color:#001b44}.dark-blue{color:#00449e}.blue{color:#357edd}.light-blue{color:#96ccff}.lightest-blue{color:#cdecff}.washed-blue{color:#f6fffe}.washed-green{color:#e8fdf5}.washed-yellow{color:#fffceb}.washed-red{color:#ffdfdf}.color-inherit{color:inherit}.bg-black-90{background-color:rgba(0,0,0,.9)}.bg-black-80{background-color:rgba(0,0,0,.8)}.bg-black-70{background-color:rgba(0,0,0,.7)}.bg-black-60{background-color:rgba(0,0,0,.6)}.bg-black-50{background-color:rgba(0,0,0,.5)}.bg-black-40{background-color:rgba(0,0,0,.4)}.bg-black-30{background-color:rgba(0,0,0,.3)}.bg-black-20{background-color:rgba(0,0,0,.2)}.bg-black-10{background-color:rgba(0,0,0,.1)}.bg-black-05{background-color:rgba(0,0,0,.05)}.bg-white-90{background-color:hsla(0,0%,100%,.9)}.bg-white-80{background-color:hsla(0,0%,100%,.8)}.bg-white-70{background-color:hsla(0,0%,100%,.7)}.bg-white-60{background-color:hsla(0,0%,100%,.6)}.bg-white-50{background-color:hsla(0,0%,100%,.5)}.bg-white-40{background-color:hsla(0,0%,100%,.4)}.bg-white-30{background-color:hsla(0,0%,100%,.3)}.bg-white-20{background-color:hsla(0,0%,100%,.2)}.bg-white-10{background-color:hsla(0,0%,100%,.1)}.bg-black{background-color:#000}.bg-near-black{background-color:#111}.bg-dark-gray{background-color:#333}.bg-mid-gray{background-color:#555}.bg-gray{background-color:#777}.bg-silver{background-color:#999}.bg-light-silver{background-color:#aaa}.bg-moon-gray{background-color:#ccc}.bg-light-gray{background-color:#eee}.bg-near-white{background-color:#f4f4f4}.bg-white{background-color:#fff}.bg-transparent{background-color:transparent}.bg-dark-red{background-color:#e7040f}.bg-red{background-color:#ff4136}.bg-light-red{background-color:#ff725c}.bg-orange{background-color:#ff6300}.bg-gold{background-color:#ffb700}.bg-yellow{background-color:gold}.bg-light-yellow{background-color:#fbf1a9}.bg-purple{background-color:#5e2ca5}.bg-light-purple{background-color:#a463f2}.bg-dark-pink{background-color:#d5008f}.bg-hot-pink{background-color:#ff41b4}.bg-pink{background-color:#ff80cc}.bg-light-pink{background-color:#ffa3d7}.bg-dark-green{background-color:#137752}.bg-green{background-color:#19a974}.bg-light-green{background-color:#9eebcf}.bg-navy{background-color:#001b44}.bg-dark-blue{background-color:#00449e}.bg-blue{background-color:#357edd}.bg-light-blue{background-color:#96ccff}.bg-lightest-blue{background-color:#cdecff}.bg-washed-blue{background-color:#f6fffe}.bg-washed-green{background-color:#e8fdf5}.bg-washed-yellow{background-color:#fffceb}.bg-washed-red{background-color:#ffdfdf}.bg-inherit{background-color:inherit}.hover-black:focus,.hover-black:hover{color:#000}.hover-near-black:focus,.hover-near-black:hover{color:#111}.hover-dark-gray:focus,.hover-dark-gray:hover{color:#333}.hover-mid-gray:focus,.hover-mid-gray:hover{color:#555}.hover-gray:focus,.hover-gray:hover{color:#777}.hover-silver:focus,.hover-silver:hover{color:#999}.hover-light-silver:focus,.hover-light-silver:hover{color:#aaa}.hover-moon-gray:focus,.hover-moon-gray:hover{color:#ccc}.hover-light-gray:focus,.hover-light-gray:hover{color:#eee}.hover-near-white:focus,.hover-near-white:hover{color:#f4f4f4}.hover-white:focus,.hover-white:hover{color:#fff}.hover-black-90:focus,.hover-black-90:hover{color:rgba(0,0,0,.9)}.hover-black-80:focus,.hover-black-80:hover{color:rgba(0,0,0,.8)}.hover-black-70:focus,.hover-black-70:hover{color:rgba(0,0,0,.7)}.hover-black-60:focus,.hover-black-60:hover{color:rgba(0,0,0,.6)}.hover-black-50:focus,.hover-black-50:hover{color:rgba(0,0,0,.5)}.hover-black-40:focus,.hover-black-40:hover{color:rgba(0,0,0,.4)}.hover-black-30:focus,.hover-black-30:hover{color:rgba(0,0,0,.3)}.hover-black-20:focus,.hover-black-20:hover{color:rgba(0,0,0,.2)}.hover-black-10:focus,.hover-black-10:hover{color:rgba(0,0,0,.1)}.hover-white-90:focus,.hover-white-90:hover{color:hsla(0,0%,100%,.9)}.hover-white-80:focus,.hover-white-80:hover{color:hsla(0,0%,100%,.8)}.hover-white-70:focus,.hover-white-70:hover{color:hsla(0,0%,100%,.7)}.hover-white-60:focus,.hover-white-60:hover{color:hsla(0,0%,100%,.6)}.hover-white-50:focus,.hover-white-50:hover{color:hsla(0,0%,100%,.5)}.hover-white-40:focus,.hover-white-40:hover{color:hsla(0,0%,100%,.4)}.hover-white-30:focus,.hover-white-30:hover{color:hsla(0,0%,100%,.3)}.hover-white-20:focus,.hover-white-20:hover{color:hsla(0,0%,100%,.2)}.hover-white-10:focus,.hover-white-10:hover{color:hsla(0,0%,100%,.1)}.hover-inherit:focus,.hover-inherit:hover{color:inherit}.hover-bg-black:focus,.hover-bg-black:hover{background-color:#000}.hover-bg-near-black:focus,.hover-bg-near-black:hover{background-color:#111}.hover-bg-dark-gray:focus,.hover-bg-dark-gray:hover{background-color:#333}.hover-bg-mid-gray:focus,.hover-bg-mid-gray:hover{background-color:#555}.hover-bg-gray:focus,.hover-bg-gray:hover{background-color:#777}.hover-bg-silver:focus,.hover-bg-silver:hover{background-color:#999}.hover-bg-light-silver:focus,.hover-bg-light-silver:hover{background-color:#aaa}.hover-bg-moon-gray:focus,.hover-bg-moon-gray:hover{background-color:#ccc}.hover-bg-light-gray:focus,.hover-bg-light-gray:hover{background-color:#eee}.hover-bg-near-white:focus,.hover-bg-near-white:hover{background-color:#f4f4f4}.hover-bg-white:focus,.hover-bg-white:hover{background-color:#fff}.hover-bg-transparent:focus,.hover-bg-transparent:hover{background-color:transparent}.hover-bg-black-90:focus,.hover-bg-black-90:hover{background-color:rgba(0,0,0,.9)}.hover-bg-black-80:focus,.hover-bg-black-80:hover{background-color:rgba(0,0,0,.8)}.hover-bg-black-70:focus,.hover-bg-black-70:hover{background-color:rgba(0,0,0,.7)}.hover-bg-black-60:focus,.hover-bg-black-60:hover{background-color:rgba(0,0,0,.6)}.hover-bg-black-50:focus,.hover-bg-black-50:hover{background-color:rgba(0,0,0,.5)}.hover-bg-black-40:focus,.hover-bg-black-40:hover{background-color:rgba(0,0,0,.4)}.hover-bg-black-30:focus,.hover-bg-black-30:hover{background-color:rgba(0,0,0,.3)}.hover-bg-black-20:focus,.hover-bg-black-20:hover{background-color:rgba(0,0,0,.2)}.hover-bg-black-10:focus,.hover-bg-black-10:hover{background-color:rgba(0,0,0,.1)}.hover-bg-white-90:focus,.hover-bg-white-90:hover{background-color:hsla(0,0%,100%,.9)}.hover-bg-white-80:focus,.hover-bg-white-80:hover{background-color:hsla(0,0%,100%,.8)}.hover-bg-white-70:focus,.hover-bg-white-70:hover{background-color:hsla(0,0%,100%,.7)}.hover-bg-white-60:focus,.hover-bg-white-60:hover{background-color:hsla(0,0%,100%,.6)}.hover-bg-white-50:focus,.hover-bg-white-50:hover{background-color:hsla(0,0%,100%,.5)}.hover-bg-white-40:focus,.hover-bg-white-40:hover{background-color:hsla(0,0%,100%,.4)}.hover-bg-white-30:focus,.hover-bg-white-30:hover{background-color:hsla(0,0%,100%,.3)}.hover-bg-white-20:focus,.hover-bg-white-20:hover{background-color:hsla(0,0%,100%,.2)}.hover-bg-white-10:focus,.hover-bg-white-10:hover{background-color:hsla(0,0%,100%,.1)}.hover-dark-red:focus,.hover-dark-red:hover{color:#e7040f}.hover-red:focus,.hover-red:hover{color:#ff4136}.hover-light-red:focus,.hover-light-red:hover{color:#ff725c}.hover-orange:focus,.hover-orange:hover{color:#ff6300}.hover-gold:focus,.hover-gold:hover{color:#ffb700}.hover-yellow:focus,.hover-yellow:hover{color:gold}.hover-light-yellow:focus,.hover-light-yellow:hover{color:#fbf1a9}.hover-purple:focus,.hover-purple:hover{color:#5e2ca5}.hover-light-purple:focus,.hover-light-purple:hover{color:#a463f2}.hover-dark-pink:focus,.hover-dark-pink:hover{color:#d5008f}.hover-hot-pink:focus,.hover-hot-pink:hover{color:#ff41b4}.hover-pink:focus,.hover-pink:hover{color:#ff80cc}.hover-light-pink:focus,.hover-light-pink:hover{color:#ffa3d7}.hover-dark-green:focus,.hover-dark-green:hover{color:#137752}.hover-green:focus,.hover-green:hover{color:#19a974}.hover-light-green:focus,.hover-light-green:hover{color:#9eebcf}.hover-navy:focus,.hover-navy:hover{color:#001b44}.hover-dark-blue:focus,.hover-dark-blue:hover{color:#00449e}.hover-blue:focus,.hover-blue:hover{color:#357edd}.hover-light-blue:focus,.hover-light-blue:hover{color:#96ccff}.hover-lightest-blue:focus,.hover-lightest-blue:hover{color:#cdecff}.hover-washed-blue:focus,.hover-washed-blue:hover{color:#f6fffe}.hover-washed-green:focus,.hover-washed-green:hover{color:#e8fdf5}.hover-washed-yellow:focus,.hover-washed-yellow:hover{color:#fffceb}.hover-washed-red:focus,.hover-washed-red:hover{color:#ffdfdf}.hover-bg-dark-red:focus,.hover-bg-dark-red:hover{background-color:#e7040f}.hover-bg-red:focus,.hover-bg-red:hover{background-color:#ff4136}.hover-bg-light-red:focus,.hover-bg-light-red:hover{background-color:#ff725c}.hover-bg-orange:focus,.hover-bg-orange:hover{background-color:#ff6300}.hover-bg-gold:focus,.hover-bg-gold:hover{background-color:#ffb700}.hover-bg-yellow:focus,.hover-bg-yellow:hover{background-color:gold}.hover-bg-light-yellow:focus,.hover-bg-light-yellow:hover{background-color:#fbf1a9}.hover-bg-purple:focus,.hover-bg-purple:hover{background-color:#5e2ca5}.hover-bg-light-purple:focus,.hover-bg-light-purple:hover{background-color:#a463f2}.hover-bg-dark-pink:focus,.hover-bg-dark-pink:hover{background-color:#d5008f}.hover-bg-hot-pink:focus,.hover-bg-hot-pink:hover{background-color:#ff41b4}.hover-bg-pink:focus,.hover-bg-pink:hover{background-color:#ff80cc}.hover-bg-light-pink:focus,.hover-bg-light-pink:hover{background-color:#ffa3d7}.hover-bg-dark-green:focus,.hover-bg-dark-green:hover{background-color:#137752}.hover-bg-green:focus,.hover-bg-green:hover{background-color:#19a974}.hover-bg-light-green:focus,.hover-bg-light-green:hover{background-color:#9eebcf}.hover-bg-navy:focus,.hover-bg-navy:hover{background-color:#001b44}.hover-bg-dark-blue:focus,.hover-bg-dark-blue:hover{background-color:#00449e}.hover-bg-blue:focus,.hover-bg-blue:hover{background-color:#357edd}.hover-bg-light-blue:focus,.hover-bg-light-blue:hover{background-color:#96ccff}.hover-bg-lightest-blue:focus,.hover-bg-lightest-blue:hover{background-color:#cdecff}.hover-bg-washed-blue:focus,.hover-bg-washed-blue:hover{background-color:#f6fffe}.hover-bg-washed-green:focus,.hover-bg-washed-green:hover{background-color:#e8fdf5}.hover-bg-washed-yellow:focus,.hover-bg-washed-yellow:hover{background-color:#fffceb}.hover-bg-washed-red:focus,.hover-bg-washed-red:hover{background-color:#ffdfdf}.hover-bg-inherit:focus,.hover-bg-inherit:hover{background-color:inherit}.pa0{padding:0}.pa1{padding:.25rem}.pa2{padding:.5rem}.pa3{padding:1rem}.pa4{padding:2rem}.pa5{padding:4rem}.pa6{padding:8rem}.pa7{padding:16rem}.pl0{padding-left:0}.pl1{padding-left:.25rem}.pl2{padding-left:.5rem}.pl3{padding-left:1rem}.pl4{padding-left:2rem}.pl5{padding-left:4rem}.pl6{padding-left:8rem}.pl7{padding-left:16rem}.pr0{padding-right:0}.pr1{padding-right:.25rem}.pr2{padding-right:.5rem}.pr3{padding-right:1rem}.pr4{padding-right:2rem}.pr5{padding-right:4rem}.pr6{padding-right:8rem}.pr7{padding-right:16rem}.pb0{padding-bottom:0}.pb1{padding-bottom:.25rem}.pb2{padding-bottom:.5rem}.pb3{padding-bottom:1rem}.pb4{padding-bottom:2rem}.pb5{padding-bottom:4rem}.pb6{padding-bottom:8rem}.pb7{padding-bottom:16rem}.pt0{padding-top:0}.pt1{padding-top:.25rem}.pt2{padding-top:.5rem}.pt3{padding-top:1rem}.pt4{padding-top:2rem}.pt5{padding-top:4rem}.pt6{padding-top:8rem}.pt7{padding-top:16rem}.pv0{padding-top:0;padding-bottom:0}.pv1{padding-top:.25rem;padding-bottom:.25rem}.pv2{padding-top:.5rem;padding-bottom:.5rem}.pv3{padding-top:1rem;padding-bottom:1rem}.pv4{padding-top:2rem;padding-bottom:2rem}.pv5{padding-top:4rem;padding-bottom:4rem}.pv6{padding-top:8rem;padding-bottom:8rem}.pv7{padding-top:16rem;padding-bottom:16rem}.ph0{padding-left:0;padding-right:0}.ph1{padding-left:.25rem;padding-right:.25rem}.ph2{padding-left:.5rem;padding-right:.5rem}.ph3{padding-left:1rem;padding-right:1rem}.ph4{padding-left:2rem;padding-right:2rem}.ph5{padding-left:4rem;padding-right:4rem}.ph6{padding-left:8rem;padding-right:8rem}.ph7{padding-left:16rem;padding-right:16rem}.ma0{margin:0}.ma1{margin:.25rem}.ma2{margin:.5rem}.ma3{margin:1rem}.ma4{margin:2rem}.ma5{margin:4rem}.ma6{margin:8rem}.ma7{margin:16rem}.ml0{margin-left:0}.ml1{margin-left:.25rem}.ml2{margin-left:.5rem}.ml3{margin-left:1rem}.ml4{margin-left:2rem}.ml5{margin-left:4rem}.ml6{margin-left:8rem}.ml7{margin-left:16rem}.mr0{margin-right:0}.mr1{margin-right:.25rem}.mr2{margin-right:.5rem}.mr3{margin-right:1rem}.mr4{margin-right:2rem}.mr5{margin-right:4rem}.mr6{margin-right:8rem}.mr7{margin-right:16rem}.mb0{margin-bottom:0}.mb1{margin-bottom:.25rem}.mb2{margin-bottom:.5rem}.mb3{margin-bottom:1rem}.mb4{margin-bottom:2rem}.mb5{margin-bottom:4rem}.mb6{margin-bottom:8rem}.mb7{margin-bottom:16rem}.mt0{margin-top:0}.mt1{margin-top:.25rem}.mt2{margin-top:.5rem}.mt3{margin-top:1rem}.mt4{margin-top:2rem}.mt5{margin-top:4rem}.mt6{margin-top:8rem}.mt7{margin-top:16rem}.mv0{margin-top:0;margin-bottom:0}.mv1{margin-top:.25rem;margin-bottom:.25rem}.mv2{margin-top:.5rem;margin-bottom:.5rem}.mv3{margin-top:1rem;margin-bottom:1rem}.mv4{margin-top:2rem;margin-bottom:2rem}.mv5{margin-top:4rem;margin-bottom:4rem}.mv6{margin-top:8rem;margin-bottom:8rem}.mv7{margin-top:16rem;margin-bottom:16rem}.mh0{margin-left:0;margin-right:0}.mh1{margin-left:.25rem;margin-right:.25rem}.mh2{margin-left:.5rem;margin-right:.5rem}.mh3{margin-left:1rem;margin-right:1rem}.mh4{margin-left:2rem;margin-right:2rem}.mh5{margin-left:4rem;margin-right:4rem}.mh6{margin-left:8rem;margin-right:8rem}.mh7{margin-left:16rem;margin-right:16rem}.na1{margin:-.25rem}.na2{margin:-.5rem}.na3{margin:-1rem}.na4{margin:-2rem}.na5{margin:-4rem}.na6{margin:-8rem}.na7{margin:-16rem}.nl1{margin-left:-.25rem}.nl2{margin-left:-.5rem}.nl3{margin-left:-1rem}.nl4{margin-left:-2rem}.nl5{margin-left:-4rem}.nl6{margin-left:-8rem}.nl7{margin-left:-16rem}.nr1{margin-right:-.25rem}.nr2{margin-right:-.5rem}.nr3{margin-right:-1rem}.nr4{margin-right:-2rem}.nr5{margin-right:-4rem}.nr6{margin-right:-8rem}.nr7{margin-right:-16rem}.nb1{margin-bottom:-.25rem}.nb2{margin-bottom:-.5rem}.nb3{margin-bottom:-1rem}.nb4{margin-bottom:-2rem}.nb5{margin-bottom:-4rem}.nb6{margin-bottom:-8rem}.nb7{margin-bottom:-16rem}.nt1{margin-top:-.25rem}.nt2{margin-top:-.5rem}.nt3{margin-top:-1rem}.nt4{margin-top:-2rem}.nt5{margin-top:-4rem}.nt6{margin-top:-8rem}.nt7{margin-top:-16rem}.collapse{border-collapse:collapse;border-spacing:0}.striped--light-silver:nth-child(odd){background-color:#aaa}.striped--moon-gray:nth-child(odd){background-color:#ccc}.striped--light-gray:nth-child(odd){background-color:#eee}.striped--near-white:nth-child(odd){background-color:#f4f4f4}.stripe-light:nth-child(odd){background-color:hsla(0,0%,100%,.1)}.stripe-dark:nth-child(odd){background-color:rgba(0,0,0,.1)}.strike{text-decoration:line-through}.underline{text-decoration:underline}.no-underline{text-decoration:none}.tl{text-align:left}.tr{text-align:right}.tc{text-align:center}.tj{text-align:justify}.ttc{text-transform:capitalize}.ttl{text-transform:lowercase}.ttu{text-transform:uppercase}.ttn{text-transform:none}.f-6,.f-headline{font-size:6rem}.f-5,.f-subheadline{font-size:5rem}.f1{font-size:3rem}.f2{font-size:2.25rem}.f3{font-size:1.5rem}.f4{font-size:1.25rem}.f5{font-size:1rem}.f6{font-size:.875rem}.f7{font-size:.75rem}.measure{max-width:30em}.measure-wide{max-width:34em}.measure-narrow{max-width:20em}.indent{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps{font-variant:small-caps}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.overflow-container{overflow-y:scroll}.center{margin-left:auto}.center,.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}.clip{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal{white-space:normal}.nowrap{white-space:nowrap}.pre{white-space:pre}.v-base{vertical-align:baseline}.v-mid{vertical-align:middle}.v-top{vertical-align:top}.v-btm{vertical-align:bottom}.dim{opacity:1}.dim,.dim:focus,.dim:hover{transition:opacity .15s ease-in}.dim:focus,.dim:hover{opacity:.5}.dim:active{opacity:.8;transition:opacity .15s ease-out}.glow,.glow:focus,.glow:hover{transition:opacity .15s ease-in}.glow:focus,.glow:hover{opacity:1}.hide-child .child{opacity:0;transition:opacity .15s ease-in}.hide-child:active .child,.hide-child:focus .child,.hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.underline-hover:focus,.underline-hover:hover{text-decoration:underline}.grow{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);transition:-webkit-transform .25s ease-out;transition:transform .25s ease-out;transition:transform .25s ease-out,-webkit-transform .25s ease-out}.grow:focus,.grow:hover{-webkit-transform:scale(1.05);transform:scale(1.05)}.grow:active{-webkit-transform:scale(.9);transform:scale(.9)}.grow-large{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);transition:-webkit-transform .25s ease-in-out;transition:transform .25s ease-in-out;transition:transform .25s ease-in-out,-webkit-transform .25s ease-in-out}.grow-large:focus,.grow-large:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.grow-large:active{-webkit-transform:scale(.95);transform:scale(.95)}.pointer:hover,.shadow-hover{cursor:pointer}.shadow-hover{position:relative;transition:all .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:after{content:"";box-shadow:0 0 16px 2px rgba(0,0,0,.2);border-radius:inherit;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;transition:opacity .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:focus:after,.shadow-hover:hover:after{opacity:1}.bg-animate,.bg-animate:focus,.bg-animate:hover{transition:background-color .15s ease-in-out}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}.z-4{z-index:4}.z-5{z-index:5}.z-999{z-index:999}.z-9999{z-index:9999}.z-max{z-index:2147483647}.z-inherit{z-index:inherit}.z-initial{z-index:auto}.z-unset{z-index:unset}.nested-copy-line-height ol,.nested-copy-line-height p,.nested-copy-line-height ul{line-height:1.5}.nested-headline-line-height h1,.nested-headline-line-height h2,.nested-headline-line-height h3,.nested-headline-line-height h4,.nested-headline-line-height h5,.nested-headline-line-height h6{line-height:1.25}.nested-list-reset ol,.nested-list-reset ul{padding-left:0;margin-left:0;list-style-type:none}.nested-copy-indent p+p{text-indent:1em;margin-top:0;margin-bottom:0}.nested-copy-separator p+p{margin-top:1.5em}.nested-img img{width:100%;max-width:100%;display:block}.nested-links a{color:#357edd;transition:color .15s ease-in}.nested-links a:focus,.nested-links a:hover{color:#96ccff;transition:color .15s ease-in}.debug *{outline:1px solid gold}.debug-white *{outline:1px solid #fff}.debug-black *{outline:1px solid #000}.debug-grid{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAFElEQVR4AWPAC97/9x0eCsAEPgwAVLshdpENIxcAAAAASUVORK5CYII=) repeat 0 0}.debug-grid-16{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMklEQVR4AWOgCLz/b0epAa6UGuBOqQHOQHLUgFEDnAbcBZ4UGwDOkiCnkIhdgNgNxAYAiYlD+8sEuo8AAAAASUVORK5CYII=) repeat 0 0}.debug-grid-8-solid{background:#fff url(data:image/gif;base64,R0lGODdhCAAIAPEAAADw/wDx/////wAAACwAAAAACAAIAAACDZQvgaeb/lxbAIKA8y0AOw==) repeat 0 0}.debug-grid-16-solid{background:#fff url(data:image/gif;base64,R0lGODdhEAAQAPEAAADw/wDx/xXy/////ywAAAAAEAAQAAACIZyPKckYDQFsb6ZqD85jZ2+BkwiRFKehhqQCQgDHcgwEBQA7) repeat 0 0}@media screen and (min-width:30em){.aspect-ratio-ns{height:0;position:relative}.aspect-ratio--16x9-ns{padding-bottom:56.25%}.aspect-ratio--9x16-ns{padding-bottom:177.77%}.aspect-ratio--4x3-ns{padding-bottom:75%}.aspect-ratio--3x4-ns{padding-bottom:133.33%}.aspect-ratio--6x4-ns{padding-bottom:66.6%}.aspect-ratio--4x6-ns{padding-bottom:150%}.aspect-ratio--8x5-ns{padding-bottom:62.5%}.aspect-ratio--5x8-ns{padding-bottom:160%}.aspect-ratio--7x5-ns{padding-bottom:71.42%}.aspect-ratio--5x7-ns{padding-bottom:140%}.aspect-ratio--1x1-ns{padding-bottom:100%}.aspect-ratio--object-ns{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}.cover-ns{background-size:cover!important}.contain-ns{background-size:contain!important}.bg-center-ns{background-position:50%}.bg-center-ns,.bg-top-ns{background-repeat:no-repeat}.bg-top-ns{background-position:top}.bg-right-ns{background-position:100%}.bg-bottom-ns,.bg-right-ns{background-repeat:no-repeat}.bg-bottom-ns{background-position:bottom}.bg-left-ns{background-repeat:no-repeat;background-position:0}.outline-ns{outline:1px solid}.outline-transparent-ns{outline:1px solid transparent}.outline-0-ns{outline:0}.ba-ns{border-style:solid;border-width:1px}.bt-ns{border-top-style:solid;border-top-width:1px}.br-ns{border-right-style:solid;border-right-width:1px}.bb-ns{border-bottom-style:solid;border-bottom-width:1px}.bl-ns{border-left-style:solid;border-left-width:1px}.bn-ns{border-style:none;border-width:0}.br0-ns{border-radius:0}.br1-ns{border-radius:.125rem}.br2-ns{border-radius:.25rem}.br3-ns{border-radius:.5rem}.br4-ns{border-radius:1rem}.br-100-ns{border-radius:100%}.br-pill-ns{border-radius:9999px}.br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.br--top-ns{border-bottom-right-radius:0}.br--right-ns,.br--top-ns{border-bottom-left-radius:0}.br--right-ns{border-top-left-radius:0}.br--left-ns{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted-ns{border-style:dotted}.b--dashed-ns{border-style:dashed}.b--solid-ns{border-style:solid}.b--none-ns{border-style:none}.bw0-ns{border-width:0}.bw1-ns{border-width:.125rem}.bw2-ns{border-width:.25rem}.bw3-ns{border-width:.5rem}.bw4-ns{border-width:1rem}.bw5-ns{border-width:2rem}.bt-0-ns{border-top-width:0}.br-0-ns{border-right-width:0}.bb-0-ns{border-bottom-width:0}.bl-0-ns{border-left-width:0}.shadow-1-ns{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-ns{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-ns{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-ns{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-ns{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.top-0-ns{top:0}.left-0-ns{left:0}.right-0-ns{right:0}.bottom-0-ns{bottom:0}.top-1-ns{top:1rem}.left-1-ns{left:1rem}.right-1-ns{right:1rem}.bottom-1-ns{bottom:1rem}.top-2-ns{top:2rem}.left-2-ns{left:2rem}.right-2-ns{right:2rem}.bottom-2-ns{bottom:2rem}.top--1-ns{top:-1rem}.right--1-ns{right:-1rem}.bottom--1-ns{bottom:-1rem}.left--1-ns{left:-1rem}.top--2-ns{top:-2rem}.right--2-ns{right:-2rem}.bottom--2-ns{bottom:-2rem}.left--2-ns{left:-2rem}.absolute--fill-ns{top:0;right:0;bottom:0;left:0}.cl-ns{clear:left}.cr-ns{clear:right}.cb-ns{clear:both}.cn-ns{clear:none}.dn-ns{display:none}.di-ns{display:inline}.db-ns{display:block}.dib-ns{display:inline-block}.dit-ns{display:inline-table}.dt-ns{display:table}.dtc-ns{display:table-cell}.dt-row-ns{display:table-row}.dt-row-group-ns{display:table-row-group}.dt-column-ns{display:table-column}.dt-column-group-ns{display:table-column-group}.dt--fixed-ns{table-layout:fixed;width:100%}.flex-ns{display:flex}.inline-flex-ns{display:inline-flex}.flex-auto-ns{flex:1 1 auto;min-width:0;min-height:0}.flex-none-ns{flex:none}.flex-column-ns{flex-direction:column}.flex-row-ns{flex-direction:row}.flex-wrap-ns{flex-wrap:wrap}.flex-nowrap-ns{flex-wrap:nowrap}.flex-wrap-reverse-ns{flex-wrap:wrap-reverse}.flex-column-reverse-ns{flex-direction:column-reverse}.flex-row-reverse-ns{flex-direction:row-reverse}.items-start-ns{align-items:flex-start}.items-end-ns{align-items:flex-end}.items-center-ns{align-items:center}.items-baseline-ns{align-items:baseline}.items-stretch-ns{align-items:stretch}.self-start-ns{align-self:flex-start}.self-end-ns{align-self:flex-end}.self-center-ns{align-self:center}.self-baseline-ns{align-self:baseline}.self-stretch-ns{align-self:stretch}.justify-start-ns{justify-content:flex-start}.justify-end-ns{justify-content:flex-end}.justify-center-ns{justify-content:center}.justify-between-ns{justify-content:space-between}.justify-around-ns{justify-content:space-around}.content-start-ns{align-content:flex-start}.content-end-ns{align-content:flex-end}.content-center-ns{align-content:center}.content-between-ns{align-content:space-between}.content-around-ns{align-content:space-around}.content-stretch-ns{align-content:stretch}.order-0-ns{order:0}.order-1-ns{order:1}.order-2-ns{order:2}.order-3-ns{order:3}.order-4-ns{order:4}.order-5-ns{order:5}.order-6-ns{order:6}.order-7-ns{order:7}.order-8-ns{order:8}.order-last-ns{order:99999}.flex-grow-0-ns{flex-grow:0}.flex-grow-1-ns{flex-grow:1}.flex-shrink-0-ns{flex-shrink:0}.flex-shrink-1-ns{flex-shrink:1}.fl-ns{float:left}.fl-ns,.fr-ns{_display:inline}.fr-ns{float:right}.fn-ns{float:none}.i-ns{font-style:italic}.fs-normal-ns{font-style:normal}.normal-ns{font-weight:400}.b-ns{font-weight:700}.fw1-ns{font-weight:100}.fw2-ns{font-weight:200}.fw3-ns{font-weight:300}.fw4-ns{font-weight:400}.fw5-ns{font-weight:500}.fw6-ns{font-weight:600}.fw7-ns{font-weight:700}.fw8-ns{font-weight:800}.fw9-ns{font-weight:900}.h1-ns{height:1rem}.h2-ns{height:2rem}.h3-ns{height:4rem}.h4-ns{height:8rem}.h5-ns{height:16rem}.h-25-ns{height:25%}.h-50-ns{height:50%}.h-75-ns{height:75%}.h-100-ns{height:100%}.min-h-100-ns{min-height:100%}.vh-25-ns{height:25vh}.vh-50-ns{height:50vh}.vh-75-ns{height:75vh}.vh-100-ns{height:100vh}.min-vh-100-ns{min-height:100vh}.h-auto-ns{height:auto}.h-inherit-ns{height:inherit}.tracked-ns{letter-spacing:.1em}.tracked-tight-ns{letter-spacing:-.05em}.tracked-mega-ns{letter-spacing:.25em}.lh-solid-ns{line-height:1}.lh-title-ns{line-height:1.25}.lh-copy-ns{line-height:1.5}.mw-100-ns{max-width:100%}.mw1-ns{max-width:1rem}.mw2-ns{max-width:2rem}.mw3-ns{max-width:4rem}.mw4-ns{max-width:8rem}.mw5-ns{max-width:16rem}.mw6-ns{max-width:32rem}.mw7-ns{max-width:48rem}.mw8-ns{max-width:64rem}.mw9-ns{max-width:96rem}.mw-none-ns{max-width:none}.w1-ns{width:1rem}.w2-ns{width:2rem}.w3-ns{width:4rem}.w4-ns{width:8rem}.w5-ns{width:16rem}.w-10-ns{width:10%}.w-20-ns{width:20%}.w-25-ns{width:25%}.w-30-ns{width:30%}.w-33-ns{width:33%}.w-34-ns{width:34%}.w-40-ns{width:40%}.w-50-ns{width:50%}.w-60-ns{width:60%}.w-70-ns{width:70%}.w-75-ns{width:75%}.w-80-ns{width:80%}.w-90-ns{width:90%}.w-100-ns{width:100%}.w-third-ns{width:33.33333%}.w-two-thirds-ns{width:66.66667%}.w-auto-ns{width:auto}.overflow-visible-ns{overflow:visible}.overflow-hidden-ns{overflow:hidden}.overflow-scroll-ns{overflow:scroll}.overflow-auto-ns{overflow:auto}.overflow-x-visible-ns{overflow-x:visible}.overflow-x-hidden-ns{overflow-x:hidden}.overflow-x-scroll-ns{overflow-x:scroll}.overflow-x-auto-ns{overflow-x:auto}.overflow-y-visible-ns{overflow-y:visible}.overflow-y-hidden-ns{overflow-y:hidden}.overflow-y-scroll-ns{overflow-y:scroll}.overflow-y-auto-ns{overflow-y:auto}.static-ns{position:static}.relative-ns{position:relative}.absolute-ns{position:absolute}.fixed-ns{position:fixed}.rotate-45-ns{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90-ns{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135-ns{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180-ns{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225-ns{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270-ns{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315-ns{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.pa0-ns{padding:0}.pa1-ns{padding:.25rem}.pa2-ns{padding:.5rem}.pa3-ns{padding:1rem}.pa4-ns{padding:2rem}.pa5-ns{padding:4rem}.pa6-ns{padding:8rem}.pa7-ns{padding:16rem}.pl0-ns{padding-left:0}.pl1-ns{padding-left:.25rem}.pl2-ns{padding-left:.5rem}.pl3-ns{padding-left:1rem}.pl4-ns{padding-left:2rem}.pl5-ns{padding-left:4rem}.pl6-ns{padding-left:8rem}.pl7-ns{padding-left:16rem}.pr0-ns{padding-right:0}.pr1-ns{padding-right:.25rem}.pr2-ns{padding-right:.5rem}.pr3-ns{padding-right:1rem}.pr4-ns{padding-right:2rem}.pr5-ns{padding-right:4rem}.pr6-ns{padding-right:8rem}.pr7-ns{padding-right:16rem}.pb0-ns{padding-bottom:0}.pb1-ns{padding-bottom:.25rem}.pb2-ns{padding-bottom:.5rem}.pb3-ns{padding-bottom:1rem}.pb4-ns{padding-bottom:2rem}.pb5-ns{padding-bottom:4rem}.pb6-ns{padding-bottom:8rem}.pb7-ns{padding-bottom:16rem}.pt0-ns{padding-top:0}.pt1-ns{padding-top:.25rem}.pt2-ns{padding-top:.5rem}.pt3-ns{padding-top:1rem}.pt4-ns{padding-top:2rem}.pt5-ns{padding-top:4rem}.pt6-ns{padding-top:8rem}.pt7-ns{padding-top:16rem}.pv0-ns{padding-top:0;padding-bottom:0}.pv1-ns{padding-top:.25rem;padding-bottom:.25rem}.pv2-ns{padding-top:.5rem;padding-bottom:.5rem}.pv3-ns{padding-top:1rem;padding-bottom:1rem}.pv4-ns{padding-top:2rem;padding-bottom:2rem}.pv5-ns{padding-top:4rem;padding-bottom:4rem}.pv6-ns{padding-top:8rem;padding-bottom:8rem}.pv7-ns{padding-top:16rem;padding-bottom:16rem}.ph0-ns{padding-left:0;padding-right:0}.ph1-ns{padding-left:.25rem;padding-right:.25rem}.ph2-ns{padding-left:.5rem;padding-right:.5rem}.ph3-ns{padding-left:1rem;padding-right:1rem}.ph4-ns{padding-left:2rem;padding-right:2rem}.ph5-ns{padding-left:4rem;padding-right:4rem}.ph6-ns{padding-left:8rem;padding-right:8rem}.ph7-ns{padding-left:16rem;padding-right:16rem}.ma0-ns{margin:0}.ma1-ns{margin:.25rem}.ma2-ns{margin:.5rem}.ma3-ns{margin:1rem}.ma4-ns{margin:2rem}.ma5-ns{margin:4rem}.ma6-ns{margin:8rem}.ma7-ns{margin:16rem}.ml0-ns{margin-left:0}.ml1-ns{margin-left:.25rem}.ml2-ns{margin-left:.5rem}.ml3-ns{margin-left:1rem}.ml4-ns{margin-left:2rem}.ml5-ns{margin-left:4rem}.ml6-ns{margin-left:8rem}.ml7-ns{margin-left:16rem}.mr0-ns{margin-right:0}.mr1-ns{margin-right:.25rem}.mr2-ns{margin-right:.5rem}.mr3-ns{margin-right:1rem}.mr4-ns{margin-right:2rem}.mr5-ns{margin-right:4rem}.mr6-ns{margin-right:8rem}.mr7-ns{margin-right:16rem}.mb0-ns{margin-bottom:0}.mb1-ns{margin-bottom:.25rem}.mb2-ns{margin-bottom:.5rem}.mb3-ns{margin-bottom:1rem}.mb4-ns{margin-bottom:2rem}.mb5-ns{margin-bottom:4rem}.mb6-ns{margin-bottom:8rem}.mb7-ns{margin-bottom:16rem}.mt0-ns{margin-top:0}.mt1-ns{margin-top:.25rem}.mt2-ns{margin-top:.5rem}.mt3-ns{margin-top:1rem}.mt4-ns{margin-top:2rem}.mt5-ns{margin-top:4rem}.mt6-ns{margin-top:8rem}.mt7-ns{margin-top:16rem}.mv0-ns{margin-top:0;margin-bottom:0}.mv1-ns{margin-top:.25rem;margin-bottom:.25rem}.mv2-ns{margin-top:.5rem;margin-bottom:.5rem}.mv3-ns{margin-top:1rem;margin-bottom:1rem}.mv4-ns{margin-top:2rem;margin-bottom:2rem}.mv5-ns{margin-top:4rem;margin-bottom:4rem}.mv6-ns{margin-top:8rem;margin-bottom:8rem}.mv7-ns{margin-top:16rem;margin-bottom:16rem}.mh0-ns{margin-left:0;margin-right:0}.mh1-ns{margin-left:.25rem;margin-right:.25rem}.mh2-ns{margin-left:.5rem;margin-right:.5rem}.mh3-ns{margin-left:1rem;margin-right:1rem}.mh4-ns{margin-left:2rem;margin-right:2rem}.mh5-ns{margin-left:4rem;margin-right:4rem}.mh6-ns{margin-left:8rem;margin-right:8rem}.mh7-ns{margin-left:16rem;margin-right:16rem}.na1-ns{margin:-.25rem}.na2-ns{margin:-.5rem}.na3-ns{margin:-1rem}.na4-ns{margin:-2rem}.na5-ns{margin:-4rem}.na6-ns{margin:-8rem}.na7-ns{margin:-16rem}.nl1-ns{margin-left:-.25rem}.nl2-ns{margin-left:-.5rem}.nl3-ns{margin-left:-1rem}.nl4-ns{margin-left:-2rem}.nl5-ns{margin-left:-4rem}.nl6-ns{margin-left:-8rem}.nl7-ns{margin-left:-16rem}.nr1-ns{margin-right:-.25rem}.nr2-ns{margin-right:-.5rem}.nr3-ns{margin-right:-1rem}.nr4-ns{margin-right:-2rem}.nr5-ns{margin-right:-4rem}.nr6-ns{margin-right:-8rem}.nr7-ns{margin-right:-16rem}.nb1-ns{margin-bottom:-.25rem}.nb2-ns{margin-bottom:-.5rem}.nb3-ns{margin-bottom:-1rem}.nb4-ns{margin-bottom:-2rem}.nb5-ns{margin-bottom:-4rem}.nb6-ns{margin-bottom:-8rem}.nb7-ns{margin-bottom:-16rem}.nt1-ns{margin-top:-.25rem}.nt2-ns{margin-top:-.5rem}.nt3-ns{margin-top:-1rem}.nt4-ns{margin-top:-2rem}.nt5-ns{margin-top:-4rem}.nt6-ns{margin-top:-8rem}.nt7-ns{margin-top:-16rem}.strike-ns{text-decoration:line-through}.underline-ns{text-decoration:underline}.no-underline-ns{text-decoration:none}.tl-ns{text-align:left}.tr-ns{text-align:right}.tc-ns{text-align:center}.tj-ns{text-align:justify}.ttc-ns{text-transform:capitalize}.ttl-ns{text-transform:lowercase}.ttu-ns{text-transform:uppercase}.ttn-ns{text-transform:none}.f-6-ns,.f-headline-ns{font-size:6rem}.f-5-ns,.f-subheadline-ns{font-size:5rem}.f1-ns{font-size:3rem}.f2-ns{font-size:2.25rem}.f3-ns{font-size:1.5rem}.f4-ns{font-size:1.25rem}.f5-ns{font-size:1rem}.f6-ns{font-size:.875rem}.f7-ns{font-size:.75rem}.measure-ns{max-width:30em}.measure-wide-ns{max-width:34em}.measure-narrow-ns{max-width:20em}.indent-ns{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-ns{font-variant:small-caps}.truncate-ns{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-ns{margin-left:auto}.center-ns,.mr-auto-ns{margin-right:auto}.ml-auto-ns{margin-left:auto}.clip-ns{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-ns{white-space:normal}.nowrap-ns{white-space:nowrap}.pre-ns{white-space:pre}.v-base-ns{vertical-align:baseline}.v-mid-ns{vertical-align:middle}.v-top-ns{vertical-align:top}.v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em) and (max-width:60em){.aspect-ratio-m{height:0;position:relative}.aspect-ratio--16x9-m{padding-bottom:56.25%}.aspect-ratio--9x16-m{padding-bottom:177.77%}.aspect-ratio--4x3-m{padding-bottom:75%}.aspect-ratio--3x4-m{padding-bottom:133.33%}.aspect-ratio--6x4-m{padding-bottom:66.6%}.aspect-ratio--4x6-m{padding-bottom:150%}.aspect-ratio--8x5-m{padding-bottom:62.5%}.aspect-ratio--5x8-m{padding-bottom:160%}.aspect-ratio--7x5-m{padding-bottom:71.42%}.aspect-ratio--5x7-m{padding-bottom:140%}.aspect-ratio--1x1-m{padding-bottom:100%}.aspect-ratio--object-m{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}.cover-m{background-size:cover!important}.contain-m{background-size:contain!important}.bg-center-m{background-position:50%}.bg-center-m,.bg-top-m{background-repeat:no-repeat}.bg-top-m{background-position:top}.bg-right-m{background-position:100%}.bg-bottom-m,.bg-right-m{background-repeat:no-repeat}.bg-bottom-m{background-position:bottom}.bg-left-m{background-repeat:no-repeat;background-position:0}.outline-m{outline:1px solid}.outline-transparent-m{outline:1px solid transparent}.outline-0-m{outline:0}.ba-m{border-style:solid;border-width:1px}.bt-m{border-top-style:solid;border-top-width:1px}.br-m{border-right-style:solid;border-right-width:1px}.bb-m{border-bottom-style:solid;border-bottom-width:1px}.bl-m{border-left-style:solid;border-left-width:1px}.bn-m{border-style:none;border-width:0}.br0-m{border-radius:0}.br1-m{border-radius:.125rem}.br2-m{border-radius:.25rem}.br3-m{border-radius:.5rem}.br4-m{border-radius:1rem}.br-100-m{border-radius:100%}.br-pill-m{border-radius:9999px}.br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.br--top-m{border-bottom-right-radius:0}.br--right-m,.br--top-m{border-bottom-left-radius:0}.br--right-m{border-top-left-radius:0}.br--left-m{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted-m{border-style:dotted}.b--dashed-m{border-style:dashed}.b--solid-m{border-style:solid}.b--none-m{border-style:none}.bw0-m{border-width:0}.bw1-m{border-width:.125rem}.bw2-m{border-width:.25rem}.bw3-m{border-width:.5rem}.bw4-m{border-width:1rem}.bw5-m{border-width:2rem}.bt-0-m{border-top-width:0}.br-0-m{border-right-width:0}.bb-0-m{border-bottom-width:0}.bl-0-m{border-left-width:0}.shadow-1-m{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-m{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-m{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-m{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-m{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.top-0-m{top:0}.left-0-m{left:0}.right-0-m{right:0}.bottom-0-m{bottom:0}.top-1-m{top:1rem}.left-1-m{left:1rem}.right-1-m{right:1rem}.bottom-1-m{bottom:1rem}.top-2-m{top:2rem}.left-2-m{left:2rem}.right-2-m{right:2rem}.bottom-2-m{bottom:2rem}.top--1-m{top:-1rem}.right--1-m{right:-1rem}.bottom--1-m{bottom:-1rem}.left--1-m{left:-1rem}.top--2-m{top:-2rem}.right--2-m{right:-2rem}.bottom--2-m{bottom:-2rem}.left--2-m{left:-2rem}.absolute--fill-m{top:0;right:0;bottom:0;left:0}.cl-m{clear:left}.cr-m{clear:right}.cb-m{clear:both}.cn-m{clear:none}.dn-m{display:none}.di-m{display:inline}.db-m{display:block}.dib-m{display:inline-block}.dit-m{display:inline-table}.dt-m{display:table}.dtc-m{display:table-cell}.dt-row-m{display:table-row}.dt-row-group-m{display:table-row-group}.dt-column-m{display:table-column}.dt-column-group-m{display:table-column-group}.dt--fixed-m{table-layout:fixed;width:100%}.flex-m{display:flex}.inline-flex-m{display:inline-flex}.flex-auto-m{flex:1 1 auto;min-width:0;min-height:0}.flex-none-m{flex:none}.flex-column-m{flex-direction:column}.flex-row-m{flex-direction:row}.flex-wrap-m{flex-wrap:wrap}.flex-nowrap-m{flex-wrap:nowrap}.flex-wrap-reverse-m{flex-wrap:wrap-reverse}.flex-column-reverse-m{flex-direction:column-reverse}.flex-row-reverse-m{flex-direction:row-reverse}.items-start-m{align-items:flex-start}.items-end-m{align-items:flex-end}.items-center-m{align-items:center}.items-baseline-m{align-items:baseline}.items-stretch-m{align-items:stretch}.self-start-m{align-self:flex-start}.self-end-m{align-self:flex-end}.self-center-m{align-self:center}.self-baseline-m{align-self:baseline}.self-stretch-m{align-self:stretch}.justify-start-m{justify-content:flex-start}.justify-end-m{justify-content:flex-end}.justify-center-m{justify-content:center}.justify-between-m{justify-content:space-between}.justify-around-m{justify-content:space-around}.content-start-m{align-content:flex-start}.content-end-m{align-content:flex-end}.content-center-m{align-content:center}.content-between-m{align-content:space-between}.content-around-m{align-content:space-around}.content-stretch-m{align-content:stretch}.order-0-m{order:0}.order-1-m{order:1}.order-2-m{order:2}.order-3-m{order:3}.order-4-m{order:4}.order-5-m{order:5}.order-6-m{order:6}.order-7-m{order:7}.order-8-m{order:8}.order-last-m{order:99999}.flex-grow-0-m{flex-grow:0}.flex-grow-1-m{flex-grow:1}.flex-shrink-0-m{flex-shrink:0}.flex-shrink-1-m{flex-shrink:1}.fl-m{float:left}.fl-m,.fr-m{_display:inline}.fr-m{float:right}.fn-m{float:none}.i-m{font-style:italic}.fs-normal-m{font-style:normal}.normal-m{font-weight:400}.b-m{font-weight:700}.fw1-m{font-weight:100}.fw2-m{font-weight:200}.fw3-m{font-weight:300}.fw4-m{font-weight:400}.fw5-m{font-weight:500}.fw6-m{font-weight:600}.fw7-m{font-weight:700}.fw8-m{font-weight:800}.fw9-m{font-weight:900}.h1-m{height:1rem}.h2-m{height:2rem}.h3-m{height:4rem}.h4-m{height:8rem}.h5-m{height:16rem}.h-25-m{height:25%}.h-50-m{height:50%}.h-75-m{height:75%}.h-100-m{height:100%}.min-h-100-m{min-height:100%}.vh-25-m{height:25vh}.vh-50-m{height:50vh}.vh-75-m{height:75vh}.vh-100-m{height:100vh}.min-vh-100-m{min-height:100vh}.h-auto-m{height:auto}.h-inherit-m{height:inherit}.tracked-m{letter-spacing:.1em}.tracked-tight-m{letter-spacing:-.05em}.tracked-mega-m{letter-spacing:.25em}.lh-solid-m{line-height:1}.lh-title-m{line-height:1.25}.lh-copy-m{line-height:1.5}.mw-100-m{max-width:100%}.mw1-m{max-width:1rem}.mw2-m{max-width:2rem}.mw3-m{max-width:4rem}.mw4-m{max-width:8rem}.mw5-m{max-width:16rem}.mw6-m{max-width:32rem}.mw7-m{max-width:48rem}.mw8-m{max-width:64rem}.mw9-m{max-width:96rem}.mw-none-m{max-width:none}.w1-m{width:1rem}.w2-m{width:2rem}.w3-m{width:4rem}.w4-m{width:8rem}.w5-m{width:16rem}.w-10-m{width:10%}.w-20-m{width:20%}.w-25-m{width:25%}.w-30-m{width:30%}.w-33-m{width:33%}.w-34-m{width:34%}.w-40-m{width:40%}.w-50-m{width:50%}.w-60-m{width:60%}.w-70-m{width:70%}.w-75-m{width:75%}.w-80-m{width:80%}.w-90-m{width:90%}.w-100-m{width:100%}.w-third-m{width:33.33333%}.w-two-thirds-m{width:66.66667%}.w-auto-m{width:auto}.overflow-visible-m{overflow:visible}.overflow-hidden-m{overflow:hidden}.overflow-scroll-m{overflow:scroll}.overflow-auto-m{overflow:auto}.overflow-x-visible-m{overflow-x:visible}.overflow-x-hidden-m{overflow-x:hidden}.overflow-x-scroll-m{overflow-x:scroll}.overflow-x-auto-m{overflow-x:auto}.overflow-y-visible-m{overflow-y:visible}.overflow-y-hidden-m{overflow-y:hidden}.overflow-y-scroll-m{overflow-y:scroll}.overflow-y-auto-m{overflow-y:auto}.static-m{position:static}.relative-m{position:relative}.absolute-m{position:absolute}.fixed-m{position:fixed}.rotate-45-m{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90-m{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135-m{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180-m{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225-m{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270-m{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315-m{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.pa0-m{padding:0}.pa1-m{padding:.25rem}.pa2-m{padding:.5rem}.pa3-m{padding:1rem}.pa4-m{padding:2rem}.pa5-m{padding:4rem}.pa6-m{padding:8rem}.pa7-m{padding:16rem}.pl0-m{padding-left:0}.pl1-m{padding-left:.25rem}.pl2-m{padding-left:.5rem}.pl3-m{padding-left:1rem}.pl4-m{padding-left:2rem}.pl5-m{padding-left:4rem}.pl6-m{padding-left:8rem}.pl7-m{padding-left:16rem}.pr0-m{padding-right:0}.pr1-m{padding-right:.25rem}.pr2-m{padding-right:.5rem}.pr3-m{padding-right:1rem}.pr4-m{padding-right:2rem}.pr5-m{padding-right:4rem}.pr6-m{padding-right:8rem}.pr7-m{padding-right:16rem}.pb0-m{padding-bottom:0}.pb1-m{padding-bottom:.25rem}.pb2-m{padding-bottom:.5rem}.pb3-m{padding-bottom:1rem}.pb4-m{padding-bottom:2rem}.pb5-m{padding-bottom:4rem}.pb6-m{padding-bottom:8rem}.pb7-m{padding-bottom:16rem}.pt0-m{padding-top:0}.pt1-m{padding-top:.25rem}.pt2-m{padding-top:.5rem}.pt3-m{padding-top:1rem}.pt4-m{padding-top:2rem}.pt5-m{padding-top:4rem}.pt6-m{padding-top:8rem}.pt7-m{padding-top:16rem}.pv0-m{padding-top:0;padding-bottom:0}.pv1-m{padding-top:.25rem;padding-bottom:.25rem}.pv2-m{padding-top:.5rem;padding-bottom:.5rem}.pv3-m{padding-top:1rem;padding-bottom:1rem}.pv4-m{padding-top:2rem;padding-bottom:2rem}.pv5-m{padding-top:4rem;padding-bottom:4rem}.pv6-m{padding-top:8rem;padding-bottom:8rem}.pv7-m{padding-top:16rem;padding-bottom:16rem}.ph0-m{padding-left:0;padding-right:0}.ph1-m{padding-left:.25rem;padding-right:.25rem}.ph2-m{padding-left:.5rem;padding-right:.5rem}.ph3-m{padding-left:1rem;padding-right:1rem}.ph4-m{padding-left:2rem;padding-right:2rem}.ph5-m{padding-left:4rem;padding-right:4rem}.ph6-m{padding-left:8rem;padding-right:8rem}.ph7-m{padding-left:16rem;padding-right:16rem}.ma0-m{margin:0}.ma1-m{margin:.25rem}.ma2-m{margin:.5rem}.ma3-m{margin:1rem}.ma4-m{margin:2rem}.ma5-m{margin:4rem}.ma6-m{margin:8rem}.ma7-m{margin:16rem}.ml0-m{margin-left:0}.ml1-m{margin-left:.25rem}.ml2-m{margin-left:.5rem}.ml3-m{margin-left:1rem}.ml4-m{margin-left:2rem}.ml5-m{margin-left:4rem}.ml6-m{margin-left:8rem}.ml7-m{margin-left:16rem}.mr0-m{margin-right:0}.mr1-m{margin-right:.25rem}.mr2-m{margin-right:.5rem}.mr3-m{margin-right:1rem}.mr4-m{margin-right:2rem}.mr5-m{margin-right:4rem}.mr6-m{margin-right:8rem}.mr7-m{margin-right:16rem}.mb0-m{margin-bottom:0}.mb1-m{margin-bottom:.25rem}.mb2-m{margin-bottom:.5rem}.mb3-m{margin-bottom:1rem}.mb4-m{margin-bottom:2rem}.mb5-m{margin-bottom:4rem}.mb6-m{margin-bottom:8rem}.mb7-m{margin-bottom:16rem}.mt0-m{margin-top:0}.mt1-m{margin-top:.25rem}.mt2-m{margin-top:.5rem}.mt3-m{margin-top:1rem}.mt4-m{margin-top:2rem}.mt5-m{margin-top:4rem}.mt6-m{margin-top:8rem}.mt7-m{margin-top:16rem}.mv0-m{margin-top:0;margin-bottom:0}.mv1-m{margin-top:.25rem;margin-bottom:.25rem}.mv2-m{margin-top:.5rem;margin-bottom:.5rem}.mv3-m{margin-top:1rem;margin-bottom:1rem}.mv4-m{margin-top:2rem;margin-bottom:2rem}.mv5-m{margin-top:4rem;margin-bottom:4rem}.mv6-m{margin-top:8rem;margin-bottom:8rem}.mv7-m{margin-top:16rem;margin-bottom:16rem}.mh0-m{margin-left:0;margin-right:0}.mh1-m{margin-left:.25rem;margin-right:.25rem}.mh2-m{margin-left:.5rem;margin-right:.5rem}.mh3-m{margin-left:1rem;margin-right:1rem}.mh4-m{margin-left:2rem;margin-right:2rem}.mh5-m{margin-left:4rem;margin-right:4rem}.mh6-m{margin-left:8rem;margin-right:8rem}.mh7-m{margin-left:16rem;margin-right:16rem}.na1-m{margin:-.25rem}.na2-m{margin:-.5rem}.na3-m{margin:-1rem}.na4-m{margin:-2rem}.na5-m{margin:-4rem}.na6-m{margin:-8rem}.na7-m{margin:-16rem}.nl1-m{margin-left:-.25rem}.nl2-m{margin-left:-.5rem}.nl3-m{margin-left:-1rem}.nl4-m{margin-left:-2rem}.nl5-m{margin-left:-4rem}.nl6-m{margin-left:-8rem}.nl7-m{margin-left:-16rem}.nr1-m{margin-right:-.25rem}.nr2-m{margin-right:-.5rem}.nr3-m{margin-right:-1rem}.nr4-m{margin-right:-2rem}.nr5-m{margin-right:-4rem}.nr6-m{margin-right:-8rem}.nr7-m{margin-right:-16rem}.nb1-m{margin-bottom:-.25rem}.nb2-m{margin-bottom:-.5rem}.nb3-m{margin-bottom:-1rem}.nb4-m{margin-bottom:-2rem}.nb5-m{margin-bottom:-4rem}.nb6-m{margin-bottom:-8rem}.nb7-m{margin-bottom:-16rem}.nt1-m{margin-top:-.25rem}.nt2-m{margin-top:-.5rem}.nt3-m{margin-top:-1rem}.nt4-m{margin-top:-2rem}.nt5-m{margin-top:-4rem}.nt6-m{margin-top:-8rem}.nt7-m{margin-top:-16rem}.strike-m{text-decoration:line-through}.underline-m{text-decoration:underline}.no-underline-m{text-decoration:none}.tl-m{text-align:left}.tr-m{text-align:right}.tc-m{text-align:center}.tj-m{text-align:justify}.ttc-m{text-transform:capitalize}.ttl-m{text-transform:lowercase}.ttu-m{text-transform:uppercase}.ttn-m{text-transform:none}.f-6-m,.f-headline-m{font-size:6rem}.f-5-m,.f-subheadline-m{font-size:5rem}.f1-m{font-size:3rem}.f2-m{font-size:2.25rem}.f3-m{font-size:1.5rem}.f4-m{font-size:1.25rem}.f5-m{font-size:1rem}.f6-m{font-size:.875rem}.f7-m{font-size:.75rem}.measure-m{max-width:30em}.measure-wide-m{max-width:34em}.measure-narrow-m{max-width:20em}.indent-m{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-m{font-variant:small-caps}.truncate-m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-m{margin-left:auto}.center-m,.mr-auto-m{margin-right:auto}.ml-auto-m{margin-left:auto}.clip-m{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-m{white-space:normal}.nowrap-m{white-space:nowrap}.pre-m{white-space:pre}.v-base-m{vertical-align:baseline}.v-mid-m{vertical-align:middle}.v-top-m{vertical-align:top}.v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.aspect-ratio-l{height:0;position:relative}.aspect-ratio--16x9-l{padding-bottom:56.25%}.aspect-ratio--9x16-l{padding-bottom:177.77%}.aspect-ratio--4x3-l{padding-bottom:75%}.aspect-ratio--3x4-l{padding-bottom:133.33%}.aspect-ratio--6x4-l{padding-bottom:66.6%}.aspect-ratio--4x6-l{padding-bottom:150%}.aspect-ratio--8x5-l{padding-bottom:62.5%}.aspect-ratio--5x8-l{padding-bottom:160%}.aspect-ratio--7x5-l{padding-bottom:71.42%}.aspect-ratio--5x7-l{padding-bottom:140%}.aspect-ratio--1x1-l{padding-bottom:100%}.aspect-ratio--object-l{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}.cover-l{background-size:cover!important}.contain-l{background-size:contain!important}.bg-center-l{background-position:50%}.bg-center-l,.bg-top-l{background-repeat:no-repeat}.bg-top-l{background-position:top}.bg-right-l{background-position:100%}.bg-bottom-l,.bg-right-l{background-repeat:no-repeat}.bg-bottom-l{background-position:bottom}.bg-left-l{background-repeat:no-repeat;background-position:0}.outline-l{outline:1px solid}.outline-transparent-l{outline:1px solid transparent}.outline-0-l{outline:0}.ba-l{border-style:solid;border-width:1px}.bt-l{border-top-style:solid;border-top-width:1px}.br-l{border-right-style:solid;border-right-width:1px}.bb-l{border-bottom-style:solid;border-bottom-width:1px}.bl-l{border-left-style:solid;border-left-width:1px}.bn-l{border-style:none;border-width:0}.br0-l{border-radius:0}.br1-l{border-radius:.125rem}.br2-l{border-radius:.25rem}.br3-l{border-radius:.5rem}.br4-l{border-radius:1rem}.br-100-l{border-radius:100%}.br-pill-l{border-radius:9999px}.br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.br--top-l{border-bottom-right-radius:0}.br--right-l,.br--top-l{border-bottom-left-radius:0}.br--right-l{border-top-left-radius:0}.br--left-l{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted-l{border-style:dotted}.b--dashed-l{border-style:dashed}.b--solid-l{border-style:solid}.b--none-l{border-style:none}.bw0-l{border-width:0}.bw1-l{border-width:.125rem}.bw2-l{border-width:.25rem}.bw3-l{border-width:.5rem}.bw4-l{border-width:1rem}.bw5-l{border-width:2rem}.bt-0-l{border-top-width:0}.br-0-l{border-right-width:0}.bb-0-l{border-bottom-width:0}.bl-0-l{border-left-width:0}.shadow-1-l{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-l{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-l{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-l{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-l{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.top-0-l{top:0}.left-0-l{left:0}.right-0-l{right:0}.bottom-0-l{bottom:0}.top-1-l{top:1rem}.left-1-l{left:1rem}.right-1-l{right:1rem}.bottom-1-l{bottom:1rem}.top-2-l{top:2rem}.left-2-l{left:2rem}.right-2-l{right:2rem}.bottom-2-l{bottom:2rem}.top--1-l{top:-1rem}.right--1-l{right:-1rem}.bottom--1-l{bottom:-1rem}.left--1-l{left:-1rem}.top--2-l{top:-2rem}.right--2-l{right:-2rem}.bottom--2-l{bottom:-2rem}.left--2-l{left:-2rem}.absolute--fill-l{top:0;right:0;bottom:0;left:0}.cl-l{clear:left}.cr-l{clear:right}.cb-l{clear:both}.cn-l{clear:none}.dn-l{display:none}.di-l{display:inline}.db-l{display:block}.dib-l{display:inline-block}.dit-l{display:inline-table}.dt-l{display:table}.dtc-l{display:table-cell}.dt-row-l{display:table-row}.dt-row-group-l{display:table-row-group}.dt-column-l{display:table-column}.dt-column-group-l{display:table-column-group}.dt--fixed-l{table-layout:fixed;width:100%}.flex-l{display:flex}.inline-flex-l{display:inline-flex}.flex-auto-l{flex:1 1 auto;min-width:0;min-height:0}.flex-none-l{flex:none}.flex-column-l{flex-direction:column}.flex-row-l{flex-direction:row}.flex-wrap-l{flex-wrap:wrap}.flex-nowrap-l{flex-wrap:nowrap}.flex-wrap-reverse-l{flex-wrap:wrap-reverse}.flex-column-reverse-l{flex-direction:column-reverse}.flex-row-reverse-l{flex-direction:row-reverse}.items-start-l{align-items:flex-start}.items-end-l{align-items:flex-end}.items-center-l{align-items:center}.items-baseline-l{align-items:baseline}.items-stretch-l{align-items:stretch}.self-start-l{align-self:flex-start}.self-end-l{align-self:flex-end}.self-center-l{align-self:center}.self-baseline-l{align-self:baseline}.self-stretch-l{align-self:stretch}.justify-start-l{justify-content:flex-start}.justify-end-l{justify-content:flex-end}.justify-center-l{justify-content:center}.justify-between-l{justify-content:space-between}.justify-around-l{justify-content:space-around}.content-start-l{align-content:flex-start}.content-end-l{align-content:flex-end}.content-center-l{align-content:center}.content-between-l{align-content:space-between}.content-around-l{align-content:space-around}.content-stretch-l{align-content:stretch}.order-0-l{order:0}.order-1-l{order:1}.order-2-l{order:2}.order-3-l{order:3}.order-4-l{order:4}.order-5-l{order:5}.order-6-l{order:6}.order-7-l{order:7}.order-8-l{order:8}.order-last-l{order:99999}.flex-grow-0-l{flex-grow:0}.flex-grow-1-l{flex-grow:1}.flex-shrink-0-l{flex-shrink:0}.flex-shrink-1-l{flex-shrink:1}.fl-l{float:left}.fl-l,.fr-l{_display:inline}.fr-l{float:right}.fn-l{float:none}.i-l{font-style:italic}.fs-normal-l{font-style:normal}.normal-l{font-weight:400}.b-l{font-weight:700}.fw1-l{font-weight:100}.fw2-l{font-weight:200}.fw3-l{font-weight:300}.fw4-l{font-weight:400}.fw5-l{font-weight:500}.fw6-l{font-weight:600}.fw7-l{font-weight:700}.fw8-l{font-weight:800}.fw9-l{font-weight:900}.h1-l{height:1rem}.h2-l{height:2rem}.h3-l{height:4rem}.h4-l{height:8rem}.h5-l{height:16rem}.h-25-l{height:25%}.h-50-l{height:50%}.h-75-l{height:75%}.h-100-l{height:100%}.min-h-100-l{min-height:100%}.vh-25-l{height:25vh}.vh-50-l{height:50vh}.vh-75-l{height:75vh}.vh-100-l{height:100vh}.min-vh-100-l{min-height:100vh}.h-auto-l{height:auto}.h-inherit-l{height:inherit}.tracked-l{letter-spacing:.1em}.tracked-tight-l{letter-spacing:-.05em}.tracked-mega-l{letter-spacing:.25em}.lh-solid-l{line-height:1}.lh-title-l{line-height:1.25}.lh-copy-l{line-height:1.5}.mw-100-l{max-width:100%}.mw1-l{max-width:1rem}.mw2-l{max-width:2rem}.mw3-l{max-width:4rem}.mw4-l{max-width:8rem}.mw5-l{max-width:16rem}.mw6-l{max-width:32rem}.mw7-l{max-width:48rem}.mw8-l{max-width:64rem}.mw9-l{max-width:96rem}.mw-none-l{max-width:none}.w1-l{width:1rem}.w2-l{width:2rem}.w3-l{width:4rem}.w4-l{width:8rem}.w5-l{width:16rem}.w-10-l{width:10%}.w-20-l{width:20%}.w-25-l{width:25%}.w-30-l{width:30%}.w-33-l{width:33%}.w-34-l{width:34%}.w-40-l{width:40%}.w-50-l{width:50%}.w-60-l{width:60%}.w-70-l{width:70%}.w-75-l{width:75%}.w-80-l{width:80%}.w-90-l{width:90%}.w-100-l{width:100%}.w-third-l{width:33.33333%}.w-two-thirds-l{width:66.66667%}.w-auto-l{width:auto}.overflow-visible-l{overflow:visible}.overflow-hidden-l{overflow:hidden}.overflow-scroll-l{overflow:scroll}.overflow-auto-l{overflow:auto}.overflow-x-visible-l{overflow-x:visible}.overflow-x-hidden-l{overflow-x:hidden}.overflow-x-scroll-l{overflow-x:scroll}.overflow-x-auto-l{overflow-x:auto}.overflow-y-visible-l{overflow-y:visible}.overflow-y-hidden-l{overflow-y:hidden}.overflow-y-scroll-l{overflow-y:scroll}.overflow-y-auto-l{overflow-y:auto}.static-l{position:static}.relative-l{position:relative}.absolute-l{position:absolute}.fixed-l{position:fixed}.rotate-45-l{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90-l{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135-l{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180-l{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225-l{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270-l{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315-l{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.pa0-l{padding:0}.pa1-l{padding:.25rem}.pa2-l{padding:.5rem}.pa3-l{padding:1rem}.pa4-l{padding:2rem}.pa5-l{padding:4rem}.pa6-l{padding:8rem}.pa7-l{padding:16rem}.pl0-l{padding-left:0}.pl1-l{padding-left:.25rem}.pl2-l{padding-left:.5rem}.pl3-l{padding-left:1rem}.pl4-l{padding-left:2rem}.pl5-l{padding-left:4rem}.pl6-l{padding-left:8rem}.pl7-l{padding-left:16rem}.pr0-l{padding-right:0}.pr1-l{padding-right:.25rem}.pr2-l{padding-right:.5rem}.pr3-l{padding-right:1rem}.pr4-l{padding-right:2rem}.pr5-l{padding-right:4rem}.pr6-l{padding-right:8rem}.pr7-l{padding-right:16rem}.pb0-l{padding-bottom:0}.pb1-l{padding-bottom:.25rem}.pb2-l{padding-bottom:.5rem}.pb3-l{padding-bottom:1rem}.pb4-l{padding-bottom:2rem}.pb5-l{padding-bottom:4rem}.pb6-l{padding-bottom:8rem}.pb7-l{padding-bottom:16rem}.pt0-l{padding-top:0}.pt1-l{padding-top:.25rem}.pt2-l{padding-top:.5rem}.pt3-l{padding-top:1rem}.pt4-l{padding-top:2rem}.pt5-l{padding-top:4rem}.pt6-l{padding-top:8rem}.pt7-l{padding-top:16rem}.pv0-l{padding-top:0;padding-bottom:0}.pv1-l{padding-top:.25rem;padding-bottom:.25rem}.pv2-l{padding-top:.5rem;padding-bottom:.5rem}.pv3-l{padding-top:1rem;padding-bottom:1rem}.pv4-l{padding-top:2rem;padding-bottom:2rem}.pv5-l{padding-top:4rem;padding-bottom:4rem}.pv6-l{padding-top:8rem;padding-bottom:8rem}.pv7-l{padding-top:16rem;padding-bottom:16rem}.ph0-l{padding-left:0;padding-right:0}.ph1-l{padding-left:.25rem;padding-right:.25rem}.ph2-l{padding-left:.5rem;padding-right:.5rem}.ph3-l{padding-left:1rem;padding-right:1rem}.ph4-l{padding-left:2rem;padding-right:2rem}.ph5-l{padding-left:4rem;padding-right:4rem}.ph6-l{padding-left:8rem;padding-right:8rem}.ph7-l{padding-left:16rem;padding-right:16rem}.ma0-l{margin:0}.ma1-l{margin:.25rem}.ma2-l{margin:.5rem}.ma3-l{margin:1rem}.ma4-l{margin:2rem}.ma5-l{margin:4rem}.ma6-l{margin:8rem}.ma7-l{margin:16rem}.ml0-l{margin-left:0}.ml1-l{margin-left:.25rem}.ml2-l{margin-left:.5rem}.ml3-l{margin-left:1rem}.ml4-l{margin-left:2rem}.ml5-l{margin-left:4rem}.ml6-l{margin-left:8rem}.ml7-l{margin-left:16rem}.mr0-l{margin-right:0}.mr1-l{margin-right:.25rem}.mr2-l{margin-right:.5rem}.mr3-l{margin-right:1rem}.mr4-l{margin-right:2rem}.mr5-l{margin-right:4rem}.mr6-l{margin-right:8rem}.mr7-l{margin-right:16rem}.mb0-l{margin-bottom:0}.mb1-l{margin-bottom:.25rem}.mb2-l{margin-bottom:.5rem}.mb3-l{margin-bottom:1rem}.mb4-l{margin-bottom:2rem}.mb5-l{margin-bottom:4rem}.mb6-l{margin-bottom:8rem}.mb7-l{margin-bottom:16rem}.mt0-l{margin-top:0}.mt1-l{margin-top:.25rem}.mt2-l{margin-top:.5rem}.mt3-l{margin-top:1rem}.mt4-l{margin-top:2rem}.mt5-l{margin-top:4rem}.mt6-l{margin-top:8rem}.mt7-l{margin-top:16rem}.mv0-l{margin-top:0;margin-bottom:0}.mv1-l{margin-top:.25rem;margin-bottom:.25rem}.mv2-l{margin-top:.5rem;margin-bottom:.5rem}.mv3-l{margin-top:1rem;margin-bottom:1rem}.mv4-l{margin-top:2rem;margin-bottom:2rem}.mv5-l{margin-top:4rem;margin-bottom:4rem}.mv6-l{margin-top:8rem;margin-bottom:8rem}.mv7-l{margin-top:16rem;margin-bottom:16rem}.mh0-l{margin-left:0;margin-right:0}.mh1-l{margin-left:.25rem;margin-right:.25rem}.mh2-l{margin-left:.5rem;margin-right:.5rem}.mh3-l{margin-left:1rem;margin-right:1rem}.mh4-l{margin-left:2rem;margin-right:2rem}.mh5-l{margin-left:4rem;margin-right:4rem}.mh6-l{margin-left:8rem;margin-right:8rem}.mh7-l{margin-left:16rem;margin-right:16rem}.na1-l{margin:-.25rem}.na2-l{margin:-.5rem}.na3-l{margin:-1rem}.na4-l{margin:-2rem}.na5-l{margin:-4rem}.na6-l{margin:-8rem}.na7-l{margin:-16rem}.nl1-l{margin-left:-.25rem}.nl2-l{margin-left:-.5rem}.nl3-l{margin-left:-1rem}.nl4-l{margin-left:-2rem}.nl5-l{margin-left:-4rem}.nl6-l{margin-left:-8rem}.nl7-l{margin-left:-16rem}.nr1-l{margin-right:-.25rem}.nr2-l{margin-right:-.5rem}.nr3-l{margin-right:-1rem}.nr4-l{margin-right:-2rem}.nr5-l{margin-right:-4rem}.nr6-l{margin-right:-8rem}.nr7-l{margin-right:-16rem}.nb1-l{margin-bottom:-.25rem}.nb2-l{margin-bottom:-.5rem}.nb3-l{margin-bottom:-1rem}.nb4-l{margin-bottom:-2rem}.nb5-l{margin-bottom:-4rem}.nb6-l{margin-bottom:-8rem}.nb7-l{margin-bottom:-16rem}.nt1-l{margin-top:-.25rem}.nt2-l{margin-top:-.5rem}.nt3-l{margin-top:-1rem}.nt4-l{margin-top:-2rem}.nt5-l{margin-top:-4rem}.nt6-l{margin-top:-8rem}.nt7-l{margin-top:-16rem}.strike-l{text-decoration:line-through}.underline-l{text-decoration:underline}.no-underline-l{text-decoration:none}.tl-l{text-align:left}.tr-l{text-align:right}.tc-l{text-align:center}.tj-l{text-align:justify}.ttc-l{text-transform:capitalize}.ttl-l{text-transform:lowercase}.ttu-l{text-transform:uppercase}.ttn-l{text-transform:none}.f-6-l,.f-headline-l{font-size:6rem}.f-5-l,.f-subheadline-l{font-size:5rem}.f1-l{font-size:3rem}.f2-l{font-size:2.25rem}.f3-l{font-size:1.5rem}.f4-l{font-size:1.25rem}.f5-l{font-size:1rem}.f6-l{font-size:.875rem}.f7-l{font-size:.75rem}.measure-l{max-width:30em}.measure-wide-l{max-width:34em}.measure-narrow-l{max-width:20em}.indent-l{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-l{font-variant:small-caps}.truncate-l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-l{margin-left:auto}.center-l,.mr-auto-l{margin-right:auto}.ml-auto-l{margin-left:auto}.clip-l{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-l{white-space:normal}.nowrap-l{white-space:nowrap}.pre-l{white-space:pre}.v-base-l{vertical-align:baseline}.v-mid-l{vertical-align:middle}.v-top-l{vertical-align:top}.v-btm-l{vertical-align:bottom}} - diff --git a/site/img/grin.svg b/site/img/grin.svg deleted file mode 100644 index df8175e..0000000 --- a/site/img/grin.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/site/index.html b/site/index.html deleted file mode 100644 index 6828334..0000000 --- a/site/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - Grinbox: The easy way to send and receive in Grin - - - - - - - - - - - - - - - - -
-
-

grinbox://

-

The easy way to send and receive in Grin.

- - - -

What's grinbox?

-

Grinbox is a transaction protocol that utilises relay servers to build and broadcast valid Grin transactions in a secure and scaleable way without compromising on privacy:

-

    -
  • 100% free and open source. Grinbox is free to use and open for anyone to integrate into their products and services.
  • -
  • An address for your grin wallet. Send and receive grins immediately in an easy way by sharing your unique grinbox address to those you interact with.
  • -
  • End to end encryption. Relays cannot read the transaction data, only the parties involved in a transaction can.
  • -
  • Asynchronous messaging. Senders and recipients do not need to be online at the same time to transact.
  • -
  • Transaction proofs. With grinbox, it becomes easy to prove that a Grin transaction was sent to a recipient.
  • -
  • Federation supported. Anyone can run their own transaction relay or use the server they prefer.
  • -

-
- -

How to get started

-
-

If you're a developer, looking to add grinbox support into your product or service, take a look at the integration documentation.

-

If you're a business or just want to run your own grinbox relay, get the latest version of grinbox server from the GitHub repo.

-

If you're a user and want to try out grinbox, it's integrated and ready for use in wallet713.

-
-
-
-
-

Join the team?

-

We’re looking for Rust engineers who believe that privacy is a fundamental right and that inviduals should have unrestricted access to their own money.

- Drop us a line -
-
-
Made with ♥︎ by vault713. -

mail: hello@713.mw
- twitter: @vault713co
- gitter: https://gitter.im/vault713/grinbox

-

-
-
-
- - diff --git a/src/broker/rabbit_broker.rs b/src/broker/rabbit_broker.rs index e23f1b9..81ff5f3 100644 --- a/src/broker/rabbit_broker.rs +++ b/src/broker/rabbit_broker.rs @@ -10,7 +10,7 @@ use futures::{ Future }; -use grinboxlib::error::Result; +use epicboxlib::error::Result; use crate::broker::{BrokerRequest, BrokerResponse}; use crate::broker::stomp::session::SessionEvent; @@ -24,7 +24,7 @@ type Session = crate::broker::stomp::session::Session; const DEFAULT_QUEUE_EXPIRATION: &str = "86400000"; const DEFAULT_MESSAGE_EXPIRATION: u32 = 86400; -const REPLY_TO_HEADER_NAME: &str = "grinbox-reply-to"; +const REPLY_TO_HEADER_NAME: &str = "epicbox-reply-to"; pub struct Broker { address: SocketAddr, @@ -210,6 +210,8 @@ impl BrokerSession { reply_to ) ) + .with(Header::new(HeaderName::from_str("durable"),"true")) + .with(Header::new(HeaderName::from_str("persistent"), "true")) .send(); } @@ -289,4 +291,4 @@ impl Future for BrokerSession { Ok(Async::NotReady) } -} \ No newline at end of file +} diff --git a/src/main.rs b/src/main.rs index 28eb5a7..1986b96 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,9 @@ extern crate env_logger; extern crate failure; #[macro_use] extern crate futures; +extern crate bytes; extern crate nitox; +extern crate nom; extern crate serde_json; extern crate tokio; extern crate tokio_codec; @@ -15,12 +17,10 @@ extern crate tokio_core; extern crate tokio_io; extern crate tokio_timer; extern crate unicode_segmentation; -extern crate bytes; -extern crate nom; extern crate uuid; extern crate ws; -extern crate grinboxlib; +extern crate epicboxlib; mod broker; mod server; @@ -32,7 +32,6 @@ use std::net::ToSocketAddrs; fn main() { env_logger::init(); - info!("hello, world!"); let broker_uri = std::env::var("BROKER_URI") .unwrap_or_else(|_| "127.0.0.1:61613".to_string()) @@ -43,10 +42,14 @@ fn main() { let username = std::env::var("BROKER_USERNAME").unwrap_or("guest".to_string()); let password = std::env::var("BROKER_PASSWORD").unwrap_or("guest".to_string()); - let grinbox_domain = std::env::var("GRINBOX_DOMAIN").unwrap_or("127.0.0.1".to_string()); - let grinbox_port = std::env::var("GRINBOX_PORT").unwrap_or("13420".to_string()); - let grinbox_port = u16::from_str_radix(&grinbox_port, 10).expect("invalid GRINBOX_PORT given!"); - let grinbox_protocol_unsecure = std::env::var("GRINBOX_PROTOCOL_UNSECURE").map(|_| true).unwrap_or(false); + let epicbox_domain = std::env::var("EPICBOX_DOMAIN").unwrap_or("127.0.0.1".to_string()); + let epicbox_port = std::env::var("EPICBOX_PORT").unwrap_or("443".to_string()); + let epicbox_port = u16::from_str_radix(&epicbox_port, 10).expect("invalid EPICBOX_PORT given!"); + let epicbox_max_connections = std::env::var("EPICBOX_MAX_CONNECTIONS").unwrap_or("1000".to_string()); + let epicbox_max_connections = usize::from_str_radix(&epicbox_max_connections, 10).expect("invalid EPICBOX_MAX_CONNECTIONS given!"); + let epicbox_protocol_unsecure = std::env::var("EPICBOX_PROTOCOL_UNSECURE") + .map(|_| true) + .unwrap_or(false); if broker_uri.is_none() { error!("could not resolve broker uri!"); @@ -56,17 +59,31 @@ fn main() { let broker_uri = broker_uri.unwrap(); let bind_address = - std::env::var("BIND_ADDRESS").unwrap_or_else(|_| "0.0.0.0:13420".to_string()); + std::env::var("BIND_ADDRESS").unwrap_or_else(|_| "0.0.0.0:3423".to_string()); info!("Broker URI: {}", broker_uri); info!("Bind address: {}", bind_address); + info!("Max Connections {}", epicbox_max_connections); let mut broker = Broker::new(broker_uri, username, password); let sender = broker.start().expect("failed initiating broker session"); let response_handlers_sender = AsyncServer::init(); - ws::Builder::new() - .build(|out| AsyncServer::new(out, sender.clone(), response_handlers_sender.clone(), &grinbox_domain, grinbox_port, grinbox_protocol_unsecure)) + + ws::Builder::new().with_settings(ws::Settings { + max_connections: epicbox_max_connections, + ..ws::Settings::default() + }) + .build(|out| { + AsyncServer::new( + out, + sender.clone(), + response_handlers_sender.clone(), + &epicbox_domain, + epicbox_port, + epicbox_protocol_unsecure, + ) + }) .unwrap() .listen(&bind_address[..]) .unwrap(); diff --git a/src/server/mod.rs b/src/server/mod.rs index b47867d..4f878bc 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -9,10 +9,10 @@ use uuid::Uuid; use ws::{CloseCode, Handler, Handshake, Message, Request, Response, Result as WsResult, Sender, connect}; -use grinboxlib::error::{ErrorKind, Result}; -use grinboxlib::types::{GrinboxAddress, GrinboxError, GrinboxRequest, GrinboxResponse}; -use grinboxlib::utils::crypto::{verify_signature, Base58, Hex}; -use grinboxlib::utils::secp::{PublicKey, Signature}; +use epicboxlib::error::{ErrorKind, Result}; +use epicboxlib::types::{EpicboxAddress, EpicboxError, EpicboxRequest, EpicboxResponse}; +use epicboxlib::utils::crypto::{verify_signature, Base58, Hex}; +use epicboxlib::utils::secp::{PublicKey, Signature}; use crate::broker::{BrokerRequest, BrokerResponse}; @@ -29,9 +29,9 @@ pub struct AsyncServer { nats_sender: UnboundedSender, response_handlers_sender: UnboundedSender, subscriptions: HashMap, - grinbox_domain: String, - grinbox_port: u16, - grinbox_protocol_unsecure: bool, + epicbox_domain: String, + epicbox_port: u16, + epicbox_protocol_unsecure: bool, } pub struct Server { @@ -69,9 +69,9 @@ impl AsyncServer { out: Sender, nats_sender: UnboundedSender, response_handlers_sender: UnboundedSender, - grinbox_domain: &str, - grinbox_port: u16, - grinbox_protocol_unsecure: bool, + epicbox_domain: &str, + epicbox_port: u16, + epicbox_protocol_unsecure: bool, ) -> AsyncServer { let id = Uuid::new_v4().to_string(); @@ -86,9 +86,9 @@ impl AsyncServer { nats_sender, response_handlers_sender, subscriptions: HashMap::new(), - grinbox_domain: grinbox_domain.to_string(), - grinbox_port, - grinbox_protocol_unsecure, + epicbox_domain: epicbox_domain.to_string(), + epicbox_port, + epicbox_protocol_unsecure, } } @@ -111,7 +111,7 @@ impl AsyncServer { serde_json::from_str::(&payload); if signed_payload.is_ok() { let signed_payload = signed_payload.unwrap(); - let response = GrinboxResponse::Slate { + let response = EpicboxResponse::Slate { from: reply_to, str: signed_payload.str, challenge: signed_payload.challenge, @@ -151,21 +151,21 @@ impl AsyncServer { fut_tx } - fn error(kind: GrinboxError) -> GrinboxResponse { + fn error(kind: EpicboxError) -> EpicboxResponse { let description = format!("{}", kind); - GrinboxResponse::Error { kind, description } + EpicboxResponse::Error { kind, description } } - fn ok() -> GrinboxResponse { - GrinboxResponse::Ok + fn ok() -> EpicboxResponse { + EpicboxResponse::Ok } fn get_challenge_raw(&self) -> &str { "7WUDtkSaKyGRUnQ22rE3QUXChV8DmA6NnunDYP4vheTpc" } - fn get_challenge(&self) -> GrinboxResponse { - GrinboxResponse::Challenge { + fn get_challenge(&self) -> EpicboxResponse { + EpicboxResponse::Challenge { str: String::from(self.get_challenge_raw()), } } @@ -174,16 +174,16 @@ impl AsyncServer { let (public_key, _) = PublicKey::from_base58_check_raw(public_key, 2)?; let signature = Signature::from_hex(signature)?; verify_signature(challenge, &signature, &public_key) - .map_err(|_| ErrorKind::GrinboxProtocolError(GrinboxError::InvalidSignature))?; + .map_err(|_| ErrorKind::EpicboxProtocolError(EpicboxError::InvalidSignature))?; Ok(()) } - fn subscribe(&mut self, address: String, signature: String) -> GrinboxResponse { + fn subscribe(&mut self, address: String, signature: String) -> EpicboxResponse { let result = self.verify_signature(&address, self.get_challenge_raw(), &signature); match result { Ok(()) => { if self.subscriptions.len() == MAX_SUBSCRIPTIONS { - AsyncServer::error(GrinboxError::TooManySubscriptions) + AsyncServer::error(EpicboxError::TooManySubscriptions) } else { let (res_tx, res_rx) = unbounded::(); if self @@ -196,7 +196,7 @@ impl AsyncServer { .is_err() { error!("could not issue subscribe request!"); - return AsyncServer::error(GrinboxError::UnknownError); + return AsyncServer::error(EpicboxError::UnknownError); }; if self @@ -208,7 +208,7 @@ impl AsyncServer { .is_err() { error!("could not register subscription handler!"); - return AsyncServer::error(GrinboxError::UnknownError); + return AsyncServer::error(EpicboxError::UnknownError); }; self.subscriptions.insert(address.clone(), Subscription {}); @@ -216,11 +216,11 @@ impl AsyncServer { AsyncServer::ok() } } - Err(_) => AsyncServer::error(GrinboxError::UnknownError), + Err(_) => AsyncServer::error(EpicboxError::UnknownError), } } - fn unsubscribe(&mut self, address: String) -> GrinboxResponse { + fn unsubscribe(&mut self, address: String) -> EpicboxResponse { let result = self.subscriptions.remove(&address); match result { Some(_subscription) => { @@ -232,12 +232,12 @@ impl AsyncServer { .is_err() { error!("could not unsubscribe!"); - return AsyncServer::error(GrinboxError::UnknownError); + return AsyncServer::error(EpicboxError::UnknownError); }; AsyncServer::ok() } - None => AsyncServer::error(GrinboxError::InvalidRequest), + None => AsyncServer::error(EpicboxError::InvalidRequest), } } @@ -248,16 +248,16 @@ impl AsyncServer { str: String, signature: String, message_expiration_in_seconds: Option, - ) -> GrinboxResponse { - let from_address = GrinboxAddress::from_str_raw(&from); + ) -> EpicboxResponse { + let from_address = EpicboxAddress::from_str_raw(&from); if from_address.is_err() { - return AsyncServer::error(GrinboxError::InvalidRequest); + return AsyncServer::error(EpicboxError::InvalidRequest); } let from_address = from_address.unwrap(); - let to_address = GrinboxAddress::from_str_raw(&to); + let to_address = EpicboxAddress::from_str_raw(&to); if to_address.is_err() { - return AsyncServer::error(GrinboxError::InvalidRequest); + return AsyncServer::error(EpicboxError::InvalidRequest); } let to_address = to_address.unwrap(); @@ -275,10 +275,10 @@ impl AsyncServer { } if result.is_err() { - return AsyncServer::error(GrinboxError::InvalidSignature); + return AsyncServer::error(EpicboxError::InvalidSignature); } - if to_address.port == self.grinbox_port && to_address.domain == self.grinbox_domain { + if to_address.port == self.epicbox_port && to_address.domain == self.epicbox_domain { let signed_payload = SignedPayload { str, challenge: challenge_raw.to_string(), @@ -298,7 +298,7 @@ impl AsyncServer { .is_err() { error!("could not post message to broker!"); - return AsyncServer::error(GrinboxError::UnknownError); + return AsyncServer::error(EpicboxError::UnknownError); }; AsyncServer::ok() @@ -307,16 +307,20 @@ impl AsyncServer { } } - fn post_slate_federated(&self, from_address: &GrinboxAddress, to_address: &GrinboxAddress, str: String, signature: String, message_expiration_in_seconds: Option) -> GrinboxResponse { - let url = match self.grinbox_protocol_unsecure { + fn post_slate_federated(&self, from_address: &EpicboxAddress, to_address: &EpicboxAddress, str: String, signature: String, message_expiration_in_seconds: Option) -> EpicboxResponse { + + let mut object: serde_json::Value = serde_json::from_str(&str).unwrap(); + let domain = object["destination"]["domain"].as_str().unwrap(); + + let url = match self.epicbox_protocol_unsecure { false => format!( "wss://{}:{}", - to_address.domain, + domain, to_address.port ), true => format!( "ws://{}:{}", - to_address.domain, + domain, to_address.port ) }; @@ -327,12 +331,12 @@ impl AsyncServer { let str = str.clone(); let signature = signature.clone(); move |msg: Message| { - let response = serde_json::from_str::(&msg.to_string()) + let response = serde_json::from_str::(&msg.to_string()) .expect("could not parse response!"); match response { - GrinboxResponse::Challenge { str: _ } => { - let request = GrinboxRequest::PostSlate { + EpicboxResponse::Challenge { str: _ } => { + let request = EpicboxRequest::PostSlate { from: from_address.stripped(), to: to_address.stripped(), str: str.clone(), @@ -344,13 +348,13 @@ impl AsyncServer { .send(serde_json::to_string(&request).unwrap()) .unwrap(); } - GrinboxResponse::Error { + EpicboxResponse::Error { kind: _, description: _, } => { sender.close(CloseCode::Abnormal).is_ok(); } - GrinboxResponse::Ok => { + EpicboxResponse::Ok => { sender.close(CloseCode::Normal).is_ok(); } _ => {} @@ -361,7 +365,7 @@ impl AsyncServer { match result { Ok(()) => AsyncServer::ok(), - Err(_) => AsyncServer::error(GrinboxError::UnknownError), + Err(_) => AsyncServer::error(EpicboxError::UnknownError), } } } @@ -404,18 +408,18 @@ impl Handler for AsyncServer { let request = request.unwrap(); info!("[{}] -> {}", self.id.bright_green(), request); match request { - GrinboxRequest::Challenge => self.get_challenge(), - GrinboxRequest::Subscribe { address, signature } => { + EpicboxRequest::Challenge => self.get_challenge(), + EpicboxRequest::Subscribe { address, signature } => { self.subscribe(address, signature) } - GrinboxRequest::PostSlate { + EpicboxRequest::PostSlate { from, to, str, signature, message_expiration_in_seconds, } => self.post_slate(from, to, str, signature, message_expiration_in_seconds), - GrinboxRequest::Unsubscribe { address } => self.unsubscribe(address), + EpicboxRequest::Unsubscribe { address } => self.unsubscribe(address), } } else { debug!( @@ -423,7 +427,7 @@ impl Handler for AsyncServer { self.id.bright_green(), "invalid request!".bright_red() ); - AsyncServer::error(GrinboxError::InvalidRequest) + AsyncServer::error(EpicboxError::InvalidRequest) }; info!("[{}] <- {}", self.id.bright_green(), response); diff --git a/start.sh b/start.sh index 67dacf9..8844f88 100755 --- a/start.sh +++ b/start.sh @@ -1,10 +1,7 @@ #!/bin/bash if curl --retry 20 --retry-delay 2 --retry-connrefused rabbit:15672 ; then - ./grinbox + ./epicbox else echo "goodbye!" fi - - -