parseUrl' s0 = do
    let (proto, s1) = T.breakOnEnd "://" (T.pack s0)
        (user,  s2) = T.breakOnEnd ":" s1
        (pass,  s3) = T.breakOnEnd "@" s2
    req <- parseUrl . concat $ map T.unpack [proto, s3]
    return $ applyBasicAuth (T.encodeUtf8 $ T.init user) (T.encodeUtf8 $ T.init pass) req
parseUrl' s0 = do
    let (proto, s1) = T.breakOnEnd "://" (T.pack s0)
        (user,  s2) = T.breakOnEnd ":" s1
        (pass,  s3) = T.breakOnEnd "@" s2
    req <- parseUrl . concat $ map T.unpack [proto, s3]
    return $ applyBasicAuth (T.encodeUtf8 $ T.init user) (T.encodeUtf8 $ T.init pass) req
parseUrl' s0 = do
    let (proto, s1) = T.breakOnEnd "://" (T.pack s0)
        (user,  s2) = T.breakOnEnd ":" s1
        (pass,  s3) = T.breakOnEnd "@" s2
    req <- parseUrl . concat $ map T.unpack [proto, s3]
    return $ applyBasicAuth (T.encodeUtf8 $ T.init user) (T.encodeUtf8 $ T.init pass) req