Convert self-presence to xmpp_parser's type

[?]
Jan 21, 2019, 6:19 PM
RGOSS73USO7B6YLKHSZ5R3K4OIZA56JXFVHPFFCNKSTWG7INPC7QC

Dependencies

  • [2] ACXUIS63 Update dependecies
  • [3] WJNXI6Z4 Fill roster
  • [4] VS6AHRWI Move XMPP to separate dir
  • [5] 3ADA5BBX Add items to roster from iq of "set" type
  • [6] UWY5EVZ6 Add dummy roster data
  • [7] OGMBXBKP Move online to XmppConnection
  • [8] 3FYEOGCI Move additional rarely changed data to separate structure
  • [9] 4LRBIGVT Show info about xmpp errors
  • [10] AYQZ2UIA Update deps
  • [11] L77O4T7M Formatting and fixes
  • [12] SU4DNVCB Start to processing roster data
  • [13] XOAM22TT Simplify xmpp incoming stanzas processing without futures
  • [14] 5OBTKGDL Update deps
  • [15] 6E5IC33Z Try to test 2018 edition
  • [16] PFC7OJQF Query roster
  • [17] O2GM5J4F Don't split xmpp receiving and sending
  • [18] 77USPY5I Sending messages works!
  • [19] NDDQQP2P Update deps
  • [20] FV6BJ5K6 Send self-presence and store account info in Rc so it willbe used in some future in parallel
  • [21] HKSQO7JZ Enable hyper http server and configuration
  • [22] OANBCLN5 Move xmpp client into XmppState
  • [23] CP4MZO6V Leftover commands are processed via stoppable receiver
  • [24] SA2IOFGY Add items to roster
  • [25] 5A5UVGNM Move receiver closing logic out of xmpp processing
  • [26] QTCUURXN Add additional requirement for command stream
  • [27] FVVPKFTL Initial commit
  • [28] DKXSFTDY Send stanzas via send queue
  • [29] V5HDBSZM Use jid for receiver address
  • [30] QYY3KRGL Use failure instead Box<dyn Error>
  • [31] 3GEU7TC7 Welcome to 2018!
  • [32] UCY2DO3D Try to read request body
  • [33] XGP44R5H Rework stopping xmpp connection
  • [34] MAC6WCSX Fix pipelines
  • [35] HU3NZX5Z Process self-presence via new processing code
  • [36] PBRUH4BJ Rename optional XmppConnection to MaybeXmppConnection
  • [37] 5IKA4GO7 Rename xmpp client field from "inner" to "client"
  • [38] FWJDW3G5 Allow process xmpp incoming stanzas with futures
  • [39] EOHEZXX3 Move request processing to structure
  • [40] AGIW6YR3 Use shared future for signal everywhere
  • [41] ALP2YJIU Rename XmppState to XmppProcessState
  • [42] TDOR5XQU Accept destination
  • [43] HCCX7VW6 Generate ids from counter
  • [44] UAT5MV5O Directly use id for initial roster request
  • [45] CBWCXUZZ Prepare adding new items to roster
  • [46] BTOZT4JP Use failure
  • [47] PVCRPP3B Some servers don't send to in initial presence
  • [48] QWE26TMV update deps
  • [49] IK3YDPTY Update deps
  • [50] UIXIQHDY Wait for commands via new processing code
  • [51] UMTLHH77 Process commands in the separate function
  • [52] X6L47BHQ Use different structure for established xmpp connection
  • [53] ZI4GJ72V Add message to xmpp command
  • [54] EBETRYK7 Add counter for id. Check for jid in roster
  • [55] BWDUANCV Second part of processing result is only about stop_future

Change contents

  • edit in src/xmpp/stanzas.rs at line 2
    [3.57][3.0:26](),[3.26][3.0:57]()
    use xmpp_parsers::iq::Iq;
    use xmpp_parsers::message::{Body, Message, MessageType};
  • edit in src/xmpp/stanzas.rs at line 3
    [3.141][3.0:42]()
    use xmpp_parsers::roster::{Item, Roster};
  • edit in src/xmpp/stanzas.rs at line 10
    [3.397][3.397:419](),[3.397][3.397:419](),[3.397][3.397:419](),[3.397][3.397:419](),[3.397][3.397:419](),[3.397][3.397:419](),[3.397][3.397:419](),[3.397][3.397:419](),[3.397][3.397:419](),[3.419][3.62:156](),[3.156][3.43:66](),[3.66][3.35:54](),[3.156][3.35:54](),[3.198][3.198:270](),[3.270][3.67:70](),[3.70][2.0:70](),[2.70][3.131:314](),[3.131][3.131:314](),[3.314][2.71:121](),[2.121][3.314:445](),[3.314][3.314:445](),[3.445][3.58:61](),[3.61][2.122:185](),[2.185][3.115:207](),[3.115][3.115:207]()
    presence.into()
    }
    pub fn make_get_roster(id: &str) -> Element {
    let mut get_roster = Iq::from_get(Roster {
    items: vec![],
    ver: None,
    });
    get_roster.id = Some(id.to_string());
    get_roster.into()
    }
    pub fn make_add_roster(id: &str, jid: xmpp_parsers::Jid) -> Element {
    let mut add_roster = Iq::from_set(Roster {
    items: vec![Item {
    jid,
    name: None,
    subscription: xmpp_parsers::roster::Subscription::None,
    ask: xmpp_parsers::roster::Ask::None,
    groups: vec![],
    }],
    ver: None,
    });
    add_roster.id = Some(id.to_string());
    add_roster.into()
    }
    pub fn make_ask_subscribe(jid: xmpp_parsers::Jid) -> Element {
    let mut presence = Presence::new(PresenceType::Subscribe);
    presence.to = Some(jid);
  • edit in src/xmpp/stanzas.rs at line 11
    [3.227][3.270:272](),[3.445][3.270:272](),[3.445][3.270:272](),[3.270][3.270:272](),[3.272][3.228:229](),[3.229][2.186:262](),[2.262][3.296:455](),[3.296][3.296:455]()
    }
    pub fn make_chat_message(jid: xmpp_parsers::Jid, text: String) -> Element {
    let mut message = Message::new(Some(jid));
    message.bodies.insert(String::new(), Body(text));
    message.type_ = MessageType::Chat;
    message.into()
  • edit in src/xmpp/mod.rs at line 7
    [3.48][3.0:1](),[3.1][2.263:306]()
    use std::collections::{HashMap, VecDeque};
  • edit in src/xmpp/mod.rs at line 9
    [3.46][3.446:484](),[3.484][3.446:472](),[3.472][2.307:398](),[2.398][3.473:493](),[3.572][3.473:493](),[3.519][3.473:493](),[3.493][3.55:75](),[3.519][3.55:75](),[3.75][3.494:605](),[3.605][2.399:541](),[2.541][3.670:772](),[3.112][3.670:772](),[3.670][3.670:772](),[3.772][3.540:542](),[3.75][3.540:542](),[3.540][3.540:542](),[3.46][3.95:96](),[3.542][3.95:96](),[3.95][3.95:96](),[3.96][3.354:393](),[3.321][3.354:393](),[3.393][3.543:563](),[3.82][3.428:430](),[3.68][3.428:430](),[3.563][3.428:430](),[3.117][3.428:430](),[3.88][3.428:430](),[3.428][3.428:430]()
    #[derive(Default)]
    struct XmppData {
    /// known roster data
    roster: HashMap<xmpp_parsers::Jid, (xmpp_parsers::roster::Subscription, Vec<String>)>,
    /// ids counter
    counter: usize,
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    /// map from id of adding item to roster and jid of item and message text
    pending_add_roster_ids: HashMap<String, (xmpp_parsers::Jid, String)>,
    /// stanzas to send
    send_queue: VecDeque<minidom::Element>,
    ================================
    id_init_roster: Option<String>,
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    }
    struct XmppState {
    client: Client,
    data: XmppData,
    }
  • replacement in src/xmpp/mod.rs at line 10
    [3.431][3.431:460](),[3.431][3.431:460](),[3.431][3.431:460](),[3.431][3.431:460](),[3.431][3.431:460](),[3.431][3.431:460]()
    struct MaybeXmppConnection {
    [3.431]
    [3.354]
    pub struct MaybeXmppConnection {
  • replacement in src/xmpp/mod.rs at line 12
    [3.397][3.461:491]()
    state: Option<XmppState>,
    [3.397]
    [3.425]
    inner: Option<Client>,
  • replacement in src/xmpp/mod.rs at line 15
    [3.106][3.492:516]()
    struct XmppConnection {
    [3.106]
    [3.31]
    pub struct XmppConnection {
  • replacement in src/xmpp/mod.rs at line 17
    [3.74][3.517:539]()
    state: XmppState,
    [3.74]
    [3.448]
    inner: Client,
  • replacement in src/xmpp/mod.rs at line 24
    [3.627][3.540:577]()
    state: Some(from.state),
    [3.627]
    [3.0]
    inner: Some(from.inner),
  • replacement in src/xmpp/mod.rs at line 29
    [3.19][3.564:677]()
    impl From<config::Account> for MaybeXmppConnection {
    fn from(from: config::Account) -> MaybeXmppConnection {
    [3.19]
    [3.132]
    impl MaybeXmppConnection {
    fn new(account: config::Account) -> MaybeXmppConnection {
  • replacement in src/xmpp/mod.rs at line 32
    [3.162][3.678:748]()
    account: std::rc::Rc::new(from),
    state: None,
    [3.162]
    [3.748]
    account: std::rc::Rc::new(account),
    inner: None,
  • edit in src/xmpp/mod.rs at line 36
    [3.764][3.764:766]()
    }
  • edit in src/xmpp/mod.rs at line 37
    [3.767][3.767:963](),[3.221][3.159:200](),[3.963][3.159:200](),[3.159][3.159:200](),[3.200][3.964:966](),[3.966][3.202:203](),[3.202][3.202:203](),[3.203][3.967:994]()
    impl From<std::rc::Rc<config::Account>> for MaybeXmppConnection {
    fn from(from: std::rc::Rc<config::Account>) -> MaybeXmppConnection {
    MaybeXmppConnection {
    account: from,
    state: None,
    }
    }
    }
    impl MaybeXmppConnection {
  • replacement in src/xmpp/mod.rs at line 38
    [3.554][3.995:1046]()
    /// don't connect only if stop_future resolved
    [3.554]
    [3.876]
    /// don't connect if stop_future resolved
  • replacement in src/xmpp/mod.rs at line 48
    [3.690][3.650:709]()
    let MaybeXmppConnection { account, state } = self;
    [3.690]
    [3.744]
    let MaybeXmppConnection { account, inner } = self;
  • replacement in src/xmpp/mod.rs at line 50
    [3.745][3.710:815](),[3.815][2.542:598]()
    if let Some(state) = state {
    Box::new(future::ok(XmppConnection { account, state }))
    as Box<dyn Future<Item = _, Error = _>>
    [3.745]
    [3.944]
    if let Some(inner) = inner {
    Box::new(future::ok(XmppConnection { account, inner }))
    as Box<Future<Item = _, Error = _>>
  • replacement in src/xmpp/mod.rs at line 63
    [3.1826][2.599:676]()
    as Box<dyn Future<Item = _, Error = _>>,
    [3.1826]
    [3.1899]
    as Box<Future<Item = _, Error = _>>,
  • edit in src/xmpp/mod.rs at line 68
    [3.989][3.989:1065]()
    let stop_future3 = stop_future.clone();
  • replacement in src/xmpp/mod.rs at line 72
    [3.435][3.89:208](),[3.208][3.1047:1135](),[3.341][3.340:387](),[3.1135][3.340:387](),[3.206][3.340:387](),[3.340][3.340:387]()
    state: XmppState {
    client,
    data: std::default::Default::default(),
    },
    [3.435]
    [3.494]
    inner: client,
  • edit in src/xmpp/mod.rs at line 76
    [3.1403]
    [3.1403]
    .map(|(conn, _)| conn)
  • replacement in src/xmpp/mod.rs at line 78
    [3.1468][3.388:758](),[3.864][3.1838:2021](),[3.758][3.1838:2021](),[3.1838][3.1838:2021]()
    .and_then(|(conn, r)| match r {
    Ok(Either::A(_)) => future::ok(conn),
    Ok(Either::B(_)) => future::err(conn.account),
    Err(_e) => future::err(conn.account),
    })
    .and_then(|conn| conn.initial_roster(stop_future2))
    .and_then(|conn| conn.self_presence(stop_future3))
    [3.1468]
    [3.720]
    .and_then(|conn| conn.self_presence(stop_future2))
  • replacement in src/xmpp/mod.rs at line 106
    [3.3788][3.573:712](),[3.712][3.792:1135](),[3.90][3.792:1135](),[3.894][3.792:1135](),[3.1135][3.713:772](),[3.772][3.1195:1465](),[3.1195][3.1195:1465](),[3.1465][3.773:1504](),[3.1504][3.1465:1788](),[3.1465][3.1465:1788](),[3.1788][3.1505:3317](),[3.3317][3.1980:2050](),[3.1980][3.1980:2050](),[3.2050][3.3318:3605](),[3.3605][3.2135:2201](),[3.2135][3.2135:2201](),[3.2201][3.3606:3639](),[3.3639][3.2234:2248](),[3.112][3.2234:2248](),[3.2234][3.2234:2248](),[3.2248][3.3640:3687](),[3.3687][3.2295:2365](),[3.148][3.2295:2365](),[3.2295][3.2295:2365](),[3.2365][3.3688:3730](),[3.3730][3.2407:2431](),[3.171][3.2407:2431](),[3.2407][3.2407:2431]()
    fn xmpp_processing(
    mut self,
    event: &Event,
    ) -> impl Future<Item = Self, Error = std::rc::Rc<config::Account>> {
    match event {
    Event::Stanza(stanza) => {
    info!("Incoming xmpp event: {:?}", stanza);
    let stanza = stanza.clone();
    use try_from::TryInto;
    if let Some(iq) = stanza.try_into().ok() as Option<xmpp_parsers::iq::Iq> {
    if let Some(id) = iq.id {
    if let Some((_, (jid, message))) =
    self.state.data.pending_add_roster_ids.remove_entry(&id)
    {
    if let xmpp_parsers::iq::IqType::Result(None) = iq.payload {
    info!("Jid {} added to roster", jid);
    if let Some(ref mut rdata) = self.state.data.roster.get_mut(&jid) {
    rdata.1.push(message);
    } else {
    self.state.data.roster.insert(
    jid,
    (xmpp_parsers::roster::Subscription::None, vec![message]),
    );
    }
    } else {
    warn!(
    "Wrong payload when adding {} to roster: {:?}",
    jid, iq.payload
    );
    }
    }
    }
    if let xmpp_parsers::iq::IqType::Set(element) = iq.payload {
    if let Some(roster) =
    element.try_into().ok() as Option<xmpp_parsers::roster::Roster>
    {
    for i in roster.items {
    if let Some(ref mut rdata) = self.state.data.roster.get_mut(&i.jid)
    {
    info!("Update {} in roster", i.jid);
    rdata.0 = i.subscription;
    if !rdata.1.is_empty() {
    let sub_to = match rdata.0 {
    xmpp_parsers::roster::Subscription::To => true,
    xmpp_parsers::roster::Subscription::Both => true,
    _ => false,
    };
    if sub_to {
    info!("Subscribed to {}", i.jid);
    let jid = i.jid.clone();
    self.state.data.send_queue.extend(
    rdata.1.drain(..).map(|message| {
    stanzas::make_chat_message(jid.clone(), message)
    }),
    )
    } else {
    info!("Not subscribed to {}", i.jid);
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_ask_subscribe(i.jid));
    }
    }
    } else {
    info!("Add {} to roster", i.jid);
    self.state
    .data
    .roster
    .insert(i.jid, (i.subscription, vec![]));
    }
    }
    }
    }
    }
    future::ok(self)
    }
    Event::Online => future::ok(self),
    e => {
    warn!("Unexpected event {:?}", e);
    future::err(self.account)
    }
    }
    [3.3788]
    [3.2124]
    fn xmpp_processing(&mut self, event: &Event) {
    info!("Incoming xmpp event: {:?}", event);
  • replacement in src/xmpp/mod.rs at line 112
    [3.3983][3.921:1072]()
    /// or stop future was resolved.
    /// Return item if connection was preserved or error otherwise.
    /// Second part is a state of stop_future
    [3.3983]
    [3.4019]
    /// or stop future was resolved
  • replacement in src/xmpp/mod.rs at line 118
    [3.4137][3.1073:1194]()
    Item = (Self, Result<Either<F, T>, E>),
    Error = (std::rc::Rc<config::Account>, Result<Either<F, T>, E>),
    [3.4137]
    [3.4319]
    Item = (Self, Result<Either<F, T>, failure::Error>),
    Error = (
    std::rc::Rc<config::Account>,
    Result<Either<F, T>, failure::Error>,
    ),
  • replacement in src/xmpp/mod.rs at line 125
    [3.4335][3.1195:1351]()
    F: Future<Item = T, Error = E> + 'static,
    S: FnMut(&mut Self, Event) -> Result<bool, ()> + 'static,
    T: 'static,
    E: 'static,
    [3.4335]
    [3.4476]
    F: Future<Item = T, Error = E>,
    E: Into<failure::Error>,
    S: FnMut(&mut Self, &Event) -> Result<bool, failure::Error>,
  • replacement in src/xmpp/mod.rs at line 132
    [3.4612][3.1352:1389](),[3.1389][2.677:736](),[2.736][3.1588:1643](),[3.3786][3.1588:1643](),[3.172][3.1588:1643](),[3.929][3.1588:1643](),[3.1283][3.1588:1643](),[3.262][3.1588:1643](),[3.1588][3.1588:1643](),[3.1643][2.737:1355](),[2.1355][3.2575:2614](),[3.5078][3.2575:2614](),[3.791][3.2575:2614](),[3.2575][3.2575:2614](),[3.2614][2.1356:1484](),[2.1484][3.2744:2820](),[3.5209][3.2744:2820](),[3.920][3.2744:2820](),[3.2744][3.2744:2820](),[3.2820][2.1485:2370](),[2.2370][3.2857:2970](),[3.5247][3.2857:2970](),[3.1806][3.2857:2970](),[3.2857][3.2857:2970](),[3.2970][2.2371:5674]()
    let XmppConnection {
    state: XmppState { client, mut data },
    account,
    } = xmpp;
    if let Some(send_element) = data.send_queue.pop_front() {
    use tokio::prelude::Sink;
    info!("Sending {:?}", send_element);
    Box::new(client.send(send_element).select2(stop_future).then(
    move |r| match r {
    Ok(Either::A((client, b))) => {
    Box::new(future::ok(future::Loop::Continue((
    XmppConnection {
    state: XmppState { client, data },
    account,
    },
    b,
    stop_condition,
    ))))
    as Box<dyn Future<Item = _, Error = _>>
    }
    Ok(Either::B((t, a))) => Box::new(a.then(|r| match r {
    Ok(client) => future::ok(future::Loop::Break((
    XmppConnection {
    state: XmppState { client, data },
    account,
    },
    Ok(Either::B(t)),
    ))),
    Err(se) => {
    warn!("XMPP sending error: {}", se);
    future::err((account, Ok(Either::B(t))))
    }
    })),
    Err(Either::A((e, b))) => {
    warn!("XMPP sending error: {}", e);
    Box::new(future::err((account, Ok(Either::A(b)))))
    }
    Err(Either::B((e, a))) => Box::new(a.then(|r| match r {
    Ok(client) => future::ok(future::Loop::Break((
    XmppConnection {
    state: XmppState { client, data },
    account,
    },
    Err(e),
    ))),
    Err(se) => {
    warn!("XMPP sending error: {}", se);
    future::err((account, Err(e)))
    }
    })),
    },
    )) as Box<dyn Future<Item = _, Error = _>>
    } else {
    Box::new(
    client
    .into_future()
    .select2(stop_future)
    .then(move |r| match r {
    Ok(Either::A(((event, client), b))) => {
    if let Some(event) = event {
    let xmpp = XmppConnection {
    state: XmppState { client, data },
    account,
    };
    Box::new(xmpp.xmpp_processing(&event).then(|r| match r {
    Ok(mut xmpp) => {
    match stop_condition(&mut xmpp, event) {
    Ok(true) => future::ok(future::Loop::Break((
    xmpp,
    Ok(Either::A(b)),
    ))),
    Ok(false) => {
    future::ok(future::Loop::Continue((
    xmpp,
    b,
    stop_condition,
    )))
    }
    Err(_e) => future::err((
    xmpp.account,
    Ok(Either::A(b)),
    )),
    }
    }
    Err(account) => {
    future::err((account, Ok(Either::A(b))))
    }
    }))
    as Box<dyn Future<Item = _, Error = _>>
    } else {
    Box::new(future::err((account, Ok(Either::A(b)))))
    }
    [3.4612]
    [2.5674]
    let XmppConnection { inner, account } = xmpp;
    inner.into_future().select2(stop_future).then(|r| match r {
    Ok(Either::A(((event, client), b))) => {
    if let Some(event) = event {
    let mut xmpp = XmppConnection {
    inner: client,
    account,
    };
    xmpp.xmpp_processing(&event);
    match stop_condition(&mut xmpp, &event) {
    Ok(true) => {
    future::ok(future::Loop::Break((xmpp, Ok(Either::A(b)))))
  • replacement in src/xmpp/mod.rs at line 145
    [2.5708][2.5708:6443]()
    Ok(Either::B((t, a))) => {
    Box::new(if let Some(client) = a.into_inner() {
    future::ok(future::Loop::Break((
    XmppConnection {
    state: XmppState { client, data },
    account,
    },
    Ok(Either::B(t)),
    )))
    } else {
    future::err((account, Ok(Either::B(t))))
    })
    [2.5708]
    [2.6443]
    Ok(false) => {
    future::ok(future::Loop::Continue((xmpp, b, stop_condition)))
  • replacement in src/xmpp/mod.rs at line 148
    [2.6477][2.6477:7546]()
    Err(Either::A((e, b))) => {
    warn!("XMPP error: {}", e.0);
    Box::new(future::err((account, Ok(Either::A(b)))))
    }
    Err(Either::B((e, a))) => {
    Box::new(if let Some(client) = a.into_inner() {
    future::ok(future::Loop::Break((
    XmppConnection {
    state: XmppState { client, data },
    account,
    },
    Err(e),
    )))
    } else {
    future::err((account, Err(e)))
    })
    }
    }),
    )
    }
    [2.6477]
    [3.5580]
    Err(e) => future::err((xmpp.account, Err(e))),
    }
    } else {
    future::err((account, Ok(Either::A(b))))
    }
    }
    Ok(Either::B((t, a))) => {
    if let Some(inner) = a.into_inner() {
    future::ok(future::Loop::Break((
    XmppConnection { inner, account },
    Ok(Either::B(t)),
    )))
    } else {
    future::err((account, Ok(Either::B(t))))
    }
    }
    Err(Either::A((_e, b))) => future::err((account, Ok(Either::A(b)))),
    Err(Either::B((e, a))) => {
    if let Some(inner) = a.into_inner() {
    future::ok(future::Loop::Break((
    XmppConnection { inner, account },
    Err(e.into()),
    )))
    } else {
    future::err((account, Err(e.into())))
    }
    }
    })
  • replacement in src/xmpp/mod.rs at line 181
    [3.6691][3.4619:4756]()
    /// returns error if something went wrong and xmpp connection is broken
    fn online(&mut self, event: Event) -> Result<bool, ()> {
    [3.6691]
    [3.4011]
    /// returns error if something went wrong
    fn online(&mut self, event: &Event) -> Result<bool, failure::Error> {
  • replacement in src/xmpp/mod.rs at line 194
    [3.4339][3.4757:4781]()
    Err(())
    [3.4339]
    [3.4363]
    Err(format_err!("Disconnected while online"))
  • edit in src/xmpp/mod.rs at line 197
    [3.4387][3.4387:4394](),[3.4387][3.4387:4394](),[3.4387][3.4387:4394](),[3.4387][3.4387:4394](),[3.4387][3.4387:4394](),[3.4394][3.2432:2509](),[3.3992][3.4471:4690](),[3.2509][3.4471:4690](),[3.3783][3.4471:4690](),[3.4092][3.4471:4690](),[3.4859][3.4471:4690](),[3.175][3.4471:4690](),[3.4471][3.4471:4690](),[3.4690][3.2510:2582](),[3.2582][3.4739:4859](),[3.3534][3.4739:4859](),[3.129][3.4739:4859](),[3.226][3.4739:4859](),[3.4739][3.4739:4859](),[3.4859][3.4860:4979](),[3.4077][3.4978:5333](),[3.3868][3.4978:5333](),[3.4212][3.4978:5333](),[3.4979][3.4978:5333](),[3.4978][3.4978:5333](),[3.5333][3.2583:2731](),[3.2731][3.5399:5538](),[3.3683][3.5399:5538](),[3.4252][3.5399:5538](),[3.5399][3.5399:5538](),[3.5538][3.6634:6905](),[3.6905][3.5538:5637](),[3.4343][3.5538:5637](),[3.569][3.5538:5637](),[3.5538][3.5538:5637](),[3.4399][3.4399:4441](),[3.4441][3.4980:5208](),[3.4176][3.5907:5945](),[3.3967][3.5907:5945](),[3.4441][3.5907:5945](),[3.5208][3.5907:5945](),[3.5907][3.5907:5945](),[3.4597][3.4597:4631](),[3.4631][3.5209:5398](),[3.4260][3.6168:6269](),[3.4051][3.6168:6269](),[3.4631][3.6168:6269](),[3.5398][3.6168:6269](),[3.6168][3.6168:6269](),[3.6269][3.1453:1479](),[3.1453][3.1453:1479](),[3.1479][3.6270:6299](),[3.6299][3.5399:5487](),[3.4326][3.8819:8841](),[3.6387][3.8819:8841](),[3.6897][3.8819:8841](),[3.4117][3.8819:8841](),[3.4720][3.8819:8841](),[3.1996][3.8819:8841](),[3.3261][3.8819:8841](),[3.5487][3.8819:8841](),[3.8819][3.8819:8841](),[3.8841][3.6388:6475](),[3.6475][3.5488:5564](),[3.4392][3.6551:6717](),[3.4183][3.6551:6717](),[3.4797][3.6551:6717](),[3.5564][3.6551:6717](),[3.6551][3.6551:6717](),[3.6717][3.5565:5625](),[3.4426][3.6747:6753](),[3.4247][3.6747:6753](),[3.4858][3.6747:6753](),[3.5625][3.6747:6753](),[3.6747][3.6747:6753](),[3.6753][3.5626:5676](),[3.5676][3.227:278](),[3.3733][3.5827:5845](),[3.181][3.5827:5845](),[3.4391][3.5827:5845](),[3.617][3.5827:5845](),[3.278][3.5827:5845](),[3.5827][3.5827:5845](),[3.4481][3.6870:6905](),[3.4302][3.6870:6905](),[3.4976][3.6870:6905](),[3.5845][3.6870:6905](),[3.6870][3.6870:6905](),[3.6905][3.279:306](),[3.306][3.2732:2804](),[3.2804][3.366:434](),[3.366][3.366:434](),[3.434][3.2805:2857](),[3.2857][3.6971:7065](),[3.3800][3.6971:7065](),[3.389][3.6971:7065](),[3.434][3.6971:7065](),[3.6971][3.6971:7065](),[3.7065][3.5846:5861](),[3.4516][3.7080:7201](),[3.4337][3.7080:7201](),[3.4992][3.7080:7201](),[3.5861][3.7080:7201](),[3.7080][3.7080:7201](),[3.7201][3.5862:5887](),[3.4586][3.7226:7312](),[3.4407][3.7226:7312](),[3.5018][3.7226:7312](),[3.5887][3.7226:7312](),[3.7226][3.7226:7312](),[3.7312][3.4392:4447](),[3.4636][3.7369:7416](),[3.3858][3.7369:7416](),[3.4457][3.7369:7416](),[3.5076][3.7369:7416](),[3.4447][3.7369:7416](),[3.673][3.7369:7416](),[3.6047][3.7369:7416](),[3.7369][3.7369:7416](),[3.7416][3.2858:2939](),[3.2939][3.6048:6347](),[3.607][3.6048:6347](),[3.7497][3.6048:6347](),[3.5125][3.7778:7793](),[3.4946][3.7778:7793](),[3.5376][3.7778:7793](),[3.6347][3.7778:7793](),[3.2016][3.7778:7793]()
    }
    fn process_initial_roster(&mut self, event: Event) -> Result<bool, ()> {
    if let Event::Stanza(s) = event {
    use try_from::TryInto;
    match s.try_into() as Result<xmpp_parsers::iq::Iq, _> {
    Ok(iq) => {
    if let Some(id) = iq.id {
    if Some(id) == self.state.data.id_init_roster {
    match iq.payload {
    xmpp_parsers::iq::IqType::Error(_e) => {
    error!("Get error instead of roster");
    Err(())
    }
    xmpp_parsers::iq::IqType::Result(Some(result)) => {
    match result.try_into()
    as Result<xmpp_parsers::roster::Roster, _>
    {
    Ok(roster) => {
    self.state.data.roster.clear();
    info!("Got first roster:");
    for i in roster.items {
    info!(" >>> {:?}", i);
    self.state
    .data
    .roster
    .insert(i.jid, (i.subscription, vec![]));
    }
    Ok(true)
    }
    Err(e) => {
    error!("Cann't parse roster: {}", e);
    Err(())
    }
    }
    }
    _ => {
    error!("Unknown result of roster");
    Err(())
    }
    }
    } else {
    Ok(false)
    }
    } else {
    error!("Iq stanza without id");
    Err(())
    }
    }
    Err(_e) => Ok(false),
    }
    } else {
    error!("Wrong event while waiting roster");
    Err(())
    }
    }
    fn initial_roster<F, E>(
    self,
    stop_future: F,
    ) -> impl Future<Item = Self, Error = std::rc::Rc<config::Account>>
    where
    F: Future<Error = E> + 'static,
    E: 'static,
    {
    let XmppConnection {
    account,
    state: XmppState { client, mut data },
    } = self;
    use tokio::prelude::Sink;
    data.counter += 1;
    let id_init_roster = format!("id_init_roster{}", data.counter);
    let get_roster = stanzas::make_get_roster(&id_init_roster);
    data.id_init_roster = Some(id_init_roster);
    let account2 = account.clone();
    info!("Quering roster... {:?}", get_roster);
    client
    .send(get_roster)
    .map_err(move |e| {
    error!("Error on querying roster: {}", e);
    account2
    })
    .and_then(move |client| {
    XmppConnection {
    state: XmppState { client, data },
    account,
    }
    .processing(XmppConnection::process_initial_roster, stop_future)
    .map_err(|(account, _)| account)
    .and_then(|(conn, r)| match r {
    Ok(Either::A(_)) => future::ok(conn),
    Ok(Either::B(_)) => future::err(conn.account),
    Err(_e) => future::err(conn.account),
    })
    })
  • replacement in src/xmpp/mod.rs at line 204
    [3.7942][3.6348:6431]()
    F: Future<Error = E> + 'static,
    E: Into<failure::Error> + 'static,
    [3.7942]
    [3.8005]
    F: Future<Error = E>,
    E: Into<failure::Error>,
  • replacement in src/xmpp/mod.rs at line 207
    [3.8011][3.6432:6482](),[3.6482][3.4448:4495](),[3.3908][3.6633:6651](),[3.4495][3.6633:6651](),[3.721][3.6633:6651](),[3.6633][3.6633:6651]()
    let XmppConnection {
    account,
    state: XmppState { client, data },
    } = self;
    [3.8011]
    [3.10624]
    let XmppConnection { account, inner } = self;
    let client = inner;
  • edit in src/xmpp/mod.rs at line 212
    [3.10716]
    [3.10716]
    info!("Sending presence...");
  • edit in src/xmpp/mod.rs at line 214
    [3.10756][3.8129:8183]()
    info!("Sending presence... {:?}", presence);
  • replacement in src/xmpp/mod.rs at line 218
    [3.8315][3.6668:6693]()
    account2
    [3.8315]
    [3.8340]
    (account2, Err(failure::SyncFailure::new(e).into()))
  • replacement in src/xmpp/mod.rs at line 222
    [3.8426][3.4496:4551]()
    state: XmppState { client, data },
    [3.8426]
    [3.8483]
    inner: client,
  • replacement in src/xmpp/mod.rs at line 228
    [3.8658][3.8658:9042](),[3.8658][3.8658:9042](),[3.8658][3.8658:9042](),[3.8658][3.8658:9042](),[3.8658][3.8658:9042](),[3.8658][3.8658:9042](),[3.8658][3.8658:9042](),[3.8658][3.8658:9042]()
    if s.name() == "presence"
    && s.attr("from").map_or(false, |f| f == conn.account.jid)
    && s.attr("to").map_or(false, |f| f == conn.account.jid)
    {
    Ok(true)
    } else {
    Ok(false)
    [3.8658]
    [3.9042]
    use try_from::TryInto;
    match s.try_into() as Result<xmpp_parsers::presence::Presence, _> {
    Ok(presence) => {
    Ok(presence.from.as_ref() == Some(&conn.state.client.jid))
    }
    Err(e) => {
    warn!("Not a self-presence: {}", e);
    Ok(false)
    }
  • replacement in src/xmpp/mod.rs at line 239
    [3.9105][3.6854:6969]()
    error!("Wrong event while waiting self-presence");
    Err(())
    [3.9105]
    [3.9220]
    Err(format_err!("Wrong event while waiting self-presence"))
  • replacement in src/xmpp/mod.rs at line 244
    [3.9320][3.6970:7269]()
    .map_err(|(account, _)| account)
    .and_then(|(conn, r)| match r {
    Ok(Either::A(_)) => future::ok(conn),
    Ok(Either::B(_)) => future::err(conn.account),
    Err(_e) => future::err(conn.account),
    })
    [3.9320]
    [3.5310]
    })
    .then(|r| match r {
    Err((account, e)) => {
    error!("Cann't wait self-presence");
    future::err(account)
    }
    Ok((conn, _)) => future::ok(conn),
  • edit in src/xmpp/mod.rs at line 253
    [3.12136][3.4552:4553](),[3.4553][2.7547:7601](),[2.7601][3.4692:4722](),[3.7044][3.4692:4722](),[3.7037][3.4692:4722](),[3.4692][3.4692:4722](),[3.4722][3.7045:7129](),[3.7129][3.4786:4838](),[3.3031][3.4786:4838](),[3.684][3.4786:4838](),[3.4786][3.4786:4838](),[3.7275][3.7275:8037](),[3.8070][3.4867:4940](),[3.3111][3.4867:4940](),[3.4867][3.4867:4940](),[3.8206][3.3247:3248](),[3.3247][3.3247:3248](),[3.3248][2.7602:7729](),[2.7729][3.3353:3445](),[3.8312][3.3353:3445](),[3.7165][3.3353:3445](),[3.3353][3.3353:3445](),[3.3445][2.7730:7883](),[2.7883][3.3489:3552](),[3.8357][3.3489:3552](),[3.7319][3.3489:3552](),[3.3489][3.3489:3552](),[3.8396][3.3590:3591](),[3.3590][3.3590:3591](),[3.3591][2.7884:7946](),[2.7946][3.5454:5464](),[3.9039][3.5454:5464](),[3.4233][3.5454:5464](),[3.7382][3.5454:5464](),[3.5454][3.5454:5464](),[3.710][3.5464:5470](),[3.5464][3.5464:5470]()
    fn process_command(&mut self, cmd: XmppCommand) {
    info!("Got command");
    if let Some(ref mut rdata) = self.state.data.roster.get_mut(&cmd.xmpp_to) {
    info!("Jid {} in roster", cmd.xmpp_to);
    let sub_to = match rdata.0 {
    xmpp_parsers::roster::Subscription::To => true,
    xmpp_parsers::roster::Subscription::Both => true,
    _ => false,
    };
    if sub_to {
    info!("Subscribed to {}", cmd.xmpp_to);
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_chat_message(cmd.xmpp_to, cmd.message));
    } else {
    info!("Not subscribed to {}", cmd.xmpp_to);
    rdata.1.push(cmd.message);
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_ask_subscribe(cmd.xmpp_to));
    }
    } else {
    info!("Jid {} not in roster", cmd.xmpp_to);
    self.state.data.counter += 1;
    let id_add_roster = format!("id_add_roster{}", self.state.data.counter);
    let add_roster = stanzas::make_add_roster(&id_add_roster, cmd.xmpp_to.clone());
    self.state
    .data
    .pending_add_roster_ids
    .insert(id_add_roster, (cmd.xmpp_to, cmd.message));
    info!("Adding jid to roster... {:?}", add_roster);
    self.state.data.send_queue.push_back(add_roster);
    }
    }
  • replacement in src/xmpp/mod.rs at line 256
    [3.60][2.7947:8035]()
    pub struct XmppCommand {
    pub xmpp_to: xmpp_parsers::Jid,
    pub message: String,
    }
    [3.60]
    [3.3816]
    pub struct XmppCommand;
  • replacement in src/xmpp/mod.rs at line 258
    [3.3817][3.5471:5503]()
    struct XmppProcessState<F, S> {
    [3.3817]
    [3.86]
    struct XmppState<F, S> {
  • replacement in src/xmpp/mod.rs at line 264
    [3.3920][3.5504:5657]()
    impl<F, S> XmppProcessState<F, S> {
    fn new(cmd_recv: S, signal: F, conn: MaybeXmppConnection) -> XmppProcessState<F, S> {
    XmppProcessState {
    [3.3920]
    [3.4058]
    impl<F, S> XmppState<F, S> {
    fn new(cmd_recv: S, signal: F, conn: MaybeXmppConnection) -> XmppState<F, S> {
    XmppState {
  • replacement in src/xmpp/mod.rs at line 284
    [3.4357][3.5658:5689]()
    let conn = account.into();
    [3.4357]
    [3.4526]
    let conn = MaybeXmppConnection::new(account);
  • replacement in src/xmpp/mod.rs at line 286
    [3.4527][3.5690:5794]()
    future::loop_fn(XmppProcessState::new(cmd_recv, signal, conn), |s| {
    let XmppProcessState {
    [3.4527]
    [3.4617]
    future::loop_fn(XmppState::new(cmd_recv, signal, conn), |s| {
    let XmppState {
  • replacement in src/xmpp/mod.rs at line 292
    [3.4692][3.5795:5994](),[3.5994][2.8036:8646](),[2.8646][3.6478:6591](),[3.9637][3.6478:6591](),[3.7993][3.6478:6591](),[3.6478][3.6478:6591](),[3.6591][2.8647:8937](),[2.8937][3.7141:7177](),[3.10187][3.7141:7177](),[3.8284][3.7141:7177](),[3.7141][3.7141:7177](),[3.10264][3.7253:7290](),[3.7253][3.7253:7290](),[3.7290][2.8938:9006](),[2.9006][3.7368:7398](),[3.10343][3.7368:7398](),[3.8353][3.7368:7398](),[3.7368][3.7368:7398](),[3.5175][3.9142:9168](),[3.7398][3.9142:9168](),[3.9142][3.9142:9168](),[3.9168][2.9007:9097](),[2.9097][3.7499:7522](),[3.10444][3.7499:7522](),[3.8444][3.7499:7522](),[3.7499][3.7499:7522](),[3.7522][2.9098:9149](),[2.9149][3.7582:8118](),[3.10505][3.7582:8118](),[3.8496][3.7582:8118](),[3.7582][3.7582:8118]()
    conn.connect(signal.clone()).and_then(|conn| {
    info!("xmpp connected!");
    conn.processing(|_, _| Ok(false), cmd_recv.into_future())
    .then(|r| match r {
    Ok((mut conn, r)) => match r {
    Ok(Either::A(f)) => {
    if let Some(cmd_recv) = f.into_inner() {
    future::ok(future::Loop::Continue(XmppProcessState {
    cmd_recv,
    signal,
    conn: conn.into(),
    }))
    } else {
    future::err(format_err!("Command receiver is gone"))
    }
    }
    Ok(Either::B((cmd, cmd_recv))) => {
    if let Some(cmd) = cmd {
    conn.process_command(cmd);
    future::ok(future::Loop::Continue(XmppProcessState {
    cmd_recv,
    signal,
    conn: conn.into(),
    }))
    } else {
    future::ok(future::Loop::Break(()))
    }
    }
    Err(_) => future::err(format_err!("Command receiver is broken")),
    },
    Err((account, r)) => match r {
    Ok(Either::A(f)) => {
    if let Some(cmd_recv) = f.into_inner() {
    future::ok(future::Loop::Continue(XmppProcessState {
    cmd_recv,
    signal,
    conn: account.into(),
    }))
    } else {
    future::err(format_err!("Command receiver is gone"))
    }
    [3.4692]
    [3.8118]
    conn.connect(signal.clone())
    .and_then(|conn| {
    info!("xmpp connected!");
    cmd_recv
    .into_future()
    .map_err(|_| {
    error!("Got error on recv cmd");
    format_err!("Receive cmd error")
    })
    .map(|(cmd, cmd_recv)| (cmd, cmd_recv, conn))
    })
    .then(|r| {
    match r {
    Ok((cmd, cmd_recv, conn)) => {
    if let Some(_cmd) = cmd {
    info!("Got cmd");
    // got cmd, continue
    future::ok(future::Loop::Continue(XmppState::new(
    cmd_recv,
    signal,
    conn.into(),
    )))
    } else {
    future::ok(future::Loop::Break((None, conn.into())))
  • replacement in src/xmpp/mod.rs at line 317
    [3.8144][3.8144:8862](),[3.8144][3.8144:8862](),[3.8144][3.8144:8862](),[3.8144][3.8144:8862](),[3.8862][2.9150:9173](),[2.9173][3.8886:8916](),[3.10530][3.8886:8916](),[3.8520][3.8886:8916](),[3.8886][3.8886:8916]()
    Ok(Either::B((cmd, cmd_recv))) => {
    if let Some(_cmd) = cmd {
    error!("Xmpp connection broken while get command");
    future::ok(future::Loop::Continue(XmppProcessState {
    cmd_recv,
    signal,
    conn: account.into(),
    }))
    } else {
    future::ok(future::Loop::Break(()))
    }
    }
    Err(_) => future::err(format_err!("Command receiver is broken")),
    },
    })
    })
    [3.8144]
    [3.10245]
    }
    Err(e) => {
    // got cmd error, its bad
    error!("Cmd error: {}", e);
    future::err(format_err!("Cmd error"))
    }
    }
    })
    })
    .and_then(|(opt_cmd_recv, _conn): (Option<S>, MaybeXmppConnection)| {
    if let Some(cmd_recv) = opt_cmd_recv {
    // process left commands
    info!("Stop accepting commands");
    Box::new(
    cmd_recv
    .for_each(|_cmd| future::ok(()))
    .map_err(|_| format_err!("cmd receiver last error")),
    ) as Box<Future<Item = (), Error = failure::Error>>
    } else {
    Box::new(future::ok(()))
    }
  • edit in src/main.rs at line 2
    [3.3556][2.9174:9203]()
    #![deny(bare_trait_objects)]
  • edit in src/main.rs at line 7
    [3.3621]
    [3.3643]
    extern crate minidom;
  • edit in src/main.rs at line 22
    [3.3921]
    [3.3953]
    use hyper::service::service_fn;
  • replacement in src/main.rs at line 28
    [3.4066][2.9204:9248]()
    use tokio::prelude::{Future, Sink, Stream};
    [3.4066]
    [3.4092]
    use tokio::prelude::Sink;
  • edit in src/main.rs at line 38
    [3.4260][2.9249:13537]()
    struct ServiceCmd {
    cmd_send: tokio_channel::mpsc::Sender<XmppCommand>,
    }
    impl hyper::service::Service for ServiceCmd {
    type ReqBody = Body;
    type ResBody = Body;
    type Error = failure::Error;
    type Future =
    Box<dyn Future<Item = Response<Self::ResBody>, Error = Self::Error> + Send + 'static>;
    fn call(&mut self, req: Request<Self::ReqBody>) -> Self::Future {
    let xmpp_to_opt = req.headers().get("X-XMPP-To");
    let xmpp_to_res: Result<xmpp_parsers::Jid, failure::Error> = xmpp_to_opt.map_or_else(
    || Err(format_err!("No X-XMPP-To header")),
    |xmpp_to| {
    std::str::from_utf8(xmpp_to.as_bytes())
    .map_err(|e| e.into())
    .and_then(|s| {
    std::str::FromStr::from_str(s)
    .map_err(|e: xmpp_parsers::JidParseError| e.into())
    })
    },
    );
    match xmpp_to_res {
    Err(err) => {
    warn!("Unknown destination: {}", err);
    Box::new(tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from(format!("Unknown destination: {}", err)))
    .map_err(|e| e.into()),
    )) as Box<dyn Future<Item = _, Error = _> + Send + 'static>
    }
    Ok(xmpp_to) => {
    info!("Got request. Reading body...");
    let cmd_send = self.cmd_send.clone();
    Box::new(
    req.into_body()
    .map_err(|e| e.into())
    .fold(String::new(), |mut acc, ch| {
    std::str::from_utf8(&*ch).map(|s| {
    acc.push_str(s);
    acc
    })
    })
    .and_then(move |message: String| {
    if !message.is_empty() {
    Box::new(
    cmd_send
    .clone()
    .send(XmppCommand { xmpp_to, message })
    .then(|r| match r {
    Ok(_) => tokio::prelude::future::ok(Response::new(
    Body::from("Accepted"),
    )),
    Err(e) => {
    error!("Command sent error: {}", e);
    tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from(format!(
    "Command sent error: {}",
    e
    ))),
    )
    }
    })
    .map_err(|e| e.into()),
    )
    } else {
    warn!("Empty message");
    Box::new(tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from("Empty message"))
    .map_err(|e| e.into()),
    ))
    as Box<dyn Future<Item = _, Error = _> + Send + 'static>
    }
    }),
    ) as Box<dyn Future<Item = _, Error = _> + Send + 'static>
    }
    }
    }
    }
    struct MakeServiceCmd {
    cmd_send: tokio_channel::mpsc::Sender<XmppCommand>,
    }
  • edit in src/main.rs at line 39
    [3.9739][2.13538:14016]()
    impl<Ctx> hyper::service::MakeService<Ctx> for MakeServiceCmd {
    type ReqBody = Body;
    type ResBody = Body;
    type Error = failure::Error;
    type Service = ServiceCmd;
    type Future = tokio::prelude::future::FutureResult<ServiceCmd, Self::MakeError>;
    type MakeError = hyper::http::Error;
    fn make_service(&mut self, _ctx: Ctx) -> Self::Future {
    tokio::prelude::future::ok(ServiceCmd {
    cmd_send: self.cmd_send.clone(),
    })
    }
    }
  • replacement in src/main.rs at line 72
    [3.5155][2.14017:14061]()
    .serve(MakeServiceCmd { cmd_send })
    [3.5155]
    [3.5935]
    .serve(move || {
    let cmd_send = cmd_send.clone();
    service_fn(move |_req: Request<Body>| {
    info!("Got request");
    cmd_send.clone().send(XmppCommand {}).then(|r| match r {
    Ok(_) => tokio::prelude::future::ok(Response::new(Body::from("Accepted"))),
    Err(e) => {
    error!("Command sent error: {}", e);
    tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from(format!("Command sent error: {}", e))),
    )
    }
    })
    })
    })
  • replacement in Cargo.toml at line 12
    [3.6900][2.14062:14101]()
    tokio-xmpp = "0.2.3"
    failure = "0.1.5"
    [3.6900]
    [3.6935]
    tokio-xmpp = "0.2"
    failure = "0.1"
  • replacement in Cargo.toml at line 21
    [3.7043][2.14102:14196]()
    xmpp-parsers = "0.12.2"
    minidom = "=0.10.0" # xmpp-parsers
    try_from = "=0.3.2" # xmpp-parsers
    [3.7043]
    minidom = "=0.9.1" # dependency of tokio-xmpp
    xmpp-parsers = "0.11"
  • edit in Cargo.lock at line 0
    [3.12201][2.14197:14406]()
    [[package]]
    name = "MacTypes-sys"
    version = "2.1.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
  • replacement in Cargo.lock at line 5
    [3.7247][2.14407:14480]()
    "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.7247]
    [3.7320]
    "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 18
    [3.7561][2.14481:14499]()
    version = "0.3.7"
    [3.7561]
    [3.7579]
    version = "0.3.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    [[package]]
    name = "arrayref"
    version = "0.3.5"
  • replacement in Cargo.lock at line 28
    [3.7789][2.14500:14519]()
    version = "0.4.10"
    [3.7789]
    [3.7807]
    version = "0.4.8"
  • replacement in Cargo.lock at line 39
    [3.8093][2.14520:14592]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.8093]
    [3.8165]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 45
    [3.10388][2.14593:14628]()
    name = "autocfg"
    version = "0.1.2"
    [3.10388]
    [3.8364]
    name = "backtrace"
    version = "0.2.3"
  • edit in Cargo.lock at line 48
    [3.8429]
    [3.8985]
    dependencies = [
    "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
    "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
    "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
  • replacement in Cargo.lock at line 60
    [3.9017][2.14629:14648]()
    version = "0.3.13"
    [3.9017]
    [3.9035]
    version = "0.3.9"
  • replacement in Cargo.lock at line 63
    [3.9117][2.14649:14804]()
    "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)",
    [3.9117]
    [3.9198]
    "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 65
    [3.9271][2.14805:14959]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.9271]
    [3.9424]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 72
    [3.9535][2.14960:14979]()
    version = "0.1.28"
    [3.9535]
    [3.9554]
    version = "0.1.24"
  • replacement in Cargo.lock at line 75
    [3.9636][2.14980:15122]()
    "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.9636]
    [3.9778]
    "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 81
    [3.9809][2.15123:15142]()
    version = "0.10.0"
    [3.9809]
    [3.9827]
    version = "0.9.3"
  • replacement in Cargo.lock at line 84
    [3.9909][2.15143:15219]()
    "byteorder 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.9909]
    [3.10059]
    "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
    "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 95
    [3.10204][2.15220:15238]()
    version = "0.8.0"
    [3.10204]
    [3.10222]
    version = "0.7.1"
  • replacement in Cargo.lock at line 98
    [3.10304][2.15239:15545]()
    "byte-tools 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "opaque-debug 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.10304]
    [3.10531]
    "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "crypto-mac 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 105
    [3.10568][2.15546:15564]()
    version = "0.7.0"
    [3.10568]
    [2.15564]
    version = "0.3.3"
  • replacement in Cargo.lock at line 108
    [2.15646][2.15646:15960]()
    "block-padding 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "byte-tools 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "byteorder 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [2.15646]
    [2.15960]
    "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)",
  • edit in Cargo.lock at line 113
    [2.15975][2.15975:16016](),[2.16016][3.10586:10668](),[3.10586][3.10586:10668](),[3.10668][2.16017:16094](),[2.16094][3.10820:10835](),[3.10820][3.10820:10835]()
    name = "block-padding"
    version = "0.1.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "byte-tools 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
  • replacement in Cargo.lock at line 114
    [3.10855][2.16095:16113]()
    version = "0.3.0"
    [3.10855]
    [3.10873]
    version = "0.2.0"
  • replacement in Cargo.lock at line 119
    [3.10970][2.16114:16132]()
    version = "1.3.0"
    [3.10970]
    [3.10988]
    version = "1.2.7"
  • replacement in Cargo.lock at line 127
    [3.11182][2.16133:16209]()
    "byteorder 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.11182]
    [3.11258]
    "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 138
    [3.11467][2.16210:16229]()
    version = "1.0.28"
    [3.11467]
    [3.11486]
    version = "1.0.25"
  • replacement in Cargo.lock at line 153
    [3.11948][2.16230:16302]()
    "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.11948]
    [3.12020]
    "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 177
    [3.12887]
    [3.13009]
    [[package]]
    name = "constant_time_eq"
    version = "0.1.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • replacement in Cargo.lock at line 189
    [3.13233][2.16303:16375]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.13233]
    [3.13305]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 195
    [3.13367][3.13367:13449](),[3.13367][3.13367:13449](),[3.13367][3.13367:13449](),[3.13367][3.13367:13449](),[3.13367][3.13367:13449](),[3.13367][3.13367:13449](),[3.13367][3.13367:13449](),[3.13367][3.13367:13449](),[3.13367][3.13367:13449](),[3.13367][3.13367:13449](),[3.13449][2.16376:16508]()
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
    name = "crossbeam-channel"
    version = "0.3.6"
  • replacement in Cargo.lock at line 197
    [2.16590][2.16590:16896]()
    "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
    "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
    [2.16590]
    [3.13521]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 202
    [3.13561][2.16897:16915]()
    version = "0.6.3"
    [3.13561]
    [3.13579]
    version = "0.6.2"
  • replacement in Cargo.lock at line 205
    [3.13661][2.16916:17080]()
    "crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.13661]
    [3.13825]
    "crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 211
    [3.13865][2.17081:17099]()
    version = "0.7.0"
    [3.13865]
    [3.13883]
    version = "0.6.1"
  • replacement in Cargo.lock at line 214
    [3.13965][2.17100:17176]()
    "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.13965]
    [3.14040]
    "arrayvec 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 216
    [3.14113][2.17177:17259]()
    "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.14113]
    [3.14195]
    "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 224
    [3.14466][2.17260:17278]()
    version = "0.6.3"
    [3.14466]
    [3.14484]
    version = "0.6.1"
  • replacement in Cargo.lock at line 232
    [3.14674][2.17279:17297]()
    version = "0.7.0"
    [3.14674]
    [3.14692]
    version = "0.5.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 = "dbghelp-sys"
    version = "0.2.0"
  • replacement in Cargo.lock at line 244
    [3.14774][2.17298:17452]()
    "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.14774]
    [3.14937]
    "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)",
  • replacement in Cargo.lock at line 260
    [3.15609][2.17453:17471]()
    version = "0.8.0"
    [3.15609]
    [3.15627]
    version = "0.7.6"
  • replacement in Cargo.lock at line 263
    [3.15709][2.17472:17553]()
    "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.15709]
    [3.15789]
    "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 268
    [3.15825][2.17554:17573]()
    version = "0.8.14"
    [3.15825]
    [3.15844]
    version = "0.8.12"
  • replacement in Cargo.lock at line 282
    [3.16352][2.17574:17646]()
    "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.16352]
    [3.16424]
    "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 288
    [3.16536]
    [3.16749]
    version = "0.1.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
    name = "error-chain"
  • replacement in Cargo.lock at line 299
    [3.16849][2.17647:17724]()
    "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.16849]
    [3.16925]
    "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 304
    [3.16957][2.17725:17743]()
    version = "0.1.5"
    [3.16957]
    [3.16975]
    version = "0.1.3"
  • replacement in Cargo.lock at line 307
    [3.17057][2.17744:17902]()
    "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)",
    [3.17057]
    [3.17214]
    "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
    "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 313
    [3.17253][2.17903:17921]()
    version = "0.1.5"
    [3.17253]
    [3.17271]
    version = "0.1.3"
  • replacement in Cargo.lock at line 316
    [3.17353][2.17922:18146]()
    "proc-macro2 0.4.26 (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)",
    [3.17353]
    [3.17577]
    "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 379
    [3.19271][2.18147:18222]()
    "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.19271]
    [3.19346]
    "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 384
    [3.19384][2.18223:18242]()
    version = "0.12.0"
    [3.19384]
    [3.19402]
    version = "0.9.0"
  • replacement in Cargo.lock at line 392
    [3.19586][2.18243:18262]()
    version = "0.1.15"
    [3.19586]
    [3.19605]
    version = "0.1.14"
  • replacement in Cargo.lock at line 395
    [3.19687][2.18263:18339]()
    "byteorder 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.19687]
    [3.19763]
    "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 402
    [3.20198][2.18340:18560]()
    "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)",
    [3.20198]
    [2.18560]
    "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "string 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 408
    [2.18575][2.18575:18839](),[2.18839][3.20418:20433](),[3.20418][3.20418:20433]()
    name = "hmac"
    version = "0.7.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
  • replacement in Cargo.lock at line 412
    [3.20551][2.18840:18912]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.20551]
    [3.20623]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 441
    [3.21397][2.18913:18933]()
    version = "0.12.21"
    [3.21397]
    [3.21417]
    version = "0.12.17"
  • replacement in Cargo.lock at line 447
    [3.21729][2.18934:19004]()
    "h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.21729]
    [3.21799]
    "h2 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 454
    [3.22231][2.19005:19547]()
    "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.14 (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.10 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.22231]
    [3.22772]
    "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 485
    [3.23535][2.19548:19620]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.23535]
    [3.23607]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 508
    [3.24326][2.19621:19639]()
    version = "0.5.3"
    [3.24326]
    [3.24344]
    version = "0.5.2"
  • replacement in Cargo.lock at line 511
    [3.24426][2.19640:19870]()
    "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)",
    "minidom 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.24426]
    [3.24655]
    "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "minidom 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 542
    [3.25316][2.19871:19890]()
    version = "0.2.47"
    [3.25316]
    [3.25335]
    version = "0.2.44"
  • replacement in Cargo.lock at line 582
    [3.26368][2.19891:19909]()
    version = "0.7.5"
    [3.26368]
    [3.26386]
    version = "0.7.3"
  • replacement in Cargo.lock at line 585
    [3.26468][2.19910:20291]()
    "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.26468]
    [3.26849]
    "phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)",
    "phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 592
    [3.27015][2.20292:20366]()
    "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.27015]
    [3.27089]
    "tendril 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 602
    [3.27233][2.20367:20385]()
    version = "2.1.3"
    [3.27233]
    [3.27251]
    version = "2.1.1"
  • replacement in Cargo.lock at line 606
    [3.27406][2.20386:20458]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.27406]
    [3.27558]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 617
    [3.27705][2.20459:20478]()
    version = "0.10.0"
    [3.27705]
    [3.27723]
    version = "0.9.1"
  • replacement in Cargo.lock at line 620
    [3.27805][2.20479:20711]()
    "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)",
    "quick-xml 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.27805]
    [3.28037]
    "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "quick-xml 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 635
    [3.28558][2.20712:20784]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.28558]
    [3.28630]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 639
    [3.28843][2.20785:20856]()
    "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.28843]
    [3.28914]
    "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 649
    [3.29191][2.20857:20929]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.29191]
    [3.29263]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 670
    [3.29977][2.20930:21002]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.29977]
    [3.30049]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 672
    [3.30119][2.21003:21079]()
    "openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.30119]
    [3.30195]
    "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 674
    [3.30275][2.21080:21159]()
    "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.30275]
    [3.30354]
    "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 676
    [3.30430][2.21160:21334]()
    "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)",
    [3.30430]
    [3.30604]
    "security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 687
    [3.30882][2.21335:21407]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.30882]
    [3.30954]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 719
    [3.31727][2.21408:21426]()
    version = "1.9.0"
    [3.31727]
    [3.31745]
    version = "1.8.0"
  • replacement in Cargo.lock at line 722
    [3.31827][2.21427:21499]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.31827]
    [3.31899]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 726
    [3.31914][2.21500:21618]()
    name = "opaque-debug"
    version = "0.2.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    [[package]]
  • replacement in Cargo.lock at line 727
    [3.31931][2.21619:21639]()
    version = "0.10.16"
    [3.31931]
    [3.31951]
    version = "0.10.15"
  • replacement in Cargo.lock at line 734
    [3.32339][2.21640:21791]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.32339]
    [3.32490]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 745
    [3.32645][2.21792:21811]()
    version = "0.9.40"
    [3.32645]
    [3.32664]
    version = "0.9.39"
  • replacement in Cargo.lock at line 748
    [3.32746][2.21812:21954]()
    "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.32746]
    [3.32888]
    "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 764
    [3.33294][2.21955:21973]()
    version = "0.7.1"
    [3.33294]
    [3.33312]
    version = "0.6.4"
  • replacement in Cargo.lock at line 768
    [3.33469][2.21974:22057]()
    "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.33469]
    [3.33552]
    "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 773
    [3.33593][2.22058:22076]()
    version = "0.4.0"
    [3.33593]
    [3.33611]
    version = "0.3.1"
  • replacement in Cargo.lock at line 776
    [3.33693][2.22077:22220]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.33693]
    [3.33836]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 779
    [3.33916][2.22221:22296]()
    "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.33916]
    [3.33991]
    "smallvec 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 784
    [3.34079][2.22297:22581]()
    name = "pbkdf2"
    version = "0.3.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "byteorder 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
  • replacement in Cargo.lock at line 790
    [3.34214][2.22582:22601]()
    version = "0.7.24"
    [3.34214]
    [3.34233]
    version = "0.7.23"
  • replacement in Cargo.lock at line 793
    [3.34315][2.22602:22680]()
    "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.34315]
    [3.34393]
    "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 798
    [3.34429][2.22681:22700]()
    version = "0.7.24"
    [3.34429]
    [3.34448]
    version = "0.7.23"
  • replacement in Cargo.lock at line 801
    [3.34530][2.22701:22860]()
    "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.34530]
    [3.34689]
    "phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)",
    "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 807
    [3.34727][2.22861:22880]()
    version = "0.7.24"
    [3.34727]
    [3.34746]
    version = "0.7.23"
  • replacement in Cargo.lock at line 810
    [3.34828][2.22881:23030]()
    "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.34828]
    [3.34977]
    "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 816
    [3.35012][2.23031:23050]()
    version = "0.7.24"
    [3.35012]
    [3.35031]
    version = "0.7.23"
  • replacement in Cargo.lock at line 834
    [3.35464][2.23051:23070]()
    version = "0.4.26"
    [3.35464]
    [3.35483]
    version = "0.4.24"
  • replacement in Cargo.lock at line 847
    [3.35794][2.23071:23090]()
    version = "0.13.2"
    [3.35794]
    [3.35813]
    version = "0.12.4"
  • replacement in Cargo.lock at line 850
    [3.35895][2.23091:23244]()
    "encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)",
    "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.35895]
    [3.36048]
    "encoding_rs 0.8.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 853
    [3.36118][2.23245:23318]()
    "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.36118]
    [3.36191]
    "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 863
    [3.36333][2.23319:23338]()
    version = "0.6.11"
    [3.36333]
    [3.36560]
    version = "0.6.10"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
    name = "rand"
    version = "0.4.3"
  • replacement in Cargo.lock at line 874
    [3.36642][2.23339:23418]()
    "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.36642]
    [3.36868]
    "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 886
    [3.37153][2.23419:23491]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.37153]
    [3.37225]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 893
    [3.37392][2.23492:23510]()
    version = "0.6.4"
    [3.37392]
    [3.37410]
    version = "0.6.1"
  • replacement in Cargo.lock at line 896
    [3.37492][2.23511:23735]()
    "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.37492]
    [3.37798]
    "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 903
    [3.38025][2.23736:23810]()
    "rand_os 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 904
    [3.38100][2.23811:23891]()
    "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.38100]
    [3.38260]
    "rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 911
    [3.38369][2.23892:23910]()
    version = "0.1.1"
    [3.38369]
    [3.38387]
    version = "0.1.0"
  • edit in Cargo.lock at line 914
    [3.38469][2.23911:23985]()
    "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 915
    [3.38545]
    [3.38625]
    "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 948
    [2.24177][2.24177:24194](),[2.24194][3.39193:39293](),[3.39193][3.39193:39293](),[3.39293][2.24195:24423](),[2.24423][3.39293:39369](),[3.39293][3.39293:39369](),[3.39369][2.24424:24570](),[2.24570][3.39369:39384](),[3.39369][3.39369:39384]()
    name = "rand_os"
    version = "0.1.1"
    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-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand_core 0.3.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]]
  • replacement in Cargo.lock at line 958
    [3.39696][2.24571:24796]()
    version = "0.1.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
    name = "rdrand"
    version = "0.4.0"
    [3.39696]
    [3.39714]
    version = "0.1.0"
  • replacement in Cargo.lock at line 966
    [3.39910][2.24797:24816]()
    version = "0.1.51"
    [3.39910]
    [3.39929]
    version = "0.1.43"
  • replacement in Cargo.lock at line 974
    [3.40130][2.24817:24898]()
    "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.40130]
    [3.40211]
    "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 979
    [3.40241][2.24899:24917]()
    version = "1.1.0"
    [3.40241]
    [3.40259]
    version = "1.0.6"
  • replacement in Cargo.lock at line 983
    [3.40420][2.24918:25070]()
    "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.40420]
    [3.40572]
    "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 991
    [3.40766][2.25071:25089]()
    version = "0.6.4"
    [3.40766]
    [3.40784]
    version = "0.6.3"
  • replacement in Cargo.lock at line 1007
    [3.41189][2.25090:25108]()
    version = "0.6.2"
    [3.41189]
    [3.41207]
    version = "0.6.1"
  • replacement in Cargo.lock at line 1016
    [3.41481][2.25109:25128]()
    version = "0.1.13"
    [3.41481]
    [3.41499]
    version = "0.1.9"
  • edit in Cargo.lock at line 1033
    [3.41897]
    [3.42010]
    name = "safemem"
    version = "0.3.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    [[package]]
  • replacement in Cargo.lock at line 1039
    [3.42024][2.25129:25147]()
    version = "0.4.3"
    [3.42024]
    [3.42042]
    version = "0.4.2"
  • replacement in Cargo.lock at line 1042
    [3.42124][2.25148:25583]()
    "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "hmac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand_os 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.42124]
    [3.42273]
    "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1062
    [3.42717][2.25584:25602]()
    version = "0.2.2"
    [3.42717]
    [3.42735]
    version = "0.2.1"
  • replacement in Cargo.lock at line 1067
    [3.42985][2.25603:25764]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.42985]
    [3.43146]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1073
    [3.43193][2.25765:25783]()
    version = "0.2.3"
    [3.43193]
    [3.43211]
    version = "0.2.1"
  • edit in Cargo.lock at line 1076
    [3.43293][2.25784:25863]()
    "MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1077
    [3.43379][2.25864:25936]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.43379]
    [3.43451]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1099
    [3.43981][2.25937:26085]()
    "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.43981]
    [3.44129]
    "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "hyper 0.12.17 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1102
    [3.44199][2.26086:26387]()
    "minidom 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.44199]
    [3.44499]
    "minidom 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1108
    [3.44658][2.26388:26465]()
    "tokio-xmpp 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.44658]
    [3.44735]
    "tokio-xmpp 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1110
    [3.44807][2.26466:26621]()
    "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "xmpp-parsers 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.44807]
    [3.44887]
    "xmpp-parsers 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1115
    [3.44917][2.26622:26641]()
    version = "1.0.85"
    [3.44917]
    [3.44936]
    version = "1.0.80"
  • replacement in Cargo.lock at line 1120
    [3.45036][2.26642:26661]()
    version = "1.0.85"
    [3.45036]
    [3.45055]
    version = "1.0.80"
  • replacement in Cargo.lock at line 1123
    [3.45137][2.26662:26886]()
    "proc-macro2 0.4.26 (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)",
    [3.45137]
    [3.45361]
    "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1130
    [3.45396][2.26887:26906]()
    version = "1.0.36"
    [3.45396]
    [3.45415]
    version = "1.0.33"
  • replacement in Cargo.lock at line 1135
    [3.45638][2.26907:26980]()
    "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.45638]
    [3.45711]
    "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1140
    [3.45741][2.26981:26999]()
    version = "0.8.1"
    [3.45741]
    [3.45759]
    version = "0.7.0"
  • replacement in Cargo.lock at line 1143
    [3.45841][2.27000:27152]()
    "block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.45841]
    [3.46070]
    "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)",
  • edit in Cargo.lock at line 1147
    [3.46146][2.27153:27232]()
    "opaque-debug 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1151
    [3.46175][2.27233:27251]()
    version = "0.8.0"
    [3.46175]
    [3.46193]
    version = "0.7.1"
  • replacement in Cargo.lock at line 1154
    [3.46275][2.27252:27404]()
    "block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.46275]
    [3.46504]
    "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)",
  • edit in Cargo.lock at line 1158
    [3.46580][2.27405:27484]()
    "opaque-debug 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1162
    [3.46609][2.27485:27503]()
    version = "0.8.1"
    [3.46609]
    [3.46627]
    version = "0.7.3"
  • replacement in Cargo.lock at line 1165
    [3.46709][2.27504:27733]()
    "block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "byte-tools 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.46709]
    [3.46938]
    "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)",
  • edit in Cargo.lock at line 1169
    [3.47011][2.27734:27813]()
    "opaque-debug 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1173
    [3.47047][2.27814:27832]()
    version = "0.1.7"
    [3.47047]
    [3.47065]
    version = "0.1.6"
  • replacement in Cargo.lock at line 1176
    [3.47147][2.27833:27980]()
    "arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.47147]
    [3.47294]
    "arc-swap 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1187
    [3.47438][2.27981:27999]()
    version = "0.4.2"
    [3.47438]
    [3.47456]
    version = "0.4.1"
  • replacement in Cargo.lock at line 1192
    [3.47552][2.28000:28018]()
    version = "0.6.8"
    [3.47552]
    [3.47570]
    version = "0.6.6"
  • replacement in Cargo.lock at line 1204
    [3.47935][2.28019:28172]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.47935]
    [3.48088]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1216
    [3.48316][2.28173:28191]()
    version = "0.1.3"
    [3.48316]
    [3.48334]
    version = "0.1.2"
  • replacement in Cargo.lock at line 1226
    [3.48700][2.28192:28270]()
    "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.48700]
    [3.48778]
    "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1228
    [3.48861][2.28271:28344]()
    "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.48861]
    [3.48934]
    "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1238
    [3.49252][2.28345:28656]()
    "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
    "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.49252]
    [3.49563]
    "phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)",
    "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)",
    "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 1256
    [3.49901][2.28657:28769]()
    name = "subtle"
    version = "1.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    [[package]]
  • replacement in Cargo.lock at line 1267
    [3.50268][2.28770:28790]()
    version = "0.15.26"
    [3.50268]
    [3.50288]
    version = "0.15.22"
  • replacement in Cargo.lock at line 1270
    [3.50370][2.28791:28943]()
    "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
    "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.50370]
    [3.50522]
    "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1288
    [3.50947][2.28944:29168]()
    "proc-macro2 0.4.26 (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)",
    [3.50947]
    [3.51171]
    "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
    "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1300
    [3.51455][2.29169:29393]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
    "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.51455]
    [3.51679]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1309
    [3.51865][2.29394:29412]()
    version = "0.4.1"
    [3.51865]
    [3.51883]
    version = "0.4.0"
  • replacement in Cargo.lock at line 1314
    [3.52106][2.29413:29485]()
    "utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.52106]
    [3.52178]
    "utf-8 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1330
    [3.52519][2.29486:29639]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.52519]
    [3.52672]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1353
    [3.53210][2.29640:29659]()
    version = "0.1.42"
    [3.53210]
    [3.53229]
    version = "0.1.40"
  • replacement in Cargo.lock at line 1356
    [3.53311][2.29660:29813]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.53311]
    [3.53464]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
    "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1363
    [3.53567][2.29814:29833]()
    version = "0.1.14"
    [3.53567]
    [3.53586]
    version = "0.1.13"
  • replacement in Cargo.lock at line 1369
    [3.53887][2.29834:29909]()
    "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.53887]
    [3.53962]
    "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1372
    [3.54127][2.29910:30382]()
    "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.10 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.54127]
    [3.54598]
    "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1380
    [3.54752][2.30383:30459]()
    "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.54752]
    [3.54828]
    "tokio-uds 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1398
    [3.55308][2.30460:30536]()
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.55308]
    [3.55384]
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1407
    [3.55604][2.30537:30618]()
    "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.55604]
    [3.55685]
    "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1412
    [3.55724][2.30619:30637]()
    version = "0.1.6"
    [3.55724]
    [3.55742]
    version = "0.1.5"
  • edit in Cargo.lock at line 1415
    [3.55824][2.30638:30720]()
    "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1420
    [3.55932][2.30721:30739]()
    version = "0.1.5"
    [3.55932]
    [3.55950]
    version = "0.1.4"
  • replacement in Cargo.lock at line 1424
    [3.56107][2.30740:30900]()
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.56107]
    [3.56266]
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1430
    [3.56299][2.30901:30920]()
    version = "0.1.11"
    [3.56299]
    [3.56318]
    version = "0.1.10"
  • replacement in Cargo.lock at line 1440
    [3.56656][2.30921:30939]()
    version = "0.1.8"
    [3.56656]
    [3.56674]
    version = "0.1.7"
  • replacement in Cargo.lock at line 1443
    [3.56756][2.30940:31022]()
    "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.56756]
    [3.56838]
    "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1448
    [3.57132][2.31023:31404]()
    "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)",
    [3.57132]
    [3.57513]
    "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
    "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1461
    [3.57725][2.31405:31477]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.57725]
    [3.57797]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1464
    [3.57942][2.31478:31793]()
    "signal-hook 0.1.7 (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)",
    [3.57942]
    [3.58257]
    "signal-hook 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1473
    [3.58364][2.31794:31812]()
    version = "0.1.3"
    [3.58364]
    [3.58382]
    version = "0.1.2"
  • replacement in Cargo.lock at line 1480
    [3.58755][2.31813:31969]()
    "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)",
    [3.58755]
    [3.58911]
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1486
    [3.58952][2.31970:31989]()
    version = "0.1.10"
    [3.58952]
    [3.58970]
    version = "0.1.9"
  • replacement in Cargo.lock at line 1489
    [3.59052][2.31990:32238]()
    "crossbeam-channel 0.3.6 (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.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.59052]
    [3.59216]
    "crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1493
    [3.59361][2.32239:32466]()
    "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.59361]
    [3.59588]
    "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1503
    [3.59724][2.32467:32549]()
    "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.59724]
    [3.59806]
    "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1505
    [3.59881][2.32550:32702]()
    "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)",
    [3.59881]
    [3.60033]
    "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1511
    [3.60067][2.32703:32721]()
    version = "0.2.1"
    [3.60067]
    [3.60085]
    version = "0.2.0"
  • replacement in Cargo.lock at line 1516
    [3.60319][2.32722:32798]()
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.60319]
    [3.60395]
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1529
    [3.60896][2.32799:32955]()
    "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)",
    [3.60896]
    [3.61052]
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1535
    [3.61086][2.32956:32974]()
    version = "0.2.5"
    [3.61086]
    [3.61104]
    version = "0.2.4"
  • replacement in Cargo.lock at line 1541
    [3.61406][2.32975:33047]()
    "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.61406]
    [3.61478]
    "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1546
    [3.61771][2.33048:33204]()
    "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)",
    [3.61771]
    [3.61927]
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1552
    [3.61962][2.33205:33223]()
    version = "0.2.3"
    [3.61962]
    [3.61980]
    version = "0.2.0"
  • edit in Cargo.lock at line 1559
    [3.62360]
    [3.62504]
    "jid 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "minidom 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1562
    [3.62581][2.33224:33445]()
    "quick-xml 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "sasl 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.62581]
    [3.62802]
    "quick-xml 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
    "sasl 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1566
    [3.62880][2.33446:33766]()
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "trust-dns-proto 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "trust-dns-resolver 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.62880]
    [3.63274]
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "trust-dns-proto 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "trust-dns-resolver 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "try_from 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1572
    [3.63350][2.33767:33847]()
    "xmpp-parsers 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.63350]
    [3.63430]
    "xmpp-parsers 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1580
    [3.63560][2.33848:33921]()
    "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.63560]
    [3.63633]
    "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1585
    [3.63673][2.33922:33940]()
    version = "0.6.2"
    [3.63673]
    [3.63691]
    version = "0.4.3"
  • replacement in Cargo.lock at line 1588
    [3.63773][2.33941:34091]()
    "byteorder 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.63773]
    [3.63928]
    "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
    "error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1594
    [3.64222][2.34092:34238]()
    "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.64222]
    [3.64368]
    "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "smallvec 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1597
    [3.64442][2.34239:34552]()
    "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)",
    [3.64442]
    [3.64755]
    "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1608
    [3.65022][2.34553:34572]()
    version = "0.10.2"
    [3.65022]
    [3.65040]
    version = "0.9.1"
  • replacement in Cargo.lock at line 1612
    [3.65195][2.34573:34647]()
    "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.65195]
    [3.65274]
    "error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1618
    [3.65648][2.34648:34956]()
    "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
    "trust-dns-proto 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.65648]
    [3.65956]
    "resolv-conf 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "smallvec 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
    "trust-dns-proto 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1631
    [3.66103][2.34957:34975]()
    version = "0.3.2"
    [3.66103]
    [3.66121]
    version = "0.2.2"
  • edit in Cargo.lock at line 1633
    [3.66186][2.34976:35068]()
    dependencies = [
    "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
  • replacement in Cargo.lock at line 1692
    [3.67696][2.35069:35087]()
    version = "0.7.5"
    [3.67696]
    [3.67714]
    version = "0.7.4"
  • edit in Cargo.lock at line 1708
    [3.68055]
    [3.68174]
    source = "registry+https://github.com/rust-lang/crates.io-index"
    [[package]]
    name = "version_check"
    version = "0.1.5"
  • replacement in Cargo.lock at line 1813
    [3.71090][2.35088:35238]()
    "markup5ever 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.71090]
    [3.71240]
    "markup5ever 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1819
    [3.71277][2.35239:35258]()
    version = "0.12.2"
    [3.71277]
    [3.71296]
    version = "0.11.1"
  • replacement in Cargo.lock at line 1822
    [3.71378][2.35259:35406]()
    "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.71378]
    [3.71524]
    "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "blake2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1825
    [3.71597][2.35407:35914]()
    "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "jid 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "minidom 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "sha3 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.71597]
    [3.72103]
    "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
    "jid 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "minidom 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "sha3 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "try_from 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 1835
    [3.72117][2.35915:36070]()
    "checksum MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eaf9f0d0b1cc33a4d2aee14fb4b2eac03462ef4db29c8ac4057327d8a71ad86f"
  • replacement in Cargo.lock at line 1837
    [3.72425][2.36071:36374]()
    "checksum arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1025aeae2b664ca0ea726a89d574fe8f4e77dd712d443236ad1de00379450cf6"
    "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71"
    [3.72425]
    [3.72878]
    "checksum arc-swap 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5c5ed110e2537bdd3f5b9091707a8a5556a72ac49bbd7302ae0b28fdccb3246c"
    "checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee"
    "checksum arrayvec 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "f405cc4c21cd8b784f6c8fc2adf9bc00f59558f0049b5ec21517f875963040cc"
  • replacement in Cargo.lock at line 1841
    [3.73026][2.36375:36985]()
    "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.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "621fc7ecb8008f86d7fb9b95356cd692ce9514b80a86d85b397f32a22da7b9e2"
    [3.73026]
    [3.73636]
    "checksum backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "346d7644f0b5f9bc73082d3b2236b69a05fd35cce0cfa3724e184e6a5c9e2a2f"
    "checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a"
    "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0"
    "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
  • replacement in Cargo.lock at line 1846
    [3.73787][2.36986:37751]()
    "checksum blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "91721a6330935673395a0607df4d49a9cb90ae12d259f1b3e0a3f6e1d486872e"
    "checksum block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49665c62e0e700857531fa5d3763e91b539ff1abeebd56808d378b495870d60d"
    "checksum block-padding 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc4358306e344bf9775d0197fd00d2603e5afb0771bb353538630f022068ea3"
    "checksum byte-tools 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "980479e6fde23246dfb54d47580d66b4e99202e7579c5eaa9fe10ecb5ebd2182"
    "checksum byteorder 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60f0b0d4c0a382d2734228fd12b5a6b5dac185c60e938026fd31b265b94f9bd2"
    [3.73787]
    [3.74396]
    "checksum blake2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73b77e29dbd0115e43938be2d5128ecf81c0353e00acaa65339a1242586951d9"
    "checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab"
    "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40"
    "checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d"
  • replacement in Cargo.lock at line 1852
    [3.74692][2.37752:37898]()
    "checksum cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749"
    [3.74692]
    [3.74838]
    "checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16"
  • edit in Cargo.lock at line 1857
    [3.75435]
    [3.75594]
    "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
  • replacement in Cargo.lock at line 1860
    [3.75914][2.37899:38686]()
    "checksum crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "137bc235f622ffaa0428e3854e24acb53291fc0b3ff6fb2cb75a8be6fb02f06b"
    "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13"
    "checksum crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f10a4f8f409aaac4b16a5474fb233624238fcdeefb9ba50d5ea059aab63ba31c"
    "checksum crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "41ee4864f4797060e52044376f7d107429ce1fb43460021b126424b7180ee21a"
    "checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5"
    [3.75914]
    [3.76695]
    "checksum crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe1b6f945f824c7a25afe44f62e25d714c0cc523f8e99d8db5cd1026e1269d3"
    "checksum crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2449aaa4ec7ef96e5fb24db16024b935df718e9ae1cec0a1e68feeca2efca7b8"
    "checksum crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c55913cc2799171a550e307918c0a360e8c16004820291bf3b638969b4a01816"
    "checksum crypto-mac 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0999b4ff4d3446d4ddb19a63e9e00c1876e75cd7000d20e57a693b4b3f08d958"
    "checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"
  • replacement in Cargo.lock at line 1866
    [3.76850][2.38687:38991]()
    "checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c"
    "checksum encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)" = "a69d152eaa438a291636c1971b0a370212165ca8a75759eb66818c5ce9b538f7"
    [3.76850]
    [3.77154]
    "checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90"
    "checksum encoding_rs 0.8.12 (registry+https://github.com/rust-lang/crates.io-index)" = "ca20350a7cb5aab5b9034731123d6d412caf3e92d4985e739e411ba0955fd0eb"
  • edit in Cargo.lock at line 1869
    [3.77307]
    [3.77462]
    "checksum error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faa976b4fd2e4c2b2f3f486874b19e61944d3de3de8b61c9fcf835d583871bcc"
  • replacement in Cargo.lock at line 1871
    [3.77616][2.38992:39299]()
    "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"
    [3.77616]
    [3.77923]
    "checksum failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6dd377bcc1b1b7ce911967e3ec24fa19c3224394ec05b54aa7b083d498341ac7"
    "checksum failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "64c2d913fe8ed3b6c6518eedf4538255b989945c14c2a7d5cbff62a5e2120596"
  • replacement in Cargo.lock at line 1882
    [3.79314][2.39300:39750]()
    "checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592"
    "checksum h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "30e0b8e55b4d7ffedade2b9605851f8e85f5010663e7ad170ef3c0f0681bc43f"
    "checksum hmac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f127a908633569f208325f86f71255d3363c79721d7f9fe31cd5569908819771"
    [3.79314]
    [3.79616]
    "checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d"
    "checksum h2 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "1ac030ae20dee464c5d0f36544d8b914a6bc606da44a57e052d2b0f5dae129e0"
  • replacement in Cargo.lock at line 1888
    [3.80218][2.39751:39901]()
    "checksum hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6d6b1a3d01ac8035b8d2d94e0e5254eab82746f09046baed763751b00253232b"
    [3.80218]
    [3.80368]
    "checksum hyper 0.12.17 (registry+https://github.com/rust-lang/crates.io-index)" = "c49a75385d35ff5e9202755f09beb0b878a05c4c363fcc52b23eeb5dcb6782cc"
  • replacement in Cargo.lock at line 1894
    [3.81112][2.39902:40048]()
    "checksum jid 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "24e8a3f2ab860aa08074136e3144a2425e678d8823206e5adcc6145dc136503a"
    [3.81112]
    [3.81258]
    "checksum jid 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6c4cee633b7ce95e71202ecb99e632d15ad468de7753e616a924c93842f1a3d0"
  • replacement in Cargo.lock at line 1899
    [3.81867][2.40049:40197]()
    "checksum libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "48450664a984b25d5b479554c29cc04e3150c97aa4c01da5604a2d4ed9151476"
    [3.81867]
    [3.82015]
    "checksum libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "10923947f84a519a45c8fefb7dd1b3e8c08747993381adee176d7a82b4195311"
  • replacement in Cargo.lock at line 1905
    [3.82768][2.40198:40352]()
    "checksum markup5ever 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "897636f9850c3eef4905a5540683ed53dc9393860f0846cab2c2ddf9939862ff"
    [3.82768]
    [3.82922]
    "checksum markup5ever 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a87c4100d614080c8ab43334fb028ebe387f273fb61ed4ff0eae9189b94b6be8"
  • replacement in Cargo.lock at line 1907
    [3.83072][2.40353:40502]()
    "checksum memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e1dd4eaac298c32ce07eb6ed9242eda7d82955b9170b7d6db59b2e02cc63fcb8"
    [3.83072]
    [3.83221]
    "checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16"
  • replacement in Cargo.lock at line 1909
    [3.83373][2.40503:40654]()
    "checksum minidom 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "275024eea6c6ff4ace22f2750843831183785288eec1cff91a4e6b8898cf94f9"
    [3.83373]
    [3.83523]
    "checksum minidom 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0a5296bf9d0ac9e4a6e4cb844e3ee84bf33f841c7b3ae2cc87f05ceb81b50ae"
  • replacement in Cargo.lock at line 1919
    [3.84890][2.40655:41113]()
    "checksum num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a69d464bdc213aaaff628444e99578ede64e9c854025aa43b9796530afa9238"
    "checksum opaque-debug 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "51ecbcb821e1bd256d456fe858aaa7f380b63863eab2eb86eee1bd9f33dd6682"
    "checksum openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ec7bd7ca4cce6dbdc77e7c1230682740d307d1218a87fb0349a571272be749f9"
    [3.84890]
    [3.85193]
    "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30"
    "checksum openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e1309181cdcbdb51bc3b6bedb33dfac2a83b3d585033d3f6d9e22e8c1928613"
  • replacement in Cargo.lock at line 1922
    [3.85349][2.41114:41269]()
    "checksum openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)" = "1bb974e77de925ef426b6bc82fce15fd45bdcbeb5728bffcfc7cdeeb7ce1c2d6"
    [3.85349]
    [3.85504]
    "checksum openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)" = "278c1ad40a89aa1e741a1eed089a2f60b18fab8089c3139b542140fc7d674106"
  • replacement in Cargo.lock at line 1924
    [3.85657][2.41270:41732]()
    "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337"
    "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9"
    "checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9"
    [3.85657]
    [3.85970]
    "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5"
    "checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c"
  • replacement in Cargo.lock at line 1927
    [3.86129][2.41733:42346]()
    "checksum phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18"
    "checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e"
    "checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662"
    "checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0"
    [3.86129]
    [3.86742]
    "checksum phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "cec29da322b242f4c3098852c77a0ca261c9c01b806cae85a5572a1eb94db9a6"
    "checksum phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "7d187f00cd98d5afbcd8898f6cf181743a449162aeb329dcd2f3849009e605ad"
    "checksum phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "03dc191feb9b08b0dc1330d6549b795b9d81aec19efe6b4a45aec8d4caee0c4b"
    "checksum phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "b539898d22d4273ded07f64a05737649dc69095d92cb87c7097ec68e3f150b93"
  • replacement in Cargo.lock at line 1933
    [3.87055][2.42347:42502]()
    "checksum proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)" = "38fddd23d98b2144d197c0eca5705632d4fe2667d14a6be5df8934f8d74f1978"
    [3.87055]
    [3.87210]
    "checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09"
  • replacement in Cargo.lock at line 1935
    [3.87364][2.42503:42656]()
    "checksum quick-xml 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98d8d2d671bd29c6122a98b45ce3106391e89ba378f731274de677f1eff06e5f"
    [3.87364]
    [3.87517]
    "checksum quick-xml 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8065cbb01701c11cc195cde85cbf39d1c6a80705b67a157ebb3042e0e5777f"
  • replacement in Cargo.lock at line 1937
    [3.87666][2.42657:42806]()
    "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1"
    [3.87666]
    [3.87962]
    "checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c"
    "checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd"
  • replacement in Cargo.lock at line 1940
    [3.88109][2.42807:43108]()
    "checksum rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3906503e80ac6cbcacb2c2973fa8e473f24d7e2747c8c92bb230c2441cad96b5"
    "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
    [3.88109]
    [3.88410]
    "checksum rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae9d223d52ae411a33cf7e54ec6034ec165df296ccd23533d671a28252b6f66a"
    "checksum rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "771b009e3a508cb67e8823dda454aaa5368c7bc1c16829fb77d3e980440dd34a"
  • edit in Cargo.lock at line 1946
    [3.89017][2.43109:43259]()
    "checksum rand_os 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f46fbd5550acf75b0c2730f5dd1873751daf9beb8f11b44027778fae50d7feca"
  • replacement in Cargo.lock at line 1947
    [3.89168][2.43260:43722]()
    "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"
    [3.89168]
    [3.89481]
    "checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3"
    "checksum redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "679da7508e9a6390aeaf7fbd02a800fdc64b73fe2204dd2c8ae66d22d9d5ad5d"
  • replacement in Cargo.lock at line 1950
    [3.89637][2.43723:44026]()
    "checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f"
    "checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1"
    [3.89637]
    [3.89940]
    "checksum regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467"
    "checksum regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fbc557aac2b708fe84121caf261346cc2eed71978024337e42eb46b8a252ac6e"
  • replacement in Cargo.lock at line 1953
    [3.90097][2.44027:44339]()
    "checksum resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b263b4aa1b5de9ffc0054a2386f96992058bb6870aab516f8cdeb8a667d56dcb"
    "checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619"
    [3.90097]
    [3.90408]
    "checksum resolv-conf 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c62bd95a41841efdf7fca2ae9951e64a8d8eae7e5da196d8ce489a2241491a92"
    "checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395"
  • replacement in Cargo.lock at line 1957
    [3.90710][2.44340:44487]()
    "checksum sasl 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e457758c85b736bbad56dc099406cd2a9c19554cf81880dba7a51d092929e600"
    [3.90710]
    [3.91007]
    "checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9"
    "checksum sasl 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4dbda5436dcd059da44fbf84b87a7164c5e3cad354efd0630c1f2be3c51c8859"
  • replacement in Cargo.lock at line 1961
    [3.91312][2.44488:44814]()
    "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"
    [3.91312]
    [3.91638]
    "checksum security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "697d3f3c23a618272ead9e1fb259c1411102b31c6af8b93f1d64cca9c3b0e8e0"
    "checksum security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab01dfbe5756785b5b4d46e0289e5a18071dfa9a7c2b24213ea00b9ef9b665bf"
  • replacement in Cargo.lock at line 1965
    [3.91943][2.44815:45870]()
    "checksum serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)" = "534b8b91a95e0f71bca3ed5824752d558da048d4248c91af873b63bd60519752"
    "checksum serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)" = "a915306b0f1ac5607797697148c223bedeaa36bcc2e28a01441cd638cc6567b4"
    "checksum serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)" = "574378d957d6dcdf1bbb5d562a15cbd5e644159432f84634b94e485267abbcc7"
    "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68"
    "checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d"
    "checksum sha3 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34a5e54083ce2b934bf059fdf38e7330a154177e029ab6c4e18638f2f624053a"
    "checksum signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1f272d1b7586bec132ed427f532dd418d8beca1ca7f2caf7df35569b1415a4b4"
    [3.91943]
    [3.92998]
    "checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef"
    "checksum serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "225de307c6302bec3898c51ca302fc94a7a1697ef0845fcee6448f33c032249c"
    "checksum serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "c37ccd6be3ed1fdf419ee848f7c758eb31b054d7cd3ae3600e3bae0adf569811"
    "checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded"
    "checksum sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eb6be24e4c23a84d7184280d2722f7f2731fcdd4a9d886efbfe4413e4847ea0"
    "checksum sha3 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b64dcef59ed4290b9fb562b53df07f564690d6539e8ecdd4728cf392477530bc"
    "checksum signal-hook 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8941ae94fa73d0f73b422774b3a40a7195cecd88d1c090f4b37ade7dc795ab66"
  • replacement in Cargo.lock at line 1973
    [3.93150][2.45871:46169]()
    "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"
    [3.93150]
    [3.93448]
    "checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d"
    "checksum smallvec 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "622df2d454c29a4d89b30dc3b27b42d7d90d6b9e587dbf8f67652eb7514da484"
  • replacement in Cargo.lock at line 1977
    [3.93759][2.46170:46319]()
    "checksum string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b"
    [3.93759]
    [3.93908]
    "checksum string 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98998cced76115b1da46f63388b909d118a37ae0be0f82ad35773d4a4bc9d18d"
  • edit in Cargo.lock at line 1982
    [3.94537][2.46320:46469]()
    "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee"
  • replacement in Cargo.lock at line 1983
    [3.94685][2.46470:46618]()
    "checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9"
    [3.94685]
    [3.94833]
    "checksum syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)" = "ae8b29eb5210bc5cf63ed6149cbf9adfc82ac0be023d8735c176ee74a2db4da7"
  • replacement in Cargo.lock at line 1987
    [3.95289][2.46619:46769]()
    "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b"
    [3.95289]
    [3.95439]
    "checksum tendril 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9de21546595a0873061940d994bbbc5c35f024ae4fd61ec5c5b159115684f508"
  • replacement in Cargo.lock at line 1992
    [3.96048][2.46770:47067]()
    "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
    "checksum tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4790d0be6f4ba6ae4f48190efa2ed7780c9e3567796abdb285003cf39840d9c5"
    [3.96048]
    [3.96345]
    "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b"
    "checksum tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "a7817d4c98cc5be21360b3b37d6036fe9b7aefa5b7a201b7b16ff33423822f7d"
  • replacement in Cargo.lock at line 1997
    [3.96818][2.47068:47684]()
    "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"
    [3.96818]
    [3.97434]
    "checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde"
    "checksum tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "60ae25f6b17d25116d2cba342083abe5255d3c2c79cb21ea11aa049c53bf7c75"
    "checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21"
    "checksum tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "502b625acb4ee13cbb3b90b8ca80e0addd263ddacf6931666ef751e610b07fb5"
  • replacement in Cargo.lock at line 2002
    [3.97589][2.47685:47997]()
    "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119"
    "checksum tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "17465013014410310f9f61fa10bf4724803c149ea1d51efece131c38efca93aa"
    [3.97589]
    [3.97900]
    "checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912"
    "checksum tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "56c5556262383032878afad66943926a1d1f0967f17e94bd7764ceceb3b70e7f"
  • replacement in Cargo.lock at line 2005
    [3.98054][2.47998:48150]()
    "checksum tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c"
    [3.98054]
    [3.98206]
    "checksum tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e53fdbf3156f588be1676022fe794232b24922d426e8c14f4e46891c1e31c440"
  • replacement in Cargo.lock at line 2007
    [3.98358][2.48151:48456]()
    "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445"
    "checksum tokio-xmpp 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "838f8a47654f45fd3618288ebda6085578f783ae087d82f12c09e04f7513a690"
    [3.98358]
    [3.98663]
    "checksum tokio-uds 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "99ce87382f6c1a24b513a72c048b2c8efe66cb5161c9061d00bee510f08dc168"
    "checksum tokio-xmpp 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c27385c4781afc851c61ac66d79463c511bf073d3a5d71b8bfd13a816e475989"
  • replacement in Cargo.lock at line 2010
    [3.98811][2.48457:48777]()
    "checksum trust-dns-proto 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30dde452f5d142d5e316a3b32386da95280c98b7e266639f8f3bc6fdf507d279"
    "checksum trust-dns-resolver 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "de630f95a192f793436ffae5137e88253cc4142a97d9a8e73c8d804fa85ddf0a"
    [3.98811]
    [3.99130]
    "checksum trust-dns-proto 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f1525ca4e26f5a09d81b79584f19225e7dba5606ae3a416311c2751c5cea60bb"
    "checksum trust-dns-resolver 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4a821ad51a29816420b8cac4b026756b81c023630b97eaa4c8090637ee3508bd"
  • replacement in Cargo.lock at line 2013
    [3.99281][2.48778:48929]()
    "checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b"
    [3.99281]
    [3.99432]
    "checksum try_from 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "923a7ee3e97dbfe8685261beb4511cc9620a1252405d02693d43169729570111"
  • replacement in Cargo.lock at line 2023
    [3.100817][2.48930:49078]()
    "checksum utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7"
    [3.100817]
    [3.100965]
    "checksum utf-8 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bab35f71693630bb1953dce0f2bcd780e7cde025027124a202ac08a45ba25141"
  • edit in Cargo.lock at line 2027
    [3.101417]
    [3.101573]
    "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
  • replacement in Cargo.lock at line 2042
    [3.103722][2.49079:49235]()
    "checksum xmpp-parsers 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "58b4400e1ae0d246044db5fa7f2e693fdfe9cc6e8eaa72ef2a68c5dc1d3c96de"
    [3.103722]
    "checksum xmpp-parsers 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2e1e0a279d5af83a1dff442249f8a43214ac120267acfaac494b9d28c0027fea"