From ef8f88b416bc59a7495d57d315c571a0837c0136 Mon Sep 17 00:00:00 2001
From: Silas Davis <silas@monax.io>
Date: Thu, 22 Feb 2018 23:06:19 +0000
Subject: [PATCH] More vendor pruning, more better

Signed-off-by: Silas Davis <silas@monax.io>
---
 Gopkg.toml                                    |  34 +-
 consensus/tendermint/config.go                |   1 +
 rpc/tm/integration/websocket_helpers.go       |  18 +-
 vendor/github.com/BurntSushi/toml/.gitignore  |   5 -
 vendor/github.com/BurntSushi/toml/.travis.yml |  15 -
 vendor/github.com/BurntSushi/toml/COMPATIBLE  |   3 -
 vendor/github.com/BurntSushi/toml/Makefile    |  19 -
 vendor/github.com/BurntSushi/toml/README.md   | 218 ----
 vendor/github.com/BurntSushi/toml/session.vim |   1 -
 .../github.com/btcsuite/btcd/btcec/README.md  |  68 --
 vendor/github.com/cep21/xdgbasedir/.gitignore |   1 -
 vendor/github.com/cep21/xdgbasedir/README.md  |   2 -
 .../github.com/cep21/xdgbasedir/goverify.json |  22 -
 vendor/github.com/eapache/channels/.gitignore |  22 -
 .../github.com/eapache/channels/.travis.yml   |  11 -
 .../github.com/eapache/channels/CHANGELOG.md  |  17 -
 vendor/github.com/eapache/channels/README.md  |  27 -
 vendor/github.com/eapache/queue/.gitignore    |  23 -
 vendor/github.com/eapache/queue/.travis.yml   |   7 -
 vendor/github.com/eapache/queue/README.md     |  16 -
 .../github.com/ebuchman/fail-test/README.md   |   1 -
 vendor/github.com/gin-contrib/sse/.travis.yml |  15 -
 vendor/github.com/gin-contrib/sse/README.md   |  58 --
 vendor/github.com/gin-gonic/gin/.gitignore    |   4 -
 vendor/github.com/gin-gonic/gin/.travis.yml   |  31 -
 vendor/github.com/gin-gonic/gin/BENCHMARKS.md | 298 ------
 vendor/github.com/gin-gonic/gin/CHANGELOG.md  | 191 ----
 vendor/github.com/gin-gonic/gin/Makefile      |  61 --
 vendor/github.com/gin-gonic/gin/README.md     | 977 ------------------
 vendor/github.com/gin-gonic/gin/codecov.yml   |   5 -
 vendor/github.com/gin-gonic/gin/logo.jpg      | Bin 12200 -> 0 bytes
 vendor/github.com/gin-gonic/gin/wercker.yml   |   1 -
 vendor/github.com/go-kit/kit/log/README.md    | 147 ---
 vendor/github.com/go-logfmt/logfmt/.gitignore |   4 -
 .../github.com/go-logfmt/logfmt/.travis.yml   |  15 -
 vendor/github.com/go-logfmt/logfmt/README.md  |  33 -
 .../go-playground/locales/.gitignore          |  24 -
 .../go-playground/locales/README.md           | 172 ---
 .../github.com/go-playground/locales/logo.png | Bin 37360 -> 0 bytes
 .../universal-translator/.gitignore           |  24 -
 .../universal-translator/README.md            |  90 --
 .../universal-translator/logo.png             | Bin 16598 -> 0 bytes
 vendor/github.com/go-stack/stack/.travis.yml  |  13 -
 vendor/github.com/go-stack/stack/README.md    |  38 -
 .../gogo/protobuf/gogoproto/Makefile          |  37 -
 .../gogo/protobuf/gogoproto/gogo.pb.golden    |  45 -
 .../gogo/protobuf/gogoproto/gogo.proto        | 133 ---
 .../github.com/gogo/protobuf/proto/Makefile   |  43 -
 .../protoc-gen-gogo/descriptor/Makefile       |  36 -
 .../github.com/gogo/protobuf/types/Makefile   |  39 -
 .../github.com/golang/protobuf/proto/Makefile |  43 -
 .../golang/protobuf/ptypes/any/any.proto      | 149 ---
 .../protobuf/ptypes/duration/duration.proto   | 117 ---
 .../golang/protobuf/ptypes/regen.sh           |  43 -
 .../protobuf/ptypes/timestamp/timestamp.proto | 133 ---
 vendor/github.com/golang/snappy/.gitignore    |  16 -
 vendor/github.com/golang/snappy/README        | 107 --
 .../github.com/gorilla/websocket/.gitignore   |  25 -
 .../github.com/gorilla/websocket/.travis.yml  |  19 -
 vendor/github.com/gorilla/websocket/README.md |  64 --
 vendor/github.com/imdario/mergo/.gitignore    |  33 -
 vendor/github.com/imdario/mergo/.travis.yml   |   7 -
 .../imdario/mergo/CODE_OF_CONDUCT.md          |  46 -
 vendor/github.com/imdario/mergo/README.md     | 207 ----
 .../inconshreveable/mousetrap/README.md       |  23 -
 vendor/github.com/jawher/mow.cli/.gitignore   |   2 -
 vendor/github.com/jawher/mow.cli/.travis.yml  |  19 -
 vendor/github.com/jawher/mow.cli/Makefile     |  25 -
 vendor/github.com/jawher/mow.cli/README.md    | 771 --------------
 vendor/github.com/jmhodges/levigo/.gitignore  |   6 -
 vendor/github.com/jmhodges/levigo/README.md   |  52 -
 vendor/github.com/kr/logfmt/.gitignore        |   3 -
 vendor/github.com/kr/logfmt/Readme            |  12 -
 vendor/github.com/mattn/go-isatty/.travis.yml |   9 -
 vendor/github.com/mattn/go-isatty/README.md   |  50 -
 vendor/github.com/pkg/errors/.gitignore       |  24 -
 vendor/github.com/pkg/errors/.travis.yml      |  11 -
 vendor/github.com/pkg/errors/README.md        |  52 -
 vendor/github.com/pkg/errors/appveyor.yml     |  32 -
 .../github.com/rcrowley/go-metrics/.gitignore |   9 -
 .../rcrowley/go-metrics/.travis.yml           |  18 -
 .../github.com/rcrowley/go-metrics/README.md  | 167 ---
 .../github.com/rcrowley/go-metrics/memory.md  | 285 -----
 .../rcrowley/go-metrics/validate.sh           |  10 -
 vendor/github.com/spf13/cobra/.gitignore      |  36 -
 vendor/github.com/spf13/cobra/.mailmap        |   3 -
 vendor/github.com/spf13/cobra/.travis.yml     |  21 -
 vendor/github.com/spf13/cobra/README.md       | 721 -------------
 .../spf13/cobra/bash_completions.md           | 206 ----
 vendor/github.com/spf13/pflag/.gitignore      |   2 -
 vendor/github.com/spf13/pflag/.travis.yml     |  21 -
 vendor/github.com/spf13/pflag/README.md       | 296 ------
 .../streadway/simpleuuid/.travis.yml          |   1 -
 .../github.com/streadway/simpleuuid/README.md |  56 -
 .../testify/assert/assertion_format.go.tmpl   |   4 -
 .../testify/assert/assertion_forward.go.tmpl  |   4 -
 .../stretchr/testify/require/require.go.tmpl  |   6 -
 .../testify/require/require_forward.go.tmpl   |   4 -
 .../tendermint/abci/example/dummy/README.md   |  31 -
 .../tendermint/abci/types/types.proto         | 258 -----
 .../tendermint/go-crypto/.gitignore           |   4 -
 .../tendermint/go-crypto/CHANGELOG.md         |  78 --
 .../github.com/tendermint/go-crypto/Makefile  |  69 --
 .../github.com/tendermint/go-crypto/README.md |   6 -
 .../tendermint/go-crypto/circle.yml           |  21 -
 .../tendermint/go-crypto/glide.lock           |  86 --
 .../tendermint/go-crypto/glide.yaml           |  36 -
 .../github.com/tendermint/go-wire/.gitignore  |   2 -
 .../tendermint/go-wire/CHANGELOG.md           |  77 --
 vendor/github.com/tendermint/go-wire/Makefile |  39 -
 .../github.com/tendermint/go-wire/README.md   | 202 ----
 .../github.com/tendermint/go-wire/circle.yml  |  21 -
 .../tendermint/go-wire/data/Makefile          |   9 -
 .../tendermint/go-wire/data/README.md         | 302 ------
 .../github.com/tendermint/go-wire/glide.lock  |  48 -
 .../github.com/tendermint/go-wire/glide.yaml  |  15 -
 vendor/github.com/tendermint/iavl/.gitignore  |  12 -
 vendor/github.com/tendermint/iavl/Makefile    |  56 -
 .../github.com/tendermint/iavl/PERFORMANCE.md | 111 --
 vendor/github.com/tendermint/iavl/POEM        |  29 -
 vendor/github.com/tendermint/iavl/README.md   |  13 -
 vendor/github.com/tendermint/iavl/circle.yml  |  21 -
 vendor/github.com/tendermint/iavl/glide.lock  |  74 --
 vendor/github.com/tendermint/iavl/glide.yaml  |  19 -
 .../tendermint/merkleeyes/iavl/PERFORMANCE.md | 111 --
 .../tendermint/merkleeyes/iavl/README.md      |  13 -
 .../tendermint/merkleeyes/iavl/circle.yml     |  11 -
 .../tendermint/tendermint/consensus/README.md |  18 -
 .../tendermint/tendermint/p2p/CHANGELOG.md    |  78 --
 .../tendermint/tendermint/p2p/Dockerfile      |  13 -
 .../tendermint/tendermint/p2p/README.md       | 122 ---
 .../tendermint/tendermint/rpc/core/README.md  |  15 -
 .../tendermint/rpc/core/doc_template.txt      |   8 -
 .../tendermint/tendermint/rpc/grpc/compile.sh |   3 -
 .../tendermint/rpc/grpc/types.proto           |  36 -
 .../tendermint/tmlibs/autofile/README.md      |   1 -
 .../github.com/tendermint/tmlibs/db/README.md |   1 -
 .../tendermint/tmlibs/flowrate/README.md      |  10 -
 .../tendermint/tmlibs/merkle/README.md        |   4 -
 .../tendermint/tmlibs/pubsub/query/Makefile   |  11 -
 .../tendermint/tmlibs/pubsub/query/query.peg  |  33 -
 vendor/github.com/tmthrgd/go-hex/.travis.yml  |   8 -
 vendor/github.com/tmthrgd/go-hex/README.md    | 108 --
 .../github.com/tommy351/gin-cors/.gitignore   |   1 -
 .../github.com/tommy351/gin-cors/.travis.yml  |  11 -
 vendor/github.com/tommy351/gin-cors/README.md |  27 -
 vendor/github.com/ugorji/go/codec/README.md   | 206 ----
 .../ugorji/go/codec/fast-path.go.tmpl         | 544 ----------
 .../ugorji/go/codec/gen-dec-array.go.tmpl     |  77 --
 .../ugorji/go/codec/gen-dec-map.go.tmpl       |  42 -
 .../ugorji/go/codec/gen-helper.go.tmpl        | 302 ------
 .../ugorji/go/codec/mammoth-test.go.tmpl      | 154 ---
 .../ugorji/go/codec/mammoth2-test.go.tmpl     |  94 --
 .../ugorji/go/codec/test-cbor-goldens.json    | 639 ------------
 vendor/github.com/ugorji/go/codec/test.py     | 126 ---
 vendor/golang.org/x/net/http2/.gitignore      |   2 -
 vendor/golang.org/x/net/http2/Dockerfile      |  51 -
 vendor/golang.org/x/net/http2/Makefile        |   3 -
 vendor/golang.org/x/net/http2/README          |  20 -
 vendor/golang.org/x/sys/unix/.gitignore       |   2 -
 vendor/golang.org/x/sys/unix/README.md        | 173 ----
 vendor/golang.org/x/sys/unix/mkall.sh         | 188 ----
 vendor/golang.org/x/sys/unix/mkerrors.sh      | 580 -----------
 vendor/golang.org/x/sys/unix/mksyscall.pl     | 341 ------
 .../x/sys/unix/mksyscall_solaris.pl           | 289 ------
 .../golang.org/x/sys/unix/mksysctl_openbsd.pl | 264 -----
 .../golang.org/x/sys/unix/mksysnum_darwin.pl  |  39 -
 .../x/sys/unix/mksysnum_dragonfly.pl          |  50 -
 .../golang.org/x/sys/unix/mksysnum_freebsd.pl |  50 -
 .../golang.org/x/sys/unix/mksysnum_netbsd.pl  |  58 --
 .../golang.org/x/sys/unix/mksysnum_openbsd.pl |  50 -
 vendor/golang.org/x/text/language/Makefile    |  16 -
 vendor/google.golang.org/grpc/.please-update  |   0
 vendor/google.golang.org/grpc/.travis.yml     |  23 -
 vendor/google.golang.org/grpc/CONTRIBUTING.md |  32 -
 vendor/google.golang.org/grpc/Makefile        |  45 -
 vendor/google.golang.org/grpc/README.md       |  46 -
 vendor/google.golang.org/grpc/codegen.sh      |  17 -
 .../grpclb/grpc_lb_v1/messages/messages.proto | 155 ---
 vendor/google.golang.org/grpc/vet.sh          |  84 --
 vendor/gopkg.in/fatih/set.v0/.travis.yml      |   3 -
 vendor/gopkg.in/fatih/set.v0/README.md        | 245 -----
 .../go-playground/validator.v8/.gitignore     |  29 -
 .../go-playground/validator.v8/README.md      | 366 -------
 .../go-playground/validator.v8/logo.png       | Bin 13443 -> 0 bytes
 .../go-playground/validator.v9/.gitignore     |  29 -
 .../go-playground/validator.v9/README.md      | 149 ---
 .../go-playground/validator.v9/logo.png       | Bin 13443 -> 0 bytes
 vendor/gopkg.in/tylerb/graceful.v1/.gitignore |  23 -
 .../gopkg.in/tylerb/graceful.v1/.travis.yml   |  13 -
 vendor/gopkg.in/tylerb/graceful.v1/README.md  | 152 ---
 vendor/gopkg.in/yaml.v2/.travis.yml           |   9 -
 vendor/gopkg.in/yaml.v2/README.md             | 135 ---
 193 files changed, 14 insertions(+), 15218 deletions(-)
 delete mode 100644 vendor/github.com/BurntSushi/toml/.gitignore
 delete mode 100644 vendor/github.com/BurntSushi/toml/.travis.yml
 delete mode 100644 vendor/github.com/BurntSushi/toml/COMPATIBLE
 delete mode 100644 vendor/github.com/BurntSushi/toml/Makefile
 delete mode 100644 vendor/github.com/BurntSushi/toml/README.md
 delete mode 100644 vendor/github.com/BurntSushi/toml/session.vim
 delete mode 100644 vendor/github.com/btcsuite/btcd/btcec/README.md
 delete mode 100644 vendor/github.com/cep21/xdgbasedir/.gitignore
 delete mode 100644 vendor/github.com/cep21/xdgbasedir/README.md
 delete mode 100644 vendor/github.com/cep21/xdgbasedir/goverify.json
 delete mode 100644 vendor/github.com/eapache/channels/.gitignore
 delete mode 100644 vendor/github.com/eapache/channels/.travis.yml
 delete mode 100644 vendor/github.com/eapache/channels/CHANGELOG.md
 delete mode 100644 vendor/github.com/eapache/channels/README.md
 delete mode 100644 vendor/github.com/eapache/queue/.gitignore
 delete mode 100644 vendor/github.com/eapache/queue/.travis.yml
 delete mode 100644 vendor/github.com/eapache/queue/README.md
 delete mode 100644 vendor/github.com/ebuchman/fail-test/README.md
 delete mode 100644 vendor/github.com/gin-contrib/sse/.travis.yml
 delete mode 100644 vendor/github.com/gin-contrib/sse/README.md
 delete mode 100644 vendor/github.com/gin-gonic/gin/.gitignore
 delete mode 100644 vendor/github.com/gin-gonic/gin/.travis.yml
 delete mode 100644 vendor/github.com/gin-gonic/gin/BENCHMARKS.md
 delete mode 100644 vendor/github.com/gin-gonic/gin/CHANGELOG.md
 delete mode 100644 vendor/github.com/gin-gonic/gin/Makefile
 delete mode 100644 vendor/github.com/gin-gonic/gin/README.md
 delete mode 100644 vendor/github.com/gin-gonic/gin/codecov.yml
 delete mode 100644 vendor/github.com/gin-gonic/gin/logo.jpg
 delete mode 100644 vendor/github.com/gin-gonic/gin/wercker.yml
 delete mode 100644 vendor/github.com/go-kit/kit/log/README.md
 delete mode 100644 vendor/github.com/go-logfmt/logfmt/.gitignore
 delete mode 100644 vendor/github.com/go-logfmt/logfmt/.travis.yml
 delete mode 100644 vendor/github.com/go-logfmt/logfmt/README.md
 delete mode 100644 vendor/github.com/go-playground/locales/.gitignore
 delete mode 100644 vendor/github.com/go-playground/locales/README.md
 delete mode 100644 vendor/github.com/go-playground/locales/logo.png
 delete mode 100644 vendor/github.com/go-playground/universal-translator/.gitignore
 delete mode 100644 vendor/github.com/go-playground/universal-translator/README.md
 delete mode 100644 vendor/github.com/go-playground/universal-translator/logo.png
 delete mode 100644 vendor/github.com/go-stack/stack/.travis.yml
 delete mode 100644 vendor/github.com/go-stack/stack/README.md
 delete mode 100644 vendor/github.com/gogo/protobuf/gogoproto/Makefile
 delete mode 100644 vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.golden
 delete mode 100644 vendor/github.com/gogo/protobuf/gogoproto/gogo.proto
 delete mode 100644 vendor/github.com/gogo/protobuf/proto/Makefile
 delete mode 100644 vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/Makefile
 delete mode 100644 vendor/github.com/gogo/protobuf/types/Makefile
 delete mode 100644 vendor/github.com/golang/protobuf/proto/Makefile
 delete mode 100644 vendor/github.com/golang/protobuf/ptypes/any/any.proto
 delete mode 100644 vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
 delete mode 100755 vendor/github.com/golang/protobuf/ptypes/regen.sh
 delete mode 100644 vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
 delete mode 100644 vendor/github.com/golang/snappy/.gitignore
 delete mode 100644 vendor/github.com/golang/snappy/README
 delete mode 100644 vendor/github.com/gorilla/websocket/.gitignore
 delete mode 100644 vendor/github.com/gorilla/websocket/.travis.yml
 delete mode 100644 vendor/github.com/gorilla/websocket/README.md
 delete mode 100644 vendor/github.com/imdario/mergo/.gitignore
 delete mode 100644 vendor/github.com/imdario/mergo/.travis.yml
 delete mode 100644 vendor/github.com/imdario/mergo/CODE_OF_CONDUCT.md
 delete mode 100644 vendor/github.com/imdario/mergo/README.md
 delete mode 100644 vendor/github.com/inconshreveable/mousetrap/README.md
 delete mode 100644 vendor/github.com/jawher/mow.cli/.gitignore
 delete mode 100644 vendor/github.com/jawher/mow.cli/.travis.yml
 delete mode 100644 vendor/github.com/jawher/mow.cli/Makefile
 delete mode 100644 vendor/github.com/jawher/mow.cli/README.md
 delete mode 100644 vendor/github.com/jmhodges/levigo/.gitignore
 delete mode 100644 vendor/github.com/jmhodges/levigo/README.md
 delete mode 100644 vendor/github.com/kr/logfmt/.gitignore
 delete mode 100644 vendor/github.com/kr/logfmt/Readme
 delete mode 100644 vendor/github.com/mattn/go-isatty/.travis.yml
 delete mode 100644 vendor/github.com/mattn/go-isatty/README.md
 delete mode 100644 vendor/github.com/pkg/errors/.gitignore
 delete mode 100644 vendor/github.com/pkg/errors/.travis.yml
 delete mode 100644 vendor/github.com/pkg/errors/README.md
 delete mode 100644 vendor/github.com/pkg/errors/appveyor.yml
 delete mode 100644 vendor/github.com/rcrowley/go-metrics/.gitignore
 delete mode 100644 vendor/github.com/rcrowley/go-metrics/.travis.yml
 delete mode 100644 vendor/github.com/rcrowley/go-metrics/README.md
 delete mode 100644 vendor/github.com/rcrowley/go-metrics/memory.md
 delete mode 100755 vendor/github.com/rcrowley/go-metrics/validate.sh
 delete mode 100644 vendor/github.com/spf13/cobra/.gitignore
 delete mode 100644 vendor/github.com/spf13/cobra/.mailmap
 delete mode 100644 vendor/github.com/spf13/cobra/.travis.yml
 delete mode 100644 vendor/github.com/spf13/cobra/README.md
 delete mode 100644 vendor/github.com/spf13/cobra/bash_completions.md
 delete mode 100644 vendor/github.com/spf13/pflag/.gitignore
 delete mode 100644 vendor/github.com/spf13/pflag/.travis.yml
 delete mode 100644 vendor/github.com/spf13/pflag/README.md
 delete mode 100644 vendor/github.com/streadway/simpleuuid/.travis.yml
 delete mode 100644 vendor/github.com/streadway/simpleuuid/README.md
 delete mode 100644 vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl
 delete mode 100644 vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl
 delete mode 100644 vendor/github.com/stretchr/testify/require/require.go.tmpl
 delete mode 100644 vendor/github.com/stretchr/testify/require/require_forward.go.tmpl
 delete mode 100644 vendor/github.com/tendermint/abci/example/dummy/README.md
 delete mode 100644 vendor/github.com/tendermint/abci/types/types.proto
 delete mode 100644 vendor/github.com/tendermint/go-crypto/.gitignore
 delete mode 100644 vendor/github.com/tendermint/go-crypto/CHANGELOG.md
 delete mode 100644 vendor/github.com/tendermint/go-crypto/Makefile
 delete mode 100644 vendor/github.com/tendermint/go-crypto/README.md
 delete mode 100644 vendor/github.com/tendermint/go-crypto/circle.yml
 delete mode 100644 vendor/github.com/tendermint/go-crypto/glide.lock
 delete mode 100644 vendor/github.com/tendermint/go-crypto/glide.yaml
 delete mode 100644 vendor/github.com/tendermint/go-wire/.gitignore
 delete mode 100644 vendor/github.com/tendermint/go-wire/CHANGELOG.md
 delete mode 100644 vendor/github.com/tendermint/go-wire/Makefile
 delete mode 100644 vendor/github.com/tendermint/go-wire/README.md
 delete mode 100644 vendor/github.com/tendermint/go-wire/circle.yml
 delete mode 100644 vendor/github.com/tendermint/go-wire/data/Makefile
 delete mode 100644 vendor/github.com/tendermint/go-wire/data/README.md
 delete mode 100644 vendor/github.com/tendermint/go-wire/glide.lock
 delete mode 100644 vendor/github.com/tendermint/go-wire/glide.yaml
 delete mode 100644 vendor/github.com/tendermint/iavl/.gitignore
 delete mode 100644 vendor/github.com/tendermint/iavl/Makefile
 delete mode 100644 vendor/github.com/tendermint/iavl/PERFORMANCE.md
 delete mode 100644 vendor/github.com/tendermint/iavl/POEM
 delete mode 100644 vendor/github.com/tendermint/iavl/README.md
 delete mode 100644 vendor/github.com/tendermint/iavl/circle.yml
 delete mode 100644 vendor/github.com/tendermint/iavl/glide.lock
 delete mode 100644 vendor/github.com/tendermint/iavl/glide.yaml
 delete mode 100644 vendor/github.com/tendermint/merkleeyes/iavl/PERFORMANCE.md
 delete mode 100644 vendor/github.com/tendermint/merkleeyes/iavl/README.md
 delete mode 100644 vendor/github.com/tendermint/merkleeyes/iavl/circle.yml
 delete mode 100644 vendor/github.com/tendermint/tendermint/consensus/README.md
 delete mode 100644 vendor/github.com/tendermint/tendermint/p2p/CHANGELOG.md
 delete mode 100644 vendor/github.com/tendermint/tendermint/p2p/Dockerfile
 delete mode 100644 vendor/github.com/tendermint/tendermint/p2p/README.md
 delete mode 100644 vendor/github.com/tendermint/tendermint/rpc/core/README.md
 delete mode 100644 vendor/github.com/tendermint/tendermint/rpc/core/doc_template.txt
 delete mode 100644 vendor/github.com/tendermint/tendermint/rpc/grpc/compile.sh
 delete mode 100644 vendor/github.com/tendermint/tendermint/rpc/grpc/types.proto
 delete mode 100644 vendor/github.com/tendermint/tmlibs/autofile/README.md
 delete mode 100644 vendor/github.com/tendermint/tmlibs/db/README.md
 delete mode 100644 vendor/github.com/tendermint/tmlibs/flowrate/README.md
 delete mode 100644 vendor/github.com/tendermint/tmlibs/merkle/README.md
 delete mode 100644 vendor/github.com/tendermint/tmlibs/pubsub/query/Makefile
 delete mode 100644 vendor/github.com/tendermint/tmlibs/pubsub/query/query.peg
 delete mode 100644 vendor/github.com/tmthrgd/go-hex/.travis.yml
 delete mode 100644 vendor/github.com/tmthrgd/go-hex/README.md
 delete mode 100644 vendor/github.com/tommy351/gin-cors/.gitignore
 delete mode 100644 vendor/github.com/tommy351/gin-cors/.travis.yml
 delete mode 100644 vendor/github.com/tommy351/gin-cors/README.md
 delete mode 100644 vendor/github.com/ugorji/go/codec/README.md
 delete mode 100644 vendor/github.com/ugorji/go/codec/fast-path.go.tmpl
 delete mode 100644 vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl
 delete mode 100644 vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl
 delete mode 100644 vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl
 delete mode 100644 vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl
 delete mode 100644 vendor/github.com/ugorji/go/codec/mammoth2-test.go.tmpl
 delete mode 100644 vendor/github.com/ugorji/go/codec/test-cbor-goldens.json
 delete mode 100755 vendor/github.com/ugorji/go/codec/test.py
 delete mode 100644 vendor/golang.org/x/net/http2/.gitignore
 delete mode 100644 vendor/golang.org/x/net/http2/Dockerfile
 delete mode 100644 vendor/golang.org/x/net/http2/Makefile
 delete mode 100644 vendor/golang.org/x/net/http2/README
 delete mode 100644 vendor/golang.org/x/sys/unix/.gitignore
 delete mode 100644 vendor/golang.org/x/sys/unix/README.md
 delete mode 100755 vendor/golang.org/x/sys/unix/mkall.sh
 delete mode 100755 vendor/golang.org/x/sys/unix/mkerrors.sh
 delete mode 100755 vendor/golang.org/x/sys/unix/mksyscall.pl
 delete mode 100755 vendor/golang.org/x/sys/unix/mksyscall_solaris.pl
 delete mode 100755 vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl
 delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_darwin.pl
 delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl
 delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl
 delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
 delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl
 delete mode 100644 vendor/golang.org/x/text/language/Makefile
 delete mode 100644 vendor/google.golang.org/grpc/.please-update
 delete mode 100644 vendor/google.golang.org/grpc/.travis.yml
 delete mode 100644 vendor/google.golang.org/grpc/CONTRIBUTING.md
 delete mode 100644 vendor/google.golang.org/grpc/Makefile
 delete mode 100644 vendor/google.golang.org/grpc/README.md
 delete mode 100755 vendor/google.golang.org/grpc/codegen.sh
 delete mode 100644 vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.proto
 delete mode 100755 vendor/google.golang.org/grpc/vet.sh
 delete mode 100644 vendor/gopkg.in/fatih/set.v0/.travis.yml
 delete mode 100644 vendor/gopkg.in/fatih/set.v0/README.md
 delete mode 100644 vendor/gopkg.in/go-playground/validator.v8/.gitignore
 delete mode 100644 vendor/gopkg.in/go-playground/validator.v8/README.md
 delete mode 100644 vendor/gopkg.in/go-playground/validator.v8/logo.png
 delete mode 100644 vendor/gopkg.in/go-playground/validator.v9/.gitignore
 delete mode 100644 vendor/gopkg.in/go-playground/validator.v9/README.md
 delete mode 100644 vendor/gopkg.in/go-playground/validator.v9/logo.png
 delete mode 100644 vendor/gopkg.in/tylerb/graceful.v1/.gitignore
 delete mode 100644 vendor/gopkg.in/tylerb/graceful.v1/.travis.yml
 delete mode 100644 vendor/gopkg.in/tylerb/graceful.v1/README.md
 delete mode 100644 vendor/gopkg.in/yaml.v2/.travis.yml
 delete mode 100644 vendor/gopkg.in/yaml.v2/README.md

diff --git a/Gopkg.toml b/Gopkg.toml
index 084ceb6c..c74fe5fc 100644
--- a/Gopkg.toml
+++ b/Gopkg.toml
@@ -1,29 +1,7 @@
-# Gopkg.toml example
-#
-# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
-# for detailed Gopkg.toml documentation.
-#
-# required = ["github.com/user/thing/cmd/thing"]
-# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
-#
-# [[constraint]]
-#   name = "github.com/user/project"
-#   version = "1.0.0"
-#
-# [[constraint]]
-#   name = "github.com/user/project2"
-#   branch = "dev"
-#   source = "github.com/myfork/project2"
-#
-# [[override]]
-#   name = "github.com/x/y"
-#   version = "2.4.0"
-#
-# [prune]
-#   non-go = false
-#   go-tests = true
-#   unused-packages = true
-
+[prune]
+  go-tests = true
+  unused-packages = true
+  non-go = true
 
 [[constraint]]
   name = "github.com/BurntSushi/toml"
@@ -124,7 +102,3 @@
 [[constraint]]
   name = "gopkg.in/tylerb/graceful.v1"
   version = "1.2.15"
-
-[prune]
-  go-tests = true
-  unused-packages = true
diff --git a/consensus/tendermint/config.go b/consensus/tendermint/config.go
index 0b4355cd..274dec1a 100644
--- a/consensus/tendermint/config.go
+++ b/consensus/tendermint/config.go
@@ -31,6 +31,7 @@ func (btc *BurrowTendermintConfig) TendermintConfig() *tm_config.Config {
 		// minimal
 		conf.P2P.Seeds = btc.Seeds
 		conf.P2P.ListenAddress = btc.ListenAddress
+		conf.P2P.AddrBook = path.Join(btc.TendermintRoot, conf.Consensus.WalPath)
 		conf.Moniker = btc.Moniker
 		conf.DBPath = path.Join(btc.TendermintRoot, conf.DBPath)
 		conf.Mempool.WalPath = path.Join(btc.TendermintRoot, conf.Mempool.WalPath)
diff --git a/rpc/tm/integration/websocket_helpers.go b/rpc/tm/integration/websocket_helpers.go
index c2c2b1bf..a69cf9a6 100644
--- a/rpc/tm/integration/websocket_helpers.go
+++ b/rpc/tm/integration/websocket_helpers.go
@@ -230,7 +230,7 @@ func unmarshalValidateSend(amt uint64, toAddr acm.Address) resultEventChecker {
 	return func(eventID string, resultEvent *rpc.ResultEvent) (bool, error) {
 		data := resultEvent.EventDataTx
 		if data == nil {
-			return true, fmt.Errorf("event data %s is not EventDataTx", resultEvent)
+			return true, fmt.Errorf("event data %v is not EventDataTx", resultEvent)
 		}
 		if data.Exception != "" {
 			return true, fmt.Errorf(data.Exception)
@@ -238,14 +238,14 @@ func unmarshalValidateSend(amt uint64, toAddr acm.Address) resultEventChecker {
 		tx := data.Tx.(*txs.SendTx)
 		if tx.Inputs[0].Address != privateAccounts[0].Address() {
 			return true, fmt.Errorf("senders do not match up! Got %s, expected %s", tx.Inputs[0].Address,
-				privateAccounts[0].Address)
+				privateAccounts[0].Address())
 		}
 		if tx.Inputs[0].Amount != amt {
 			return true, fmt.Errorf("amt does not match up! Got %d, expected %d", tx.Inputs[0].Amount, amt)
 		}
 		if tx.Outputs[0].Address != toAddr {
 			return true, fmt.Errorf("receivers do not match up! Got %s, expected %s", tx.Outputs[0].Address,
-				privateAccounts[0].Address)
+				privateAccounts[0].Address())
 		}
 		return true, nil
 	}
@@ -255,23 +255,23 @@ func unmarshalValidateTx(amt uint64, returnCode []byte) resultEventChecker {
 	return func(eventID string, resultEvent *rpc.ResultEvent) (bool, error) {
 		data := resultEvent.EventDataTx
 		if data == nil {
-			return true, fmt.Errorf("event data %s is not EventDataTx", resultEvent)
+			return true, fmt.Errorf("event data %v is not EventDataTx", *resultEvent)
 		}
 		if data.Exception != "" {
 			return true, fmt.Errorf(data.Exception)
 		}
 		tx := data.Tx.(*txs.CallTx)
 		if tx.Input.Address != privateAccounts[0].Address() {
-			return true, fmt.Errorf("Senders do not match up! Got %x, expected %x",
-				tx.Input.Address, privateAccounts[0].Address)
+			return true, fmt.Errorf("senders do not match up! Got %s, expected %s",
+				tx.Input.Address, privateAccounts[0].Address())
 		}
 		if tx.Input.Amount != amt {
-			return true, fmt.Errorf("Amt does not match up! Got %d, expected %d",
+			return true, fmt.Errorf("amount does not match up! Got %d, expected %d",
 				tx.Input.Amount, amt)
 		}
 		ret := data.Return
 		if !bytes.Equal(ret, returnCode) {
-			return true, fmt.Errorf("Tx did not return correctly. Got %x, expected %x", ret, returnCode)
+			return true, fmt.Errorf("tx did not return correctly. Got %x, expected %x", ret, returnCode)
 		}
 		return true, nil
 	}
@@ -281,7 +281,7 @@ func unmarshalValidateCall(origin acm.Address, returnCode []byte, txid *[]byte)
 	return func(eventID string, resultEvent *rpc.ResultEvent) (bool, error) {
 		data := resultEvent.EventDataCall
 		if data == nil {
-			return true, fmt.Errorf("event data %s is not EventDataTx", resultEvent)
+			return true, fmt.Errorf("event data %v is not EventDataTx", *resultEvent)
 		}
 		if data.Exception != "" {
 			return true, fmt.Errorf(data.Exception)
diff --git a/vendor/github.com/BurntSushi/toml/.gitignore b/vendor/github.com/BurntSushi/toml/.gitignore
deleted file mode 100644
index 0cd38003..00000000
--- a/vendor/github.com/BurntSushi/toml/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-TAGS
-tags
-.*.swp
-tomlcheck/tomlcheck
-toml.test
diff --git a/vendor/github.com/BurntSushi/toml/.travis.yml b/vendor/github.com/BurntSushi/toml/.travis.yml
deleted file mode 100644
index 8b8afc4f..00000000
--- a/vendor/github.com/BurntSushi/toml/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: go
-go:
-  - 1.1
-  - 1.2
-  - 1.3
-  - 1.4
-  - 1.5
-  - 1.6
-  - tip
-install:
-  - go install ./...
-  - go get github.com/BurntSushi/toml-test
-script:
-  - export PATH="$PATH:$HOME/gopath/bin"
-  - make test
diff --git a/vendor/github.com/BurntSushi/toml/COMPATIBLE b/vendor/github.com/BurntSushi/toml/COMPATIBLE
deleted file mode 100644
index 6efcfd0c..00000000
--- a/vendor/github.com/BurntSushi/toml/COMPATIBLE
+++ /dev/null
@@ -1,3 +0,0 @@
-Compatible with TOML version
-[v0.4.0](https://github.com/toml-lang/toml/blob/v0.4.0/versions/en/toml-v0.4.0.md)
-
diff --git a/vendor/github.com/BurntSushi/toml/Makefile b/vendor/github.com/BurntSushi/toml/Makefile
deleted file mode 100644
index 3600848d..00000000
--- a/vendor/github.com/BurntSushi/toml/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-install:
-	go install ./...
-
-test: install
-	go test -v
-	toml-test toml-test-decoder
-	toml-test -encoder toml-test-encoder
-
-fmt:
-	gofmt -w *.go */*.go
-	colcheck *.go */*.go
-
-tags:
-	find ./ -name '*.go' -print0 | xargs -0 gotags > TAGS
-
-push:
-	git push origin master
-	git push github master
-
diff --git a/vendor/github.com/BurntSushi/toml/README.md b/vendor/github.com/BurntSushi/toml/README.md
deleted file mode 100644
index 7c1b37ec..00000000
--- a/vendor/github.com/BurntSushi/toml/README.md
+++ /dev/null
@@ -1,218 +0,0 @@
-## TOML parser and encoder for Go with reflection
-
-TOML stands for Tom's Obvious, Minimal Language. This Go package provides a
-reflection interface similar to Go's standard library `json` and `xml`
-packages. This package also supports the `encoding.TextUnmarshaler` and
-`encoding.TextMarshaler` interfaces so that you can define custom data
-representations. (There is an example of this below.)
-
-Spec: https://github.com/toml-lang/toml
-
-Compatible with TOML version
-[v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md)
-
-Documentation: https://godoc.org/github.com/BurntSushi/toml
-
-Installation:
-
-```bash
-go get github.com/BurntSushi/toml
-```
-
-Try the toml validator:
-
-```bash
-go get github.com/BurntSushi/toml/cmd/tomlv
-tomlv some-toml-file.toml
-```
-
-[![Build Status](https://travis-ci.org/BurntSushi/toml.svg?branch=master)](https://travis-ci.org/BurntSushi/toml) [![GoDoc](https://godoc.org/github.com/BurntSushi/toml?status.svg)](https://godoc.org/github.com/BurntSushi/toml)
-
-### Testing
-
-This package passes all tests in
-[toml-test](https://github.com/BurntSushi/toml-test) for both the decoder
-and the encoder.
-
-### Examples
-
-This package works similarly to how the Go standard library handles `XML`
-and `JSON`. Namely, data is loaded into Go values via reflection.
-
-For the simplest example, consider some TOML file as just a list of keys
-and values:
-
-```toml
-Age = 25
-Cats = [ "Cauchy", "Plato" ]
-Pi = 3.14
-Perfection = [ 6, 28, 496, 8128 ]
-DOB = 1987-07-05T05:45:00Z
-```
-
-Which could be defined in Go as:
-
-```go
-type Config struct {
-  Age int
-  Cats []string
-  Pi float64
-  Perfection []int
-  DOB time.Time // requires `import time`
-}
-```
-
-And then decoded with:
-
-```go
-var conf Config
-if _, err := toml.Decode(tomlData, &conf); err != nil {
-  // handle error
-}
-```
-
-You can also use struct tags if your struct field name doesn't map to a TOML
-key value directly:
-
-```toml
-some_key_NAME = "wat"
-```
-
-```go
-type TOML struct {
-  ObscureKey string `toml:"some_key_NAME"`
-}
-```
-
-### Using the `encoding.TextUnmarshaler` interface
-
-Here's an example that automatically parses duration strings into
-`time.Duration` values:
-
-```toml
-[[song]]
-name = "Thunder Road"
-duration = "4m49s"
-
-[[song]]
-name = "Stairway to Heaven"
-duration = "8m03s"
-```
-
-Which can be decoded with:
-
-```go
-type song struct {
-  Name     string
-  Duration duration
-}
-type songs struct {
-  Song []song
-}
-var favorites songs
-if _, err := toml.Decode(blob, &favorites); err != nil {
-  log.Fatal(err)
-}
-
-for _, s := range favorites.Song {
-  fmt.Printf("%s (%s)\n", s.Name, s.Duration)
-}
-```
-
-And you'll also need a `duration` type that satisfies the
-`encoding.TextUnmarshaler` interface:
-
-```go
-type duration struct {
-	time.Duration
-}
-
-func (d *duration) UnmarshalText(text []byte) error {
-	var err error
-	d.Duration, err = time.ParseDuration(string(text))
-	return err
-}
-```
-
-### More complex usage
-
-Here's an example of how to load the example from the official spec page:
-
-```toml
-# This is a TOML document. Boom.
-
-title = "TOML Example"
-
-[owner]
-name = "Tom Preston-Werner"
-organization = "GitHub"
-bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
-dob = 1979-05-27T07:32:00Z # First class dates? Why not?
-
-[database]
-server = "192.168.1.1"
-ports = [ 8001, 8001, 8002 ]
-connection_max = 5000
-enabled = true
-
-[servers]
-
-  # You can indent as you please. Tabs or spaces. TOML don't care.
-  [servers.alpha]
-  ip = "10.0.0.1"
-  dc = "eqdc10"
-
-  [servers.beta]
-  ip = "10.0.0.2"
-  dc = "eqdc10"
-
-[clients]
-data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it
-
-# Line breaks are OK when inside arrays
-hosts = [
-  "alpha",
-  "omega"
-]
-```
-
-And the corresponding Go types are:
-
-```go
-type tomlConfig struct {
-	Title string
-	Owner ownerInfo
-	DB database `toml:"database"`
-	Servers map[string]server
-	Clients clients
-}
-
-type ownerInfo struct {
-	Name string
-	Org string `toml:"organization"`
-	Bio string
-	DOB time.Time
-}
-
-type database struct {
-	Server string
-	Ports []int
-	ConnMax int `toml:"connection_max"`
-	Enabled bool
-}
-
-type server struct {
-	IP string
-	DC string
-}
-
-type clients struct {
-	Data [][]interface{}
-	Hosts []string
-}
-```
-
-Note that a case insensitive match will be tried if an exact match can't be
-found.
-
-A working example of the above can be found in `_examples/example.{go,toml}`.
diff --git a/vendor/github.com/BurntSushi/toml/session.vim b/vendor/github.com/BurntSushi/toml/session.vim
deleted file mode 100644
index 562164be..00000000
--- a/vendor/github.com/BurntSushi/toml/session.vim
+++ /dev/null
@@ -1 +0,0 @@
-au BufWritePost *.go silent!make tags > /dev/null 2>&1
diff --git a/vendor/github.com/btcsuite/btcd/btcec/README.md b/vendor/github.com/btcsuite/btcd/btcec/README.md
deleted file mode 100644
index 130bd200..00000000
--- a/vendor/github.com/btcsuite/btcd/btcec/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-btcec
-=====
-
-[![Build Status](https://travis-ci.org/btcsuite/btcd.png?branch=master)](https://travis-ci.org/btcsuite/btcec)
-[![ISC License](http://img.shields.io/badge/license-ISC-blue.svg)](http://copyfree.org)
-[![GoDoc](https://godoc.org/github.com/btcsuite/btcd/btcec?status.png)](http://godoc.org/github.com/btcsuite/btcd/btcec)
-
-Package btcec implements elliptic curve cryptography needed for working with
-Bitcoin (secp256k1 only for now). It is designed so that it may be used with the
-standard crypto/ecdsa packages provided with go.  A comprehensive suite of test
-is provided to ensure proper functionality.  Package btcec was originally based
-on work from ThePiachu which is licensed under the same terms as Go, but it has
-signficantly diverged since then.  The btcsuite developers original is licensed
-under the liberal ISC license.
-
-Although this package was primarily written for btcd, it has intentionally been
-designed so it can be used as a standalone package for any projects needing to
-use secp256k1 elliptic curve cryptography.
-
-## Installation and Updating
-
-```bash
-$ go get -u github.com/btcsuite/btcd/btcec
-```
-
-## Examples
-
-* [Sign Message](http://godoc.org/github.com/btcsuite/btcd/btcec#example-package--SignMessage)  
-  Demonstrates signing a message with a secp256k1 private key that is first
-  parsed form raw bytes and serializing the generated signature.
-
-* [Verify Signature](http://godoc.org/github.com/btcsuite/btcd/btcec#example-package--VerifySignature)  
-  Demonstrates verifying a secp256k1 signature against a public key that is
-  first parsed from raw bytes.  The signature is also parsed from raw bytes.
-
-* [Encryption](http://godoc.org/github.com/btcsuite/btcd/btcec#example-package--EncryptMessage)
-  Demonstrates encrypting a message for a public key that is first parsed from
-  raw bytes, then decrypting it using the corresponding private key.
-
-* [Decryption](http://godoc.org/github.com/btcsuite/btcd/btcec#example-package--DecryptMessage)
-  Demonstrates decrypting a message using a private key that is first parsed
-  from raw bytes.
-
-## GPG Verification Key
-
-All official release tags are signed by Conformal so users can ensure the code
-has not been tampered with and is coming from the btcsuite developers.  To
-verify the signature perform the following:
-
-- Download the public key from the Conformal website at
-  https://opensource.conformal.com/GIT-GPG-KEY-conformal.txt
-
-- Import the public key into your GPG keyring:
-  ```bash
-  gpg --import GIT-GPG-KEY-conformal.txt
-  ```
-
-- Verify the release tag with the following command where `TAG_NAME` is a
-  placeholder for the specific tag:
-  ```bash
-  git tag -v TAG_NAME
-  ```
-
-## License
-
-Package btcec is licensed under the [copyfree](http://copyfree.org) ISC License
-except for btcec.go and btcec_test.go which is under the same license as Go.
-
diff --git a/vendor/github.com/cep21/xdgbasedir/.gitignore b/vendor/github.com/cep21/xdgbasedir/.gitignore
deleted file mode 100644
index cf5dae56..00000000
--- a/vendor/github.com/cep21/xdgbasedir/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/*.iml
\ No newline at end of file
diff --git a/vendor/github.com/cep21/xdgbasedir/README.md b/vendor/github.com/cep21/xdgbasedir/README.md
deleted file mode 100644
index 80ef2ad7..00000000
--- a/vendor/github.com/cep21/xdgbasedir/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Simple helper functions in go to get user specific configuration/data/cache
-files based upon XDG Base Directory Specification at http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
diff --git a/vendor/github.com/cep21/xdgbasedir/goverify.json b/vendor/github.com/cep21/xdgbasedir/goverify.json
deleted file mode 100644
index 51de5bb1..00000000
--- a/vendor/github.com/cep21/xdgbasedir/goverify.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "ignoreDir": ["Godeps"],
-  "checks": [
-    {
-      "macro": "goimport"
-    }, {
-      "macro": "gofmt"
-    }, {
-      "macro": "vet"
-    }, {
-      "macro": "golint"
-    }, {
-      "macro": "gocyclo"
-    }, {
-      "macro": "go-cover",
-      "validate": {
-        "type": "cover",
-        "coverage": 50
-      }
-    }
-  ]
-}
diff --git a/vendor/github.com/eapache/channels/.gitignore b/vendor/github.com/eapache/channels/.gitignore
deleted file mode 100644
index 00268614..00000000
--- a/vendor/github.com/eapache/channels/.gitignore
+++ /dev/null
@@ -1,22 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
diff --git a/vendor/github.com/eapache/channels/.travis.yml b/vendor/github.com/eapache/channels/.travis.yml
deleted file mode 100644
index b072a4c8..00000000
--- a/vendor/github.com/eapache/channels/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: go
-sudo: false
-
-script: go test -v -race -timeout 10s ./...
-
-go:
-    - 1.1
-    - 1.2
-    - 1.3
-    - 1.4
-    - 1.5
diff --git a/vendor/github.com/eapache/channels/CHANGELOG.md b/vendor/github.com/eapache/channels/CHANGELOG.md
deleted file mode 100644
index 63825cd2..00000000
--- a/vendor/github.com/eapache/channels/CHANGELOG.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Changelog
-
-#### Version 1.1.0 (2015-11-22)
-
-Bug Fixes:
- - The `Len()` and `Cap()` methods on several implementations were racy
-   ([#18](https://github.com/eapache/channels/issues/18)).
-
-Note: Fixing the above issue led to a fairly substantial performance hit
-(anywhere from 10-25% in benchmarks depending on use case) and involved fairly
-major refactoring, which is why this is being released as v1.1.0 instead
-of v1.0.1.
-
-#### Version 1.0.0 (2015-01-24)
-
-Version 1.0.0 is the first tagged release. All core functionality was available
-at this point.
diff --git a/vendor/github.com/eapache/channels/README.md b/vendor/github.com/eapache/channels/README.md
deleted file mode 100644
index aab2a53a..00000000
--- a/vendor/github.com/eapache/channels/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-channels
-========
-
-[![Build Status](https://travis-ci.org/eapache/channels.svg?branch=master)](https://travis-ci.org/eapache/channels)
-[![GoDoc](https://godoc.org/github.com/eapache/channels?status.png)](https://godoc.org/github.com/eapache/channels)
-[![Code of Conduct](https://img.shields.io/badge/code%20of%20conduct-active-blue.svg)](https://eapache.github.io/conduct.html)
-
-A collection of helper functions and special types for working with and
-extending [Go](https://golang.org/)'s existing channels. Due to limitations
-of Go's type system, importing this library directly is often not practical for
-production code. It serves equally well, however, as a reference guide and
-template for implementing many common idioms; if you use it in this way I would
-appreciate the inclusion of some sort of credit in the resulting code.
-
-See https://godoc.org/github.com/eapache/channels for full documentation or
-https://gopkg.in/eapache/channels.v1 for a versioned import path.
-
-Requires Go version 1.1 or later, as certain necessary elements of the `reflect`
-package were not present in 1.0.
-
-Most of the buffered channel types in this package are backed by a very fast
-queue implementation that used to be built into this package but has now been
-extracted into its own package at https://github.com/eapache/queue.
-
-*Note:* Several types in this package provide so-called "infinite" buffers. Be
-very careful using these, as no buffer is truly infinite. If such a buffer
-grows too large your program will run out of memory and crash. Caveat emptor.
diff --git a/vendor/github.com/eapache/queue/.gitignore b/vendor/github.com/eapache/queue/.gitignore
deleted file mode 100644
index 83656241..00000000
--- a/vendor/github.com/eapache/queue/.gitignore
+++ /dev/null
@@ -1,23 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
diff --git a/vendor/github.com/eapache/queue/.travis.yml b/vendor/github.com/eapache/queue/.travis.yml
deleted file mode 100644
index 235a40a4..00000000
--- a/vendor/github.com/eapache/queue/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: go
-sudo: false
-
-go:
-  - 1.2
-  - 1.3
-  - 1.4
diff --git a/vendor/github.com/eapache/queue/README.md b/vendor/github.com/eapache/queue/README.md
deleted file mode 100644
index 8e782335..00000000
--- a/vendor/github.com/eapache/queue/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-Queue
-=====
-
-[![Build Status](https://travis-ci.org/eapache/queue.svg)](https://travis-ci.org/eapache/queue)
-[![GoDoc](https://godoc.org/github.com/eapache/queue?status.png)](https://godoc.org/github.com/eapache/queue)
-[![Code of Conduct](https://img.shields.io/badge/code%20of%20conduct-active-blue.svg)](https://eapache.github.io/conduct.html)
-
-A fast Golang queue using a ring-buffer, based on the version suggested by Dariusz Górecki.
-Using this instead of other, simpler, queue implementations (slice+append or linked list) provides
-substantial memory and time benefits, and fewer GC pauses.
-
-The queue implemented here is as fast as it is in part because it is *not* thread-safe.
-
-Follows semantic versioning using https://gopkg.in/ - import from
-[`gopkg.in/eapache/queue.v1`](https://gopkg.in/eapache/queue.v1)
-for guaranteed API stability.
diff --git a/vendor/github.com/ebuchman/fail-test/README.md b/vendor/github.com/ebuchman/fail-test/README.md
deleted file mode 100644
index e2d87bbb..00000000
--- a/vendor/github.com/ebuchman/fail-test/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# fail-test
\ No newline at end of file
diff --git a/vendor/github.com/gin-contrib/sse/.travis.yml b/vendor/github.com/gin-contrib/sse/.travis.yml
deleted file mode 100644
index a556ac09..00000000
--- a/vendor/github.com/gin-contrib/sse/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: go
-sudo: false
-go:
-  - 1.6.4
-  - 1.7.4
-  - tip
-
-git:
-  depth: 3
-
-script:
-  - go test -v -covermode=count -coverprofile=coverage.out
-
-after_success:
-  - bash <(curl -s https://codecov.io/bash)
\ No newline at end of file
diff --git a/vendor/github.com/gin-contrib/sse/README.md b/vendor/github.com/gin-contrib/sse/README.md
deleted file mode 100644
index c9c49cf9..00000000
--- a/vendor/github.com/gin-contrib/sse/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Server-Sent Events
-
-[![GoDoc](https://godoc.org/github.com/gin-contrib/sse?status.svg)](https://godoc.org/github.com/gin-contrib/sse)
-[![Build Status](https://travis-ci.org/gin-contrib/sse.svg)](https://travis-ci.org/gin-contrib/sse)
-[![codecov](https://codecov.io/gh/gin-contrib/sse/branch/master/graph/badge.svg)](https://codecov.io/gh/gin-contrib/sse)
-[![Go Report Card](https://goreportcard.com/badge/github.com/gin-contrib/sse)](https://goreportcard.com/report/github.com/gin-contrib/sse)
-
-Server-sent events (SSE) is a technology where a browser receives automatic updates from a server via HTTP connection. The Server-Sent Events EventSource API is [standardized as part of HTML5[1] by the W3C](http://www.w3.org/TR/2009/WD-eventsource-20091029/).
-
-- [Read this great SSE introduction by the HTML5Rocks guys](http://www.html5rocks.com/en/tutorials/eventsource/basics/)
-- [Browser support](http://caniuse.com/#feat=eventsource)
-
-## Sample code
-
-```go
-import "github.com/gin-contrib/sse"
-
-func httpHandler(w http.ResponseWriter, req *http.Request) {
-	// data can be a primitive like a string, an integer or a float
-	sse.Encode(w, sse.Event{
-		Event: "message",
-		Data:  "some data\nmore data",
-	})
-
-	// also a complex type, like a map, a struct or a slice
-	sse.Encode(w, sse.Event{
-		Id:    "124",
-		Event: "message",
-		Data: map[string]interface{}{
-			"user":    "manu",
-			"date":    time.Now().Unix(),
-			"content": "hi!",
-		},
-	})
-}
-```
-```
-event: message
-data: some data\\nmore data
-
-id: 124
-event: message
-data: {"content":"hi!","date":1431540810,"user":"manu"}
- 
-```
-
-## Content-Type
-
-```go
-fmt.Println(sse.ContentType)
-```
-```
-text/event-stream
-```
-
-## Decoding support
-
-There is a client-side implementation of SSE coming soon.
diff --git a/vendor/github.com/gin-gonic/gin/.gitignore b/vendor/github.com/gin-gonic/gin/.gitignore
deleted file mode 100644
index f3b636df..00000000
--- a/vendor/github.com/gin-gonic/gin/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-vendor/*
-!vendor/vendor.json
-coverage.out
-count.out
diff --git a/vendor/github.com/gin-gonic/gin/.travis.yml b/vendor/github.com/gin-gonic/gin/.travis.yml
deleted file mode 100644
index 6532a334..00000000
--- a/vendor/github.com/gin-gonic/gin/.travis.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-language: go
-sudo: false
-go:
-  - 1.6.x
-  - 1.7.x
-  - 1.8.x
-  - master
-
-git:
-  depth: 3
-
-install:
-  - make install
-
-script:
-  - make vet
-  - make fmt-check
-  - make embedmd
-  - make misspell-check
-  - make test
-
-after_success:
-  - bash <(curl -s https://codecov.io/bash)
-
-notifications:
-  webhooks:
-    urls:
-      - https://webhooks.gitter.im/e/7f95bf605c4d356372f4
-    on_success: change  # options: [always|never|change] default: always
-    on_failure: always  # options: [always|never|change] default: always
-    on_start: false     # default: false
diff --git a/vendor/github.com/gin-gonic/gin/BENCHMARKS.md b/vendor/github.com/gin-gonic/gin/BENCHMARKS.md
deleted file mode 100644
index 6efe3ca4..00000000
--- a/vendor/github.com/gin-gonic/gin/BENCHMARKS.md
+++ /dev/null
@@ -1,298 +0,0 @@
-**Machine:** intel i7 ivy bridge quad-core. 8GB RAM.  
-**Date:** June 4th, 2015  
-[https://github.com/gin-gonic/go-http-routing-benchmark](https://github.com/gin-gonic/go-http-routing-benchmark)
-
-```
-BenchmarkAce_Param   5000000           372 ns/op          32 B/op          1 allocs/op
-BenchmarkBear_Param  1000000          1165 ns/op         424 B/op          5 allocs/op
-BenchmarkBeego_Param     1000000          2440 ns/op         720 B/op         10 allocs/op
-BenchmarkBone_Param  1000000          1067 ns/op         384 B/op          3 allocs/op
-BenchmarkDenco_Param     5000000           240 ns/op          32 B/op          1 allocs/op
-BenchmarkEcho_Param 10000000           130 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_Param  10000000           133 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_Param    1000000          1826 ns/op         656 B/op          9 allocs/op
-BenchmarkGoji_Param  2000000           957 ns/op         336 B/op          2 allocs/op
-BenchmarkGoJsonRest_Param    1000000          2021 ns/op         657 B/op         14 allocs/op
-BenchmarkGoRestful_Param      200000          8825 ns/op        2496 B/op         31 allocs/op
-BenchmarkGorillaMux_Param     500000          3340 ns/op         784 B/op          9 allocs/op
-BenchmarkHttpRouter_Param   10000000           152 ns/op          32 B/op          1 allocs/op
-BenchmarkHttpTreeMux_Param   2000000           717 ns/op         336 B/op          2 allocs/op
-BenchmarkKocha_Param     3000000           423 ns/op          56 B/op          3 allocs/op
-BenchmarkMacaron_Param   1000000          3410 ns/op        1104 B/op         11 allocs/op
-BenchmarkMartini_Param    200000          7101 ns/op        1152 B/op         12 allocs/op
-BenchmarkPat_Param   1000000          2040 ns/op         656 B/op         14 allocs/op
-BenchmarkPossum_Param    1000000          2048 ns/op         624 B/op          7 allocs/op
-BenchmarkR2router_Param  1000000          1144 ns/op         432 B/op          6 allocs/op
-BenchmarkRevel_Param      200000          6725 ns/op        1672 B/op         28 allocs/op
-BenchmarkRivet_Param     1000000          1121 ns/op         464 B/op          5 allocs/op
-BenchmarkTango_Param     1000000          1479 ns/op         256 B/op         10 allocs/op
-BenchmarkTigerTonic_Param    1000000          3393 ns/op         992 B/op         19 allocs/op
-BenchmarkTraffic_Param    300000          5525 ns/op        1984 B/op         23 allocs/op
-BenchmarkVulcan_Param    2000000           924 ns/op          98 B/op          3 allocs/op
-BenchmarkZeus_Param  1000000          1084 ns/op         368 B/op          3 allocs/op
-BenchmarkAce_Param5  3000000           614 ns/op         160 B/op          1 allocs/op
-BenchmarkBear_Param5     1000000          1617 ns/op         469 B/op          5 allocs/op
-BenchmarkBeego_Param5    1000000          3373 ns/op         992 B/op         13 allocs/op
-BenchmarkBone_Param5     1000000          1478 ns/op         432 B/op          3 allocs/op
-BenchmarkDenco_Param5    3000000           570 ns/op         160 B/op          1 allocs/op
-BenchmarkEcho_Param5     5000000           256 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_Param5 10000000           222 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_Param5   1000000          2789 ns/op         928 B/op         12 allocs/op
-BenchmarkGoji_Param5     1000000          1287 ns/op         336 B/op          2 allocs/op
-BenchmarkGoJsonRest_Param5   1000000          3670 ns/op        1105 B/op         17 allocs/op
-BenchmarkGoRestful_Param5     200000         10756 ns/op        2672 B/op         31 allocs/op
-BenchmarkGorillaMux_Param5    300000          5543 ns/op         912 B/op          9 allocs/op
-BenchmarkHttpRouter_Param5   5000000           403 ns/op         160 B/op          1 allocs/op
-BenchmarkHttpTreeMux_Param5  1000000          1089 ns/op         336 B/op          2 allocs/op
-BenchmarkKocha_Param5    1000000          1682 ns/op         440 B/op         10 allocs/op
-BenchmarkMacaron_Param5   300000          4596 ns/op        1376 B/op         14 allocs/op
-BenchmarkMartini_Param5   100000         15703 ns/op        1280 B/op         12 allocs/op
-BenchmarkPat_Param5   300000          5320 ns/op        1008 B/op         42 allocs/op
-BenchmarkPossum_Param5   1000000          2155 ns/op         624 B/op          7 allocs/op
-BenchmarkR2router_Param5     1000000          1559 ns/op         432 B/op          6 allocs/op
-BenchmarkRevel_Param5     200000          8184 ns/op        2024 B/op         35 allocs/op
-BenchmarkRivet_Param5    1000000          1914 ns/op         528 B/op          9 allocs/op
-BenchmarkTango_Param5    1000000          3280 ns/op         944 B/op         18 allocs/op
-BenchmarkTigerTonic_Param5    200000         11638 ns/op        2519 B/op         53 allocs/op
-BenchmarkTraffic_Param5   200000          8941 ns/op        2280 B/op         31 allocs/op
-BenchmarkVulcan_Param5   1000000          1279 ns/op          98 B/op          3 allocs/op
-BenchmarkZeus_Param5     1000000          1574 ns/op         416 B/op          3 allocs/op
-BenchmarkAce_Param20     1000000          1528 ns/op         640 B/op          1 allocs/op
-BenchmarkBear_Param20     300000          4906 ns/op        1633 B/op          5 allocs/op
-BenchmarkBeego_Param20    200000         10529 ns/op        3868 B/op         17 allocs/op
-BenchmarkBone_Param20     300000          7362 ns/op        2539 B/op          5 allocs/op
-BenchmarkDenco_Param20   1000000          1884 ns/op         640 B/op          1 allocs/op
-BenchmarkEcho_Param20    2000000           689 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_Param20     3000000           545 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_Param20   200000          9437 ns/op        3804 B/op         16 allocs/op
-BenchmarkGoji_Param20     500000          3987 ns/op        1246 B/op          2 allocs/op
-BenchmarkGoJsonRest_Param20   100000         12799 ns/op        4492 B/op         21 allocs/op
-BenchmarkGoRestful_Param20    100000         19451 ns/op        5244 B/op         33 allocs/op
-BenchmarkGorillaMux_Param20   100000         12456 ns/op        3275 B/op         11 allocs/op
-BenchmarkHttpRouter_Param20  1000000          1333 ns/op         640 B/op          1 allocs/op
-BenchmarkHttpTreeMux_Param20      300000          6490 ns/op        2187 B/op          4 allocs/op
-BenchmarkKocha_Param20    300000          5335 ns/op        1808 B/op         27 allocs/op
-BenchmarkMacaron_Param20      200000         11325 ns/op        4252 B/op         18 allocs/op
-BenchmarkMartini_Param20       20000         64419 ns/op        3644 B/op         14 allocs/op
-BenchmarkPat_Param20       50000         24672 ns/op        4888 B/op        151 allocs/op
-BenchmarkPossum_Param20  1000000          2085 ns/op         624 B/op          7 allocs/op
-BenchmarkR2router_Param20     300000          6809 ns/op        2283 B/op          8 allocs/op
-BenchmarkRevel_Param20    100000         16600 ns/op        5551 B/op         54 allocs/op
-BenchmarkRivet_Param20    200000          8428 ns/op        2620 B/op         26 allocs/op
-BenchmarkTango_Param20    100000         16302 ns/op        8224 B/op         48 allocs/op
-BenchmarkTigerTonic_Param20    30000         46828 ns/op       10538 B/op        178 allocs/op
-BenchmarkTraffic_Param20       50000         28871 ns/op        7998 B/op         66 allocs/op
-BenchmarkVulcan_Param20  1000000          2267 ns/op          98 B/op          3 allocs/op
-BenchmarkZeus_Param20     300000          6828 ns/op        2507 B/op          5 allocs/op
-BenchmarkAce_ParamWrite  3000000           502 ns/op          40 B/op          2 allocs/op
-BenchmarkBear_ParamWrite     1000000          1303 ns/op         424 B/op          5 allocs/op
-BenchmarkBeego_ParamWrite    1000000          2489 ns/op         728 B/op         11 allocs/op
-BenchmarkBone_ParamWrite     1000000          1181 ns/op         384 B/op          3 allocs/op
-BenchmarkDenco_ParamWrite    5000000           315 ns/op          32 B/op          1 allocs/op
-BenchmarkEcho_ParamWrite    10000000           237 ns/op           8 B/op          1 allocs/op
-BenchmarkGin_ParamWrite  5000000           336 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_ParamWrite   1000000          2079 ns/op         664 B/op         10 allocs/op
-BenchmarkGoji_ParamWrite     1000000          1092 ns/op         336 B/op          2 allocs/op
-BenchmarkGoJsonRest_ParamWrite   1000000          3329 ns/op        1136 B/op         19 allocs/op
-BenchmarkGoRestful_ParamWrite     200000          9273 ns/op        2504 B/op         32 allocs/op
-BenchmarkGorillaMux_ParamWrite    500000          3919 ns/op         792 B/op         10 allocs/op
-BenchmarkHttpRouter_ParamWrite  10000000           223 ns/op          32 B/op          1 allocs/op
-BenchmarkHttpTreeMux_ParamWrite  2000000           788 ns/op         336 B/op          2 allocs/op
-BenchmarkKocha_ParamWrite    3000000           549 ns/op          56 B/op          3 allocs/op
-BenchmarkMacaron_ParamWrite   500000          4558 ns/op        1216 B/op         16 allocs/op
-BenchmarkMartini_ParamWrite   200000          8850 ns/op        1256 B/op         16 allocs/op
-BenchmarkPat_ParamWrite   500000          3679 ns/op        1088 B/op         19 allocs/op
-BenchmarkPossum_ParamWrite   1000000          2114 ns/op         624 B/op          7 allocs/op
-BenchmarkR2router_ParamWrite     1000000          1320 ns/op         432 B/op          6 allocs/op
-BenchmarkRevel_ParamWrite     200000          8048 ns/op        2128 B/op         33 allocs/op
-BenchmarkRivet_ParamWrite    1000000          1393 ns/op         472 B/op          6 allocs/op
-BenchmarkTango_ParamWrite    2000000           819 ns/op         136 B/op          5 allocs/op
-BenchmarkTigerTonic_ParamWrite    300000          5860 ns/op        1440 B/op         25 allocs/op
-BenchmarkTraffic_ParamWrite   200000          7429 ns/op        2400 B/op         27 allocs/op
-BenchmarkVulcan_ParamWrite   2000000           972 ns/op          98 B/op          3 allocs/op
-BenchmarkZeus_ParamWrite     1000000          1226 ns/op         368 B/op          3 allocs/op
-BenchmarkAce_GithubStatic    5000000           294 ns/op           0 B/op          0 allocs/op
-BenchmarkBear_GithubStatic   3000000           575 ns/op          88 B/op          3 allocs/op
-BenchmarkBeego_GithubStatic  1000000          1561 ns/op         368 B/op          7 allocs/op
-BenchmarkBone_GithubStatic    200000         12301 ns/op        2880 B/op         60 allocs/op
-BenchmarkDenco_GithubStatic 20000000            74.6 ns/op         0 B/op          0 allocs/op
-BenchmarkEcho_GithubStatic  10000000           176 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_GithubStatic   10000000           159 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_GithubStatic     1000000          1116 ns/op         304 B/op          6 allocs/op
-BenchmarkGoji_GithubStatic   5000000           413 ns/op           0 B/op          0 allocs/op
-BenchmarkGoRestful_GithubStatic    30000         55200 ns/op        3520 B/op         36 allocs/op
-BenchmarkGoJsonRest_GithubStatic     1000000          1504 ns/op         337 B/op         12 allocs/op
-BenchmarkGorillaMux_GithubStatic      100000         23620 ns/op         464 B/op          8 allocs/op
-BenchmarkHttpRouter_GithubStatic    20000000            78.3 ns/op         0 B/op          0 allocs/op
-BenchmarkHttpTreeMux_GithubStatic   20000000            84.9 ns/op         0 B/op          0 allocs/op
-BenchmarkKocha_GithubStatic 20000000           111 ns/op           0 B/op          0 allocs/op
-BenchmarkMacaron_GithubStatic    1000000          2686 ns/op         752 B/op          8 allocs/op
-BenchmarkMartini_GithubStatic     100000         22244 ns/op         832 B/op         11 allocs/op
-BenchmarkPat_GithubStatic     100000         13278 ns/op        3648 B/op         76 allocs/op
-BenchmarkPossum_GithubStatic     1000000          1429 ns/op         480 B/op          4 allocs/op
-BenchmarkR2router_GithubStatic   2000000           726 ns/op         144 B/op          5 allocs/op
-BenchmarkRevel_GithubStatic   300000          6271 ns/op        1288 B/op         25 allocs/op
-BenchmarkRivet_GithubStatic  3000000           474 ns/op         112 B/op          2 allocs/op
-BenchmarkTango_GithubStatic  1000000          1842 ns/op         256 B/op         10 allocs/op
-BenchmarkTigerTonic_GithubStatic     5000000           361 ns/op          48 B/op          1 allocs/op
-BenchmarkTraffic_GithubStatic      30000         47197 ns/op       18920 B/op        149 allocs/op
-BenchmarkVulcan_GithubStatic     1000000          1415 ns/op          98 B/op          3 allocs/op
-BenchmarkZeus_GithubStatic   1000000          2522 ns/op         512 B/op         11 allocs/op
-BenchmarkAce_GithubParam     3000000           578 ns/op          96 B/op          1 allocs/op
-BenchmarkBear_GithubParam    1000000          1592 ns/op         464 B/op          5 allocs/op
-BenchmarkBeego_GithubParam   1000000          2891 ns/op         784 B/op         11 allocs/op
-BenchmarkBone_GithubParam     300000          6440 ns/op        1456 B/op         16 allocs/op
-BenchmarkDenco_GithubParam   3000000           514 ns/op         128 B/op          1 allocs/op
-BenchmarkEcho_GithubParam    5000000           292 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_GithubParam    10000000           242 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_GithubParam  1000000          2343 ns/op         720 B/op         10 allocs/op
-BenchmarkGoji_GithubParam    1000000          1566 ns/op         336 B/op          2 allocs/op
-BenchmarkGoJsonRest_GithubParam  1000000          2828 ns/op         721 B/op         15 allocs/op
-BenchmarkGoRestful_GithubParam     10000        177711 ns/op        2816 B/op         35 allocs/op
-BenchmarkGorillaMux_GithubParam   100000         13591 ns/op         816 B/op          9 allocs/op
-BenchmarkHttpRouter_GithubParam  5000000           352 ns/op          96 B/op          1 allocs/op
-BenchmarkHttpTreeMux_GithubParam     2000000           973 ns/op         336 B/op          2 allocs/op
-BenchmarkKocha_GithubParam   2000000           889 ns/op         128 B/op          5 allocs/op
-BenchmarkMacaron_GithubParam      500000          4047 ns/op        1168 B/op         12 allocs/op
-BenchmarkMartini_GithubParam       50000         28982 ns/op        1184 B/op         12 allocs/op
-BenchmarkPat_GithubParam      200000          8747 ns/op        2480 B/op         56 allocs/op
-BenchmarkPossum_GithubParam  1000000          2158 ns/op         624 B/op          7 allocs/op
-BenchmarkR2router_GithubParam    1000000          1352 ns/op         432 B/op          6 allocs/op
-BenchmarkRevel_GithubParam    200000          7673 ns/op        1784 B/op         30 allocs/op
-BenchmarkRivet_GithubParam   1000000          1573 ns/op         480 B/op          6 allocs/op
-BenchmarkTango_GithubParam   1000000          2418 ns/op         480 B/op         13 allocs/op
-BenchmarkTigerTonic_GithubParam   300000          6048 ns/op        1440 B/op         28 allocs/op
-BenchmarkTraffic_GithubParam      100000         20143 ns/op        6024 B/op         55 allocs/op
-BenchmarkVulcan_GithubParam  1000000          2224 ns/op          98 B/op          3 allocs/op
-BenchmarkZeus_GithubParam     500000          4156 ns/op        1312 B/op         12 allocs/op
-BenchmarkAce_GithubAll     10000        109482 ns/op       13792 B/op        167 allocs/op
-BenchmarkBear_GithubAll    10000        287490 ns/op       79952 B/op        943 allocs/op
-BenchmarkBeego_GithubAll        3000        562184 ns/op      146272 B/op       2092 allocs/op
-BenchmarkBone_GithubAll      500       2578716 ns/op      648016 B/op       8119 allocs/op
-BenchmarkDenco_GithubAll       20000         94955 ns/op       20224 B/op        167 allocs/op
-BenchmarkEcho_GithubAll    30000         58705 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_GithubAll     30000         50991 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_GithubAll       5000        449648 ns/op      133280 B/op       1889 allocs/op
-BenchmarkGoji_GithubAll     2000        689748 ns/op       56113 B/op        334 allocs/op
-BenchmarkGoJsonRest_GithubAll       5000        537769 ns/op      135995 B/op       2940 allocs/op
-BenchmarkGoRestful_GithubAll         100      18410628 ns/op      797236 B/op       7725 allocs/op
-BenchmarkGorillaMux_GithubAll        200       8036360 ns/op      153137 B/op       1791 allocs/op
-BenchmarkHttpRouter_GithubAll      20000         63506 ns/op       13792 B/op        167 allocs/op
-BenchmarkHttpTreeMux_GithubAll     10000        165927 ns/op       56112 B/op        334 allocs/op
-BenchmarkKocha_GithubAll       10000        171362 ns/op       23304 B/op        843 allocs/op
-BenchmarkMacaron_GithubAll      2000        817008 ns/op      224960 B/op       2315 allocs/op
-BenchmarkMartini_GithubAll       100      12609209 ns/op      237952 B/op       2686 allocs/op
-BenchmarkPat_GithubAll       300       4830398 ns/op     1504101 B/op      32222 allocs/op
-BenchmarkPossum_GithubAll      10000        301716 ns/op       97440 B/op        812 allocs/op
-BenchmarkR2router_GithubAll    10000        270691 ns/op       77328 B/op       1182 allocs/op
-BenchmarkRevel_GithubAll        1000       1491919 ns/op      345553 B/op       5918 allocs/op
-BenchmarkRivet_GithubAll       10000        283860 ns/op       84272 B/op       1079 allocs/op
-BenchmarkTango_GithubAll        5000        473821 ns/op       87078 B/op       2470 allocs/op
-BenchmarkTigerTonic_GithubAll       2000       1120131 ns/op      241088 B/op       6052 allocs/op
-BenchmarkTraffic_GithubAll       200       8708979 ns/op     2664762 B/op      22390 allocs/op
-BenchmarkVulcan_GithubAll       5000        353392 ns/op       19894 B/op        609 allocs/op
-BenchmarkZeus_GithubAll     2000        944234 ns/op      300688 B/op       2648 allocs/op
-BenchmarkAce_GPlusStatic     5000000           251 ns/op           0 B/op          0 allocs/op
-BenchmarkBear_GPlusStatic    3000000           415 ns/op          72 B/op          3 allocs/op
-BenchmarkBeego_GPlusStatic   1000000          1416 ns/op         352 B/op          7 allocs/op
-BenchmarkBone_GPlusStatic   10000000           192 ns/op          32 B/op          1 allocs/op
-BenchmarkDenco_GPlusStatic  30000000            47.6 ns/op         0 B/op          0 allocs/op
-BenchmarkEcho_GPlusStatic   10000000           131 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_GPlusStatic    10000000           131 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_GPlusStatic  1000000          1035 ns/op         288 B/op          6 allocs/op
-BenchmarkGoji_GPlusStatic    5000000           304 ns/op           0 B/op          0 allocs/op
-BenchmarkGoJsonRest_GPlusStatic  1000000          1286 ns/op         337 B/op         12 allocs/op
-BenchmarkGoRestful_GPlusStatic    200000          9649 ns/op        2160 B/op         30 allocs/op
-BenchmarkGorillaMux_GPlusStatic  1000000          2346 ns/op         464 B/op          8 allocs/op
-BenchmarkHttpRouter_GPlusStatic 30000000            42.7 ns/op         0 B/op          0 allocs/op
-BenchmarkHttpTreeMux_GPlusStatic    30000000            49.5 ns/op         0 B/op          0 allocs/op
-BenchmarkKocha_GPlusStatic  20000000            74.8 ns/op         0 B/op          0 allocs/op
-BenchmarkMacaron_GPlusStatic     1000000          2520 ns/op         736 B/op          8 allocs/op
-BenchmarkMartini_GPlusStatic      300000          5310 ns/op         832 B/op         11 allocs/op
-BenchmarkPat_GPlusStatic     5000000           398 ns/op          96 B/op          2 allocs/op
-BenchmarkPossum_GPlusStatic  1000000          1434 ns/op         480 B/op          4 allocs/op
-BenchmarkR2router_GPlusStatic    2000000           646 ns/op         144 B/op          5 allocs/op
-BenchmarkRevel_GPlusStatic    300000          6172 ns/op        1272 B/op         25 allocs/op
-BenchmarkRivet_GPlusStatic   3000000           444 ns/op         112 B/op          2 allocs/op
-BenchmarkTango_GPlusStatic   1000000          1400 ns/op         208 B/op         10 allocs/op
-BenchmarkTigerTonic_GPlusStatic 10000000           213 ns/op          32 B/op          1 allocs/op
-BenchmarkTraffic_GPlusStatic     1000000          3091 ns/op        1208 B/op         16 allocs/op
-BenchmarkVulcan_GPlusStatic  2000000           863 ns/op          98 B/op          3 allocs/op
-BenchmarkZeus_GPlusStatic   10000000           237 ns/op          16 B/op          1 allocs/op
-BenchmarkAce_GPlusParam  3000000           435 ns/op          64 B/op          1 allocs/op
-BenchmarkBear_GPlusParam     1000000          1205 ns/op         448 B/op          5 allocs/op
-BenchmarkBeego_GPlusParam    1000000          2494 ns/op         720 B/op         10 allocs/op
-BenchmarkBone_GPlusParam     1000000          1126 ns/op         384 B/op          3 allocs/op
-BenchmarkDenco_GPlusParam    5000000           325 ns/op          64 B/op          1 allocs/op
-BenchmarkEcho_GPlusParam    10000000           168 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_GPlusParam 10000000           170 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_GPlusParam   1000000          1895 ns/op         656 B/op          9 allocs/op
-BenchmarkGoji_GPlusParam     1000000          1071 ns/op         336 B/op          2 allocs/op
-BenchmarkGoJsonRest_GPlusParam   1000000          2282 ns/op         657 B/op         14 allocs/op
-BenchmarkGoRestful_GPlusParam     100000         19400 ns/op        2560 B/op         33 allocs/op
-BenchmarkGorillaMux_GPlusParam    500000          5001 ns/op         784 B/op          9 allocs/op
-BenchmarkHttpRouter_GPlusParam  10000000           240 ns/op          64 B/op          1 allocs/op
-BenchmarkHttpTreeMux_GPlusParam  2000000           797 ns/op         336 B/op          2 allocs/op
-BenchmarkKocha_GPlusParam    3000000           505 ns/op          56 B/op          3 allocs/op
-BenchmarkMacaron_GPlusParam  1000000          3668 ns/op        1104 B/op         11 allocs/op
-BenchmarkMartini_GPlusParam   200000         10672 ns/op        1152 B/op         12 allocs/op
-BenchmarkPat_GPlusParam  1000000          2376 ns/op         704 B/op         14 allocs/op
-BenchmarkPossum_GPlusParam   1000000          2090 ns/op         624 B/op          7 allocs/op
-BenchmarkR2router_GPlusParam     1000000          1233 ns/op         432 B/op          6 allocs/op
-BenchmarkRevel_GPlusParam     200000          6778 ns/op        1704 B/op         28 allocs/op
-BenchmarkRivet_GPlusParam    1000000          1279 ns/op         464 B/op          5 allocs/op
-BenchmarkTango_GPlusParam    1000000          1981 ns/op         272 B/op         10 allocs/op
-BenchmarkTigerTonic_GPlusParam    500000          3893 ns/op        1064 B/op         19 allocs/op
-BenchmarkTraffic_GPlusParam   200000          6585 ns/op        2000 B/op         23 allocs/op
-BenchmarkVulcan_GPlusParam   1000000          1233 ns/op          98 B/op          3 allocs/op
-BenchmarkZeus_GPlusParam     1000000          1350 ns/op         368 B/op          3 allocs/op
-BenchmarkAce_GPlus2Params    3000000           512 ns/op          64 B/op          1 allocs/op
-BenchmarkBear_GPlus2Params   1000000          1564 ns/op         464 B/op          5 allocs/op
-BenchmarkBeego_GPlus2Params  1000000          3043 ns/op         784 B/op         11 allocs/op
-BenchmarkBone_GPlus2Params   1000000          3152 ns/op         736 B/op          7 allocs/op
-BenchmarkDenco_GPlus2Params  3000000           431 ns/op          64 B/op          1 allocs/op
-BenchmarkEcho_GPlus2Params   5000000           247 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_GPlus2Params   10000000           219 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_GPlus2Params     1000000          2363 ns/op         720 B/op         10 allocs/op
-BenchmarkGoji_GPlus2Params   1000000          1540 ns/op         336 B/op          2 allocs/op
-BenchmarkGoJsonRest_GPlus2Params     1000000          2872 ns/op         721 B/op         15 allocs/op
-BenchmarkGoRestful_GPlus2Params   100000         23030 ns/op        2720 B/op         35 allocs/op
-BenchmarkGorillaMux_GPlus2Params      200000         10516 ns/op         816 B/op          9 allocs/op
-BenchmarkHttpRouter_GPlus2Params     5000000           273 ns/op          64 B/op          1 allocs/op
-BenchmarkHttpTreeMux_GPlus2Params    2000000           939 ns/op         336 B/op          2 allocs/op
-BenchmarkKocha_GPlus2Params  2000000           844 ns/op         128 B/op          5 allocs/op
-BenchmarkMacaron_GPlus2Params     500000          3914 ns/op        1168 B/op         12 allocs/op
-BenchmarkMartini_GPlus2Params      50000         35759 ns/op        1280 B/op         16 allocs/op
-BenchmarkPat_GPlus2Params     200000          7089 ns/op        2304 B/op         41 allocs/op
-BenchmarkPossum_GPlus2Params     1000000          2093 ns/op         624 B/op          7 allocs/op
-BenchmarkR2router_GPlus2Params   1000000          1320 ns/op         432 B/op          6 allocs/op
-BenchmarkRevel_GPlus2Params   200000          7351 ns/op        1800 B/op         30 allocs/op
-BenchmarkRivet_GPlus2Params  1000000          1485 ns/op         480 B/op          6 allocs/op
-BenchmarkTango_GPlus2Params  1000000          2111 ns/op         448 B/op         12 allocs/op
-BenchmarkTigerTonic_GPlus2Params      300000          6271 ns/op        1528 B/op         28 allocs/op
-BenchmarkTraffic_GPlus2Params     100000         14886 ns/op        3312 B/op         34 allocs/op
-BenchmarkVulcan_GPlus2Params     1000000          1883 ns/op          98 B/op          3 allocs/op
-BenchmarkZeus_GPlus2Params   1000000          2686 ns/op         784 B/op          6 allocs/op
-BenchmarkAce_GPlusAll     300000          5912 ns/op         640 B/op         11 allocs/op
-BenchmarkBear_GPlusAll    100000         16448 ns/op        5072 B/op         61 allocs/op
-BenchmarkBeego_GPlusAll    50000         32916 ns/op        8976 B/op        129 allocs/op
-BenchmarkBone_GPlusAll     50000         25836 ns/op        6992 B/op         76 allocs/op
-BenchmarkDenco_GPlusAll   500000          4462 ns/op         672 B/op         11 allocs/op
-BenchmarkEcho_GPlusAll    500000          2806 ns/op           0 B/op          0 allocs/op
-BenchmarkGin_GPlusAll     500000          2579 ns/op           0 B/op          0 allocs/op
-BenchmarkGocraftWeb_GPlusAll       50000         25223 ns/op        8144 B/op        116 allocs/op
-BenchmarkGoji_GPlusAll    100000         14237 ns/op        3696 B/op         22 allocs/op
-BenchmarkGoJsonRest_GPlusAll       50000         29227 ns/op        8221 B/op        183 allocs/op
-BenchmarkGoRestful_GPlusAll    10000        203144 ns/op       36064 B/op        441 allocs/op
-BenchmarkGorillaMux_GPlusAll       20000         80906 ns/op        9712 B/op        115 allocs/op
-BenchmarkHttpRouter_GPlusAll      500000          3040 ns/op         640 B/op         11 allocs/op
-BenchmarkHttpTreeMux_GPlusAll     200000          9627 ns/op        3696 B/op         22 allocs/op
-BenchmarkKocha_GPlusAll   200000          8108 ns/op         976 B/op         43 allocs/op
-BenchmarkMacaron_GPlusAll      30000         48083 ns/op       13968 B/op        142 allocs/op
-BenchmarkMartini_GPlusAll      10000        196978 ns/op       15072 B/op        178 allocs/op
-BenchmarkPat_GPlusAll      30000         58865 ns/op       16880 B/op        343 allocs/op
-BenchmarkPossum_GPlusAll      100000         19685 ns/op        6240 B/op         52 allocs/op
-BenchmarkR2router_GPlusAll    100000         16251 ns/op        5040 B/op         76 allocs/op
-BenchmarkRevel_GPlusAll    20000         93489 ns/op       21656 B/op        368 allocs/op
-BenchmarkRivet_GPlusAll   100000         16907 ns/op        5408 B/op         64 allocs/op
-```
diff --git a/vendor/github.com/gin-gonic/gin/CHANGELOG.md b/vendor/github.com/gin-gonic/gin/CHANGELOG.md
deleted file mode 100644
index ee485ec3..00000000
--- a/vendor/github.com/gin-gonic/gin/CHANGELOG.md
+++ /dev/null
@@ -1,191 +0,0 @@
-# CHANGELOG
-
-### Gin 1.2
-
-- [NEW] Switch from godeps to govendor
-- [NEW] Add support for Let's Encrypt via gin-gonic/autotls
-- [NEW] Improve README examples and add extra at examples folder
-- [NEW] Improved support with App Engine
-- [NEW] Add custom template delimiters, see #860
-- [NEW] Add Template Func Maps, see #962
-- [NEW] Add \*context.Handler(), see #928
-- [NEW] Add \*context.GetRawData()
-- [NEW] Add \*context.GetHeader() (request)
-- [NEW] Add \*context.AbortWithStatusJSON() (JSON content type)
-- [NEW] Add \*context.Keys type cast helpers
-- [NEW] Add \*context.ShouldBindWith()
-- [NEW] Add \*context.MustBindWith()
-- [NEW] Add \*engine.SetFuncMap()
-- [DEPRECATE] On next release: \*context.BindWith(), see #855
-- [FIX] Refactor render
-- [FIX] Reworked tests
-- [FIX] logger now supports cygwin
-- [FIX] Use X-Forwarded-For before X-Real-Ip
-- [FIX] time.Time binding (#904)
-
-### Gin 1.1.4
-
-- [NEW] Support google appengine for IsTerminal func
-
-### Gin 1.1.3
-
-- [FIX] Reverted Logger: skip ANSI color commands
-
-### Gin 1.1
-
-- [NEW] Implement QueryArray and PostArray methods 
-- [NEW] Refactor GetQuery and GetPostForm 
-- [NEW] Add contribution guide 
-- [FIX] Corrected typos in README
-- [FIX] Removed additional Iota  
-- [FIX] Changed imports to gopkg instead of github in README (#733) 
-- [FIX] Logger: skip ANSI color commands if output is not a tty
-
-### Gin 1.0rc2 (...)
-
-- [PERFORMANCE] Fast path for writing Content-Type.
-- [PERFORMANCE] Much faster 404 routing
-- [PERFORMANCE] Allocation optimizations
-- [PERFORMANCE] Faster root tree lookup
-- [PERFORMANCE] Zero overhead, String() and JSON() rendering.
-- [PERFORMANCE] Faster ClientIP parsing
-- [PERFORMANCE] Much faster SSE implementation
-- [NEW] Benchmarks suite
-- [NEW] Bind validation can be disabled and replaced with custom validators.
-- [NEW] More flexible HTML render
-- [NEW] Multipart and PostForm bindings
-- [NEW] Adds method to return all the registered routes
-- [NEW] Context.HandlerName() returns the main handler's name
-- [NEW] Adds Error.IsType() helper
-- [FIX] Binding multipart form
-- [FIX] Integration tests
-- [FIX] Crash when binding non struct object in Context.
-- [FIX] RunTLS() implementation
-- [FIX] Logger() unit tests
-- [FIX] Adds SetHTMLTemplate() warning
-- [FIX] Context.IsAborted()
-- [FIX] More unit tests
-- [FIX] JSON, XML, HTML renders accept custom content-types
-- [FIX] gin.AbortIndex is unexported
-- [FIX] Better approach to avoid directory listing in StaticFS()
-- [FIX] Context.ClientIP() always returns the IP with trimmed spaces.
-- [FIX] Better warning when running in debug mode.
-- [FIX] Google App Engine integration. debugPrint does not use os.Stdout
-- [FIX] Fixes integer overflow in error type
-- [FIX] Error implements the json.Marshaller interface
-- [FIX] MIT license in every file
-
-
-### Gin 1.0rc1 (May 22, 2015)
-
-- [PERFORMANCE] Zero allocation router
-- [PERFORMANCE] Faster JSON, XML and text rendering
-- [PERFORMANCE] Custom hand optimized HttpRouter for Gin
-- [PERFORMANCE] Misc code optimizations. Inlining, tail call optimizations
-- [NEW] Built-in support for golang.org/x/net/context
-- [NEW] Any(path, handler). Create a route that matches any path
-- [NEW] Refactored rendering pipeline (faster and static typeded)
-- [NEW] Refactored errors API
-- [NEW] IndentedJSON() prints pretty JSON
-- [NEW] Added gin.DefaultWriter
-- [NEW] UNIX socket support
-- [NEW] RouterGroup.BasePath is exposed
-- [NEW] JSON validation using go-validate-yourself (very powerful options)
-- [NEW] Completed suite of unit tests
-- [NEW] HTTP streaming with c.Stream()
-- [NEW] StaticFile() creates a router for serving just one file.
-- [NEW] StaticFS() has an option to disable directory listing.
-- [NEW] StaticFS() for serving static files through virtual filesystems
-- [NEW] Server-Sent Events native support
-- [NEW] WrapF() and WrapH() helpers for wrapping http.HandlerFunc and http.Handler
-- [NEW] Added LoggerWithWriter() middleware
-- [NEW] Added RecoveryWithWriter() middleware
-- [NEW] Added DefaultPostFormValue()
-- [NEW] Added DefaultFormValue()
-- [NEW] Added DefaultParamValue()
-- [FIX] BasicAuth() when using custom realm
-- [FIX] Bug when serving static files in nested routing group
-- [FIX] Redirect using built-in http.Redirect()
-- [FIX] Logger when printing the requested path
-- [FIX] Documentation typos
-- [FIX] Context.Engine renamed to Context.engine
-- [FIX] Better debugging messages
-- [FIX] ErrorLogger
-- [FIX] Debug HTTP render
-- [FIX] Refactored binding and render modules
-- [FIX] Refactored Context initialization
-- [FIX] Refactored BasicAuth()
-- [FIX] NoMethod/NoRoute handlers
-- [FIX] Hijacking http
-- [FIX] Better support for Google App Engine (using log instead of fmt)
-
-
-### Gin 0.6 (Mar 9, 2015)
-
-- [NEW] Support multipart/form-data
-- [NEW] NoMethod handler
-- [NEW] Validate sub structures
-- [NEW] Support for HTTP Realm Auth
-- [FIX] Unsigned integers in binding
-- [FIX] Improve color logger
-
-
-### Gin 0.5 (Feb 7, 2015)
-
-- [NEW] Content Negotiation
-- [FIX] Solved security bug that allow a client to spoof ip
-- [FIX] Fix unexported/ignored fields in binding
-
-
-### Gin 0.4 (Aug 21, 2014)
-
-- [NEW] Development mode
-- [NEW] Unit tests
-- [NEW] Add Content.Redirect()
-- [FIX] Deferring WriteHeader()
-- [FIX] Improved documentation for model binding
-
-
-### Gin 0.3 (Jul 18, 2014)
-
-- [PERFORMANCE] Normal log and error log are printed in the same call.
-- [PERFORMANCE] Improve performance of NoRouter()
-- [PERFORMANCE] Improve context's memory locality, reduce CPU cache faults.
-- [NEW] Flexible rendering API
-- [NEW] Add Context.File()
-- [NEW] Add shorcut RunTLS() for http.ListenAndServeTLS
-- [FIX] Rename NotFound404() to NoRoute()
-- [FIX] Errors in context are purged
-- [FIX] Adds HEAD method in Static file serving
-- [FIX] Refactors Static() file serving
-- [FIX] Using keyed initialization to fix app-engine integration
-- [FIX] Can't unmarshal JSON array, #63
-- [FIX] Renaming Context.Req to Context.Request
-- [FIX] Check application/x-www-form-urlencoded when parsing form
-
-
-### Gin 0.2b (Jul 08, 2014)
-- [PERFORMANCE] Using sync.Pool to allocatio/gc overhead
-- [NEW] Travis CI integration
-- [NEW] Completely new logger
-- [NEW] New API for serving static files. gin.Static()
-- [NEW] gin.H() can be serialized into XML
-- [NEW] Typed errors. Errors can be typed. Internet/external/custom.
-- [NEW] Support for Godeps
-- [NEW] Travis/Godocs badges in README
-- [NEW] New Bind() and BindWith() methods for parsing request body.
-- [NEW] Add Content.Copy()
-- [NEW] Add context.LastError()
-- [NEW] Add shorcut for OPTIONS HTTP method
-- [FIX] Tons of README fixes
-- [FIX] Header is written before body
-- [FIX] BasicAuth() and changes API a little bit
-- [FIX] Recovery() middleware only prints panics
-- [FIX] Context.Get() does not panic anymore. Use MustGet() instead.
-- [FIX] Multiple http.WriteHeader() in NotFound handlers
-- [FIX] Engine.Run() panics if http server can't be setted up
-- [FIX] Crash when route path doesn't start with '/'
-- [FIX] Do not update header when status code is negative
-- [FIX] Setting response headers before calling WriteHeader in context.String()
-- [FIX] Add MIT license
-- [FIX] Changes behaviour of ErrorLogger() and Logger()
diff --git a/vendor/github.com/gin-gonic/gin/Makefile b/vendor/github.com/gin-gonic/gin/Makefile
deleted file mode 100644
index 9ba475a4..00000000
--- a/vendor/github.com/gin-gonic/gin/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-GOFMT ?= gofmt "-s"
-PACKAGES ?= $(shell go list ./... | grep -v /vendor/)
-GOFILES := $(shell find . -name "*.go" -type f -not -path "./vendor/*")
-
-all: build
-
-install: deps
-	govendor sync
-
-.PHONY: test
-test:
-	go test -v -covermode=count -coverprofile=coverage.out
-
-.PHONY: fmt
-fmt:
-	$(GOFMT) -w $(GOFILES)
-
-.PHONY: fmt-check
-fmt-check:
-	# get all go files and run go fmt on them
-	@diff=$$($(GOFMT) -d $(GOFILES)); \
-	if [ -n "$$diff" ]; then \
-		echo "Please run 'make fmt' and commit the result:"; \
-		echo "$${diff}"; \
-		exit 1; \
-	fi;
-
-vet:
-	go vet $(PACKAGES)
-
-deps:
-	@hash govendor > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
-		go get -u github.com/kardianos/govendor; \
-	fi
-	@hash embedmd > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
-		go get -u github.com/campoy/embedmd; \
-	fi
-
-embedmd:
-	embedmd -d *.md
-
-.PHONY: lint
-lint:
-	@hash golint > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
-		go get -u github.com/golang/lint/golint; \
-	fi
-	for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done;
-
-.PHONY: misspell-check
-misspell-check:
-	@hash misspell > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
-		go get -u github.com/client9/misspell/cmd/misspell; \
-	fi
-	misspell -error $(GOFILES)
-
-.PHONY: misspell
-misspell:
-	@hash misspell > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
-		go get -u github.com/client9/misspell/cmd/misspell; \
-	fi
-	misspell -w $(GOFILES)
diff --git a/vendor/github.com/gin-gonic/gin/README.md b/vendor/github.com/gin-gonic/gin/README.md
deleted file mode 100644
index 029606b7..00000000
--- a/vendor/github.com/gin-gonic/gin/README.md
+++ /dev/null
@@ -1,977 +0,0 @@
-# Gin Web Framework
-
-<img align="right" src="https://raw.githubusercontent.com/gin-gonic/gin/master/logo.jpg">
-
-[![Build Status](https://travis-ci.org/gin-gonic/gin.svg)](https://travis-ci.org/gin-gonic/gin)
- [![codecov](https://codecov.io/gh/gin-gonic/gin/branch/master/graph/badge.svg)](https://codecov.io/gh/gin-gonic/gin)
- [![Go Report Card](https://goreportcard.com/badge/github.com/gin-gonic/gin)](https://goreportcard.com/report/github.com/gin-gonic/gin)
- [![GoDoc](https://godoc.org/github.com/gin-gonic/gin?status.svg)](https://godoc.org/github.com/gin-gonic/gin)
- [![Join the chat at https://gitter.im/gin-gonic/gin](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/gin-gonic/gin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-
-Gin is a web framework written in Go (Golang). It features a martini-like API with much better performance, up to 40 times faster thanks to [httprouter](https://github.com/julienschmidt/httprouter). If you need performance and good productivity, you will love Gin.
-
-![Gin console logger](https://gin-gonic.github.io/gin/other/console.png)
-
-```sh
-$ cat test.go
-```
-
-```go
-package main
-
-import "github.com/gin-gonic/gin"
-
-func main() {
-	r := gin.Default()
-	r.GET("/ping", func(c *gin.Context) {
-		c.JSON(200, gin.H{
-			"message": "pong",
-		})
-	})
-	r.Run() // listen and serve on 0.0.0.0:8080
-}
-```
-
-## Benchmarks
-
-Gin uses a custom version of [HttpRouter](https://github.com/julienschmidt/httprouter)  
-
-[See all benchmarks](/BENCHMARKS.md)
-
-
-Benchmark name 					| (1) 		| (2) 		| (3) 		| (4)
---------------------------------|----------:|----------:|----------:|------:
-BenchmarkAce_GithubAll 			| 10000 	| 109482 	| 13792 	| 167
-BenchmarkBear_GithubAll 		| 10000 	| 287490 	| 79952 	| 943
-BenchmarkBeego_GithubAll 		| 3000 		| 562184 	| 146272 	| 2092
-BenchmarkBone_GithubAll 		| 500 		| 2578716 	| 648016 	| 8119
-BenchmarkDenco_GithubAll 		| 20000 	| 94955 	| 20224 	| 167
-BenchmarkEcho_GithubAll 		| 30000 	| 58705 	| 0 		| 0
-**BenchmarkGin_GithubAll** 		| **30000** | **50991** | **0** 	| **0**
-BenchmarkGocraftWeb_GithubAll 	| 5000 		| 449648 	| 133280 	| 1889
-BenchmarkGoji_GithubAll 		| 2000 		| 689748 	| 56113 	| 334
-BenchmarkGoJsonRest_GithubAll 	| 5000 		| 537769 	| 135995 	| 2940
-BenchmarkGoRestful_GithubAll 	| 100 		| 18410628 	| 797236 	| 7725
-BenchmarkGorillaMux_GithubAll 	| 200 		| 8036360 	| 153137 	| 1791
-BenchmarkHttpRouter_GithubAll 	| 20000 	| 63506 	| 13792 	| 167
-BenchmarkHttpTreeMux_GithubAll 	| 10000 	| 165927 	| 56112 	| 334
-BenchmarkKocha_GithubAll 		| 10000 	| 171362 	| 23304 	| 843
-BenchmarkMacaron_GithubAll 		| 2000 		| 817008 	| 224960 	| 2315
-BenchmarkMartini_GithubAll 		| 100 		| 12609209 	| 237952 	| 2686
-BenchmarkPat_GithubAll 			| 300 		| 4830398 	| 1504101 	| 32222
-BenchmarkPossum_GithubAll 		| 10000 	| 301716 	| 97440 	| 812
-BenchmarkR2router_GithubAll 	| 10000 	| 270691 	| 77328 	| 1182
-BenchmarkRevel_GithubAll 		| 1000 		| 1491919 	| 345553 	| 5918
-BenchmarkRivet_GithubAll 		| 10000 	| 283860 	| 84272 	| 1079
-BenchmarkTango_GithubAll 		| 5000 		| 473821 	| 87078 	| 2470
-BenchmarkTigerTonic_GithubAll 	| 2000 		| 1120131 	| 241088 	| 6052
-BenchmarkTraffic_GithubAll 		| 200 		| 8708979 	| 2664762 	| 22390
-BenchmarkVulcan_GithubAll 		| 5000 		| 353392 	| 19894 	| 609
-BenchmarkZeus_GithubAll 		| 2000 		| 944234 	| 300688 	| 2648
-
-(1): Total Repetitions  
-(2): Single Repetition Duration (ns/op)  
-(3): Heap Memory (B/op)  
-(4): Average Allocations per Repetition (allocs/op)  
-
-## Gin v1. stable
-
-- [x] Zero allocation router.
-- [x] Still the fastest http router and framework. From routing to writing.
-- [x] Complete suite of unit tests
-- [x] Battle tested
-- [x] API frozen, new releases will not break your code.
-
-
-## Start using it
-
-1. Download and install it:
-
-```sh
-$ go get github.com/gin-gonic/gin
-```
-
-2. Import it in your code:
-
-```go
-import "github.com/gin-gonic/gin"
-```
-
-3. (Optional) Import `net/http`. This is required for example if using constants such as `http.StatusOK`.
-
-```go
-import "net/http"
-```
-
-## API Examples
-
-### Using GET, POST, PUT, PATCH, DELETE and OPTIONS
-
-```go
-func main() {
-	// Disable Console Color
-	// gin.DisableConsoleColor()
-
-	// Creates a gin router with default middleware:
-	// logger and recovery (crash-free) middleware
-	router := gin.Default()
-
-	router.GET("/someGet", getting)
-	router.POST("/somePost", posting)
-	router.PUT("/somePut", putting)
-	router.DELETE("/someDelete", deleting)
-	router.PATCH("/somePatch", patching)
-	router.HEAD("/someHead", head)
-	router.OPTIONS("/someOptions", options)
-
-	// By default it serves on :8080 unless a
-	// PORT environment variable was defined.
-	router.Run()
-	// router.Run(":3000") for a hard coded port
-}
-```
-
-### Parameters in path
-
-```go
-func main() {
-	router := gin.Default()
-
-	// This handler will match /user/john but will not match neither /user/ or /user
-	router.GET("/user/:name", func(c *gin.Context) {
-		name := c.Param("name")
-		c.String(http.StatusOK, "Hello %s", name)
-	})
-
-	// However, this one will match /user/john/ and also /user/john/send
-	// If no other routers match /user/john, it will redirect to /user/john/
-	router.GET("/user/:name/*action", func(c *gin.Context) {
-		name := c.Param("name")
-		action := c.Param("action")
-		message := name + " is " + action
-		c.String(http.StatusOK, message)
-	})
-
-	router.Run(":8080")
-}
-```
-
-### Querystring parameters
-
-```go
-func main() {
-	router := gin.Default()
-
-	// Query string parameters are parsed using the existing underlying request object.
-	// The request responds to a url matching:  /welcome?firstname=Jane&lastname=Doe
-	router.GET("/welcome", func(c *gin.Context) {
-		firstname := c.DefaultQuery("firstname", "Guest")
-		lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname")
-
-		c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
-	})
-	router.Run(":8080")
-}
-```
-
-### Multipart/Urlencoded Form
-
-```go
-func main() {
-	router := gin.Default()
-
-	router.POST("/form_post", func(c *gin.Context) {
-		message := c.PostForm("message")
-		nick := c.DefaultPostForm("nick", "anonymous")
-
-		c.JSON(200, gin.H{
-			"status":  "posted",
-			"message": message,
-			"nick":    nick,
-		})
-	})
-	router.Run(":8080")
-}
-```
-
-### Another example: query + post form
-
-```
-POST /post?id=1234&page=1 HTTP/1.1
-Content-Type: application/x-www-form-urlencoded
-
-name=manu&message=this_is_great
-```
-
-```go
-func main() {
-	router := gin.Default()
-
-	router.POST("/post", func(c *gin.Context) {
-
-		id := c.Query("id")
-		page := c.DefaultQuery("page", "0")
-		name := c.PostForm("name")
-		message := c.PostForm("message")
-
-		fmt.Printf("id: %s; page: %s; name: %s; message: %s", id, page, name, message)
-	})
-	router.Run(":8080")
-}
-```
-
-```
-id: 1234; page: 1; name: manu; message: this_is_great
-```
-
-### Upload files
-
-#### Single file
-
-References issue [#774](https://github.com/gin-gonic/gin/issues/774) and detail [example code](examples/upload-file/single).
-
-```go
-func main() {
-	router := gin.Default()
-	router.POST("/upload", func(c *gin.Context) {
-		// single file
-		file, _ := c.FormFile("file")
-		log.Println(file.Filename)
-
-		c.String(http.StatusOK, fmt.Printf("'%s' uploaded!", file.Filename))
-	})
-	router.Run(":8080")
-}
-```
-
-How to `curl`:
-
-```bash
-curl -X POST http://localhost:8080/upload \
-  -F "file=@/Users/appleboy/test.zip" \
-  -H "Content-Type: multipart/form-data"
-```
-
-#### Multiple files
-
-See the detail [example code](examples/upload-file/multiple).
-
-```go
-func main() {
-	router := gin.Default()
-	router.POST("/upload", func(c *gin.Context) {
-		// Multipart form
-		form, _ := c.MultipartForm()
-		files := form.File["upload[]"]
-
-		for _, file := range files {
-			log.Println(file.Filename)
-		}
-		c.String(http.StatusOK, fmt.Printf("%d files uploaded!", len(files)))
-	})
-	router.Run(":8080")
-}
-```
-
-How to `curl`:
-
-```bash
-curl -X POST http://localhost:8080/upload \
-  -F "upload[]=@/Users/appleboy/test1.zip" \
-  -F "upload[]=@/Users/appleboy/test2.zip" \
-  -H "Content-Type: multipart/form-data"
-```
-
-### Grouping routes
-
-```go
-func main() {
-	router := gin.Default()
-
-	// Simple group: v1
-	v1 := router.Group("/v1")
-	{
-		v1.POST("/login", loginEndpoint)
-		v1.POST("/submit", submitEndpoint)
-		v1.POST("/read", readEndpoint)
-	}
-
-	// Simple group: v2
-	v2 := router.Group("/v2")
-	{
-		v2.POST("/login", loginEndpoint)
-		v2.POST("/submit", submitEndpoint)
-		v2.POST("/read", readEndpoint)
-	}
-
-	router.Run(":8080")
-}
-```
-
-### Blank Gin without middleware by default
-
-Use
-
-```go
-r := gin.New()
-```
-
-instead of
-
-```go
-r := gin.Default()
-```
-
-
-### Using middleware
-```go
-func main() {
-	// Creates a router without any middleware by default
-	r := gin.New()
-
-	// Global middleware
-	r.Use(gin.Logger())
-	r.Use(gin.Recovery())
-
-	// Per route middleware, you can add as many as you desire.
-	r.GET("/benchmark", MyBenchLogger(), benchEndpoint)
-
-	// Authorization group
-	// authorized := r.Group("/", AuthRequired())
-	// exactly the same as:
-	authorized := r.Group("/")
-	// per group middleware! in this case we use the custom created
-	// AuthRequired() middleware just in the "authorized" group.
-	authorized.Use(AuthRequired())
-	{
-		authorized.POST("/login", loginEndpoint)
-		authorized.POST("/submit", submitEndpoint)
-		authorized.POST("/read", readEndpoint)
-
-		// nested group
-		testing := authorized.Group("testing")
-		testing.GET("/analytics", analyticsEndpoint)
-	}
-
-	// Listen and serve on 0.0.0.0:8080
-	r.Run(":8080")
-}
-```
-
-### Model binding and validation
-
-To bind a request body into a type, use model binding. We currently support binding of JSON, XML and standard form values (foo=bar&boo=baz).
-
-Note that you need to set the corresponding binding tag on all fields you want to bind. For example, when binding from JSON, set `json:"fieldname"`.
-
-When using the Bind-method, Gin tries to infer the binder depending on the Content-Type header. If you are sure what you are binding, you can use BindWith.
-
-You can also specify that specific fields are required. If a field is decorated with `binding:"required"` and has a empty value when binding, the current request will fail with an error.
-
-```go
-// Binding from JSON
-type Login struct {
-	User     string `form:"user" json:"user" binding:"required"`
-	Password string `form:"password" json:"password" binding:"required"`
-}
-
-func main() {
-	router := gin.Default()
-
-	// Example for binding JSON ({"user": "manu", "password": "123"})
-	router.POST("/loginJSON", func(c *gin.Context) {
-		var json Login
-		if c.BindJSON(&json) == nil {
-			if json.User == "manu" && json.Password == "123" {
-				c.JSON(http.StatusOK, gin.H{"status": "you are logged in"})
-			} else {
-				c.JSON(http.StatusUnauthorized, gin.H{"status": "unauthorized"})
-			}
-		}
-	})
-
-	// Example for binding a HTML form (user=manu&password=123)
-	router.POST("/loginForm", func(c *gin.Context) {
-		var form Login
-		// This will infer what binder to use depending on the content-type header.
-		if c.Bind(&form) == nil {
-			if form.User == "manu" && form.Password == "123" {
-				c.JSON(http.StatusOK, gin.H{"status": "you are logged in"})
-			} else {
-				c.JSON(http.StatusUnauthorized, gin.H{"status": "unauthorized"})
-			}
-		}
-	})
-
-	// Listen and serve on 0.0.0.0:8080
-	router.Run(":8080")
-}
-```
-
-### Bind Query String
-
-See the [detail information](https://github.com/gin-gonic/gin/issues/742#issuecomment-264681292).
-
-```go
-package main
-
-import "log"
-import "github.com/gin-gonic/gin"
-
-type Person struct {
-	Name    string `form:"name"`
-	Address string `form:"address"`
-}
-
-func main() {
-	route := gin.Default()
-	route.GET("/testing", startPage)
-	route.Run(":8085")
-}
-
-func startPage(c *gin.Context) {
-	var person Person
-	// If `GET`, only `Form` binding engine (`query`) used.
-	// If `POST`, first checks the `content-type` for `JSON` or `XML`, then uses `Form` (`form-data`).
-	// See more at https://github.com/gin-gonic/gin/blob/develop/binding/binding.go#L45
-	if c.Bind(&person) == nil {
-		log.Println(person.Name)
-		log.Println(person.Address)
-	}
-
-	c.String(200, "Success")
-}
-```
-
-### Multipart/Urlencoded binding
-
-```go
-package main
-
-import (
-	"github.com/gin-gonic/gin"
-)
-
-type LoginForm struct {
-	User     string `form:"user" binding:"required"`
-	Password string `form:"password" binding:"required"`
-}
-
-func main() {
-	router := gin.Default()
-	router.POST("/login", func(c *gin.Context) {
-		// you can bind multipart form with explicit binding declaration:
-		// c.MustBindWith(&form, binding.Form)
-		// or you can simply use autobinding with Bind method:
-		var form LoginForm
-		// in this case proper binding will be automatically selected
-		if c.Bind(&form) == nil {
-			if form.User == "user" && form.Password == "password" {
-				c.JSON(200, gin.H{"status": "you are logged in"})
-			} else {
-				c.JSON(401, gin.H{"status": "unauthorized"})
-			}
-		}
-	})
-	router.Run(":8080")
-}
-```
-
-Test it with:
-```sh
-$ curl -v --form user=user --form password=password http://localhost:8080/login
-```
-
-### XML, JSON and YAML rendering
-
-```go
-func main() {
-	r := gin.Default()
-
-	// gin.H is a shortcut for map[string]interface{}
-	r.GET("/someJSON", func(c *gin.Context) {
-		c.JSON(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK})
-	})
-
-	r.GET("/moreJSON", func(c *gin.Context) {
-		// You also can use a struct
-		var msg struct {
-			Name    string `json:"user"`
-			Message string
-			Number  int
-		}
-		msg.Name = "Lena"
-		msg.Message = "hey"
-		msg.Number = 123
-		// Note that msg.Name becomes "user" in the JSON
-		// Will output  :   {"user": "Lena", "Message": "hey", "Number": 123}
-		c.JSON(http.StatusOK, msg)
-	})
-
-	r.GET("/someXML", func(c *gin.Context) {
-		c.XML(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK})
-	})
-
-	r.GET("/someYAML", func(c *gin.Context) {
-		c.YAML(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK})
-	})
-
-	// Listen and serve on 0.0.0.0:8080
-	r.Run(":8080")
-}
-```
-
-### Serving static files
-
-```go
-func main() {
-	router := gin.Default()
-	router.Static("/assets", "./assets")
-	router.StaticFS("/more_static", http.Dir("my_file_system"))
-	router.StaticFile("/favicon.ico", "./resources/favicon.ico")
-
-	// Listen and serve on 0.0.0.0:8080
-	router.Run(":8080")
-}
-```
-
-### HTML rendering
-
-Using LoadHTMLGlob() or LoadHTMLFiles()
-
-```go
-func main() {
-	router := gin.Default()
-	router.LoadHTMLGlob("templates/*")
-	//router.LoadHTMLFiles("templates/template1.html", "templates/template2.html")
-	router.GET("/index", func(c *gin.Context) {
-		c.HTML(http.StatusOK, "index.tmpl", gin.H{
-			"title": "Main website",
-		})
-	})
-	router.Run(":8080")
-}
-```
-
-templates/index.tmpl
-
-```html
-<html>
-	<h1>
-		{{ .title }}
-	</h1>
-</html>
-```
-
-Using templates with same name in different directories
-
-```go
-func main() {
-	router := gin.Default()
-	router.LoadHTMLGlob("templates/**/*")
-	router.GET("/posts/index", func(c *gin.Context) {
-		c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{
-			"title": "Posts",
-		})
-	})
-	router.GET("/users/index", func(c *gin.Context) {
-		c.HTML(http.StatusOK, "users/index.tmpl", gin.H{
-			"title": "Users",
-		})
-	})
-	router.Run(":8080")
-}
-```
-
-templates/posts/index.tmpl
-
-```html
-{{ define "posts/index.tmpl" }}
-<html><h1>
-	{{ .title }}
-</h1>
-<p>Using posts/index.tmpl</p>
-</html>
-{{ end }}
-```
-
-templates/users/index.tmpl
-
-```html
-{{ define "users/index.tmpl" }}
-<html><h1>
-	{{ .title }}
-</h1>
-<p>Using users/index.tmpl</p>
-</html>
-{{ end }}
-```
-
-You can also use your own html template render
-
-```go
-import "html/template"
-
-func main() {
-	router := gin.Default()
-	html := template.Must(template.ParseFiles("file1", "file2"))
-	router.SetHTMLTemplate(html)
-	router.Run(":8080")
-}
-```
-
-You may use custom delims
-
-```go
-	r := gin.Default()
-	r.Delims("{[{", "}]}")
-	r.LoadHTMLGlob("/path/to/templates"))
-```  
-
-#### Add custom template funcs
-
-main.go
-
-```go
-	...
-	
-	func formatAsDate(t time.Time) string {
-		year, month, day := t.Date()
-		return fmt.Sprintf("%d/%02d/%02d", year, month, day)
-	}
-	
-	...
-	
-	router.SetFuncMap(template.FuncMap{
-		"formatAsDate": formatAsDate,
-	})
-	
-	...
-	
-	router.GET("/raw", func(c *Context) {
-		c.HTML(http.StatusOK, "raw.tmpl", map[string]interface{}{
-			"now": time.Date(2017, 07, 01, 0, 0, 0, 0, time.UTC),
-		})
-	})
-	
-	...
-```
-
-raw.tmpl
-
-```html
-Date: {[{.now | formatAsDate}]}
-```
-
-Result:
-```
-Date: 2017/07/01
-```
-
-### Multitemplate
-
-Gin allow by default use only one html.Template. Check [a multitemplate render](https://github.com/gin-contrib/multitemplate) for using features like go 1.6 `block template`.
-
-### Redirects
-
-Issuing a HTTP redirect is easy:
-
-```go
-r.GET("/test", func(c *gin.Context) {
-	c.Redirect(http.StatusMovedPermanently, "http://www.google.com/")
-})
-```
-Both internal and external locations are supported.
-
-
-### Custom Middleware
-
-```go
-func Logger() gin.HandlerFunc {
-	return func(c *gin.Context) {
-		t := time.Now()
-
-		// Set example variable
-		c.Set("example", "12345")
-
-		// before request
-
-		c.Next()
-
-		// after request
-		latency := time.Since(t)
-		log.Print(latency)
-
-		// access the status we are sending
-		status := c.Writer.Status()
-		log.Println(status)
-	}
-}
-
-func main() {
-	r := gin.New()
-	r.Use(Logger())
-
-	r.GET("/test", func(c *gin.Context) {
-		example := c.MustGet("example").(string)
-
-		// it would print: "12345"
-		log.Println(example)
-	})
-
-	// Listen and serve on 0.0.0.0:8080
-	r.Run(":8080")
-}
-```
-
-### Using BasicAuth() middleware
-
-```go
-// simulate some private data
-var secrets = gin.H{
-	"foo":    gin.H{"email": "foo@bar.com", "phone": "123433"},
-	"austin": gin.H{"email": "austin@example.com", "phone": "666"},
-	"lena":   gin.H{"email": "lena@guapa.com", "phone": "523443"},
-}
-
-func main() {
-	r := gin.Default()
-
-	// Group using gin.BasicAuth() middleware
-	// gin.Accounts is a shortcut for map[string]string
-	authorized := r.Group("/admin", gin.BasicAuth(gin.Accounts{
-		"foo":    "bar",
-		"austin": "1234",
-		"lena":   "hello2",
-		"manu":   "4321",
-	}))
-
-	// /admin/secrets endpoint
-	// hit "localhost:8080/admin/secrets
-	authorized.GET("/secrets", func(c *gin.Context) {
-		// get user, it was set by the BasicAuth middleware
-		user := c.MustGet(gin.AuthUserKey).(string)
-		if secret, ok := secrets[user]; ok {
-			c.JSON(http.StatusOK, gin.H{"user": user, "secret": secret})
-		} else {
-			c.JSON(http.StatusOK, gin.H{"user": user, "secret": "NO SECRET :("})
-		}
-	})
-
-	// Listen and serve on 0.0.0.0:8080
-	r.Run(":8080")
-}
-```
-
-### Goroutines inside a middleware
-
-When starting inside a middleware or handler, you **SHOULD NOT** use the original context inside it, you have to use a read-only copy.
-
-```go
-func main() {
-	r := gin.Default()
-
-	r.GET("/long_async", func(c *gin.Context) {
-		// create copy to be used inside the goroutine
-		cCp := c.Copy()
-		go func() {
-			// simulate a long task with time.Sleep(). 5 seconds
-			time.Sleep(5 * time.Second)
-
-			// note that you are using the copied context "cCp", IMPORTANT
-			log.Println("Done! in path " + cCp.Request.URL.Path)
-		}()
-	})
-
-	r.GET("/long_sync", func(c *gin.Context) {
-		// simulate a long task with time.Sleep(). 5 seconds
-		time.Sleep(5 * time.Second)
-
-		// since we are NOT using a goroutine, we do not have to copy the context
-		log.Println("Done! in path " + c.Request.URL.Path)
-	})
-
-	// Listen and serve on 0.0.0.0:8080
-	r.Run(":8080")
-}
-```
-
-### Custom HTTP configuration
-
-Use `http.ListenAndServe()` directly, like this:
-
-```go
-func main() {
-	router := gin.Default()
-	http.ListenAndServe(":8080", router)
-}
-```
-or
-
-```go
-func main() {
-	router := gin.Default()
-
-	s := &http.Server{
-		Addr:           ":8080",
-		Handler:        router,
-		ReadTimeout:    10 * time.Second,
-		WriteTimeout:   10 * time.Second,
-		MaxHeaderBytes: 1 << 20,
-	}
-	s.ListenAndServe()
-}
-```
-
-### Support Let's Encrypt
-
-example for 1-line LetsEncrypt HTTPS servers.
-
-[embedmd]:# (examples/auto-tls/example1.go go)
-```go
-package main
-
-import (
-	"log"
-
-	"github.com/gin-gonic/autotls"
-	"github.com/gin-gonic/gin"
-)
-
-func main() {
-	r := gin.Default()
-
-	// Ping handler
-	r.GET("/ping", func(c *gin.Context) {
-		c.String(200, "pong")
-	})
-
-	log.Fatal(autotls.Run(r, "example1.com", "example2.com"))
-}
-```
-
-example for custom autocert manager.
-
-[embedmd]:# (examples/auto-tls/example2.go go)
-```go
-package main
-
-import (
-	"log"
-
-	"github.com/gin-gonic/autotls"
-	"github.com/gin-gonic/gin"
-	"golang.org/x/crypto/acme/autocert"
-)
-
-func main() {
-	r := gin.Default()
-
-	// Ping handler
-	r.GET("/ping", func(c *gin.Context) {
-		c.String(200, "pong")
-	})
-
-	m := autocert.Manager{
-		Prompt:     autocert.AcceptTOS,
-		HostPolicy: autocert.HostWhitelist("example1.com", "example2.com"),
-		Cache:      autocert.DirCache("/var/www/.cache"),
-	}
-
-	log.Fatal(autotls.RunWithManager(r, m))
-}
-```
-
-### Graceful restart or stop
-
-Do you want to graceful restart or stop your web server?
-There are some ways this can be done.
-
-We can use [fvbock/endless](https://github.com/fvbock/endless) to replace the default `ListenAndServe`. Refer issue [#296](https://github.com/gin-gonic/gin/issues/296) for more details.
-
-```go
-router := gin.Default()
-router.GET("/", handler)
-// [...]
-endless.ListenAndServe(":4242", router)
-```
-
-An alternative to endless:
-
-* [manners](https://github.com/braintree/manners): A polite Go HTTP server that shuts down gracefully.
-* [graceful](https://github.com/tylerb/graceful): Graceful is a Go package enabling graceful shutdown of an http.Handler server.
-* [grace](https://github.com/facebookgo/grace): Graceful restart & zero downtime deploy for Go servers.
-
-If you are using Go 1.8, you may not need to use this library! Consider using http.Server's built-in [Shutdown()](https://golang.org/pkg/net/http/#Server.Shutdown) method for graceful shutdowns. See the full [graceful-shutdown](./examples/graceful-shutdown) example with gin.
-
-[embedmd]:# (examples/graceful-shutdown/graceful-shutdown/server.go go)
-```go
-// +build go1.8
-
-package main
-
-import (
-	"context"
-	"log"
-	"net/http"
-	"os"
-	"os/signal"
-	"time"
-
-	"github.com/gin-gonic/gin"
-)
-
-func main() {
-	router := gin.Default()
-	router.GET("/", func(c *gin.Context) {
-		time.Sleep(5 * time.Second)
-		c.String(http.StatusOK, "Welcome Gin Server")
-	})
-
-	srv := &http.Server{
-		Addr:    ":8080",
-		Handler: router,
-	}
-
-	go func() {
-		// service connections
-		if err := srv.ListenAndServe(); err != nil {
-			log.Printf("listen: %s\n", err)
-		}
-	}()
-
-	// Wait for interrupt signal to gracefully shutdown the server with
-	// a timeout of 5 seconds.
-	quit := make(chan os.Signal)
-	signal.Notify(quit, os.Interrupt)
-	<-quit
-	log.Println("Shutdown Server ...")
-
-	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
-	defer cancel()
-	if err := srv.Shutdown(ctx); err != nil {
-		log.Fatal("Server Shutdown:", err)
-	}
-	log.Println("Server exist")
-}
-```
-
-## Contributing 
-
-- With issues:
-  - Use the search tool before opening a new issue.
-  - Please provide source code and commit sha if you found a bug.
-  - Review existing issues and provide feedback or react to them.
-- With pull requests:
-  - Open your pull request against develop
-  - Your pull request should have no more than two commits, if not you should squash them.
-  - It should pass all tests in the available continuous integrations systems such as TravisCI.
-  - You should add/modify tests to cover your proposed code changes.
-  - If your pull request contains a new feature, please document it on the README.
-
-## Users
-
-Awesome project lists using [Gin](https://github.com/gin-gonic/gin) web framework.
-
-* [drone](https://github.com/drone/drone): Drone is a Continuous Delivery platform built on Docker, written in Go
-* [gorush](https://github.com/appleboy/gorush): A push notification server written in Go.
diff --git a/vendor/github.com/gin-gonic/gin/codecov.yml b/vendor/github.com/gin-gonic/gin/codecov.yml
deleted file mode 100644
index c9c9a522..00000000
--- a/vendor/github.com/gin-gonic/gin/codecov.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-coverage:
-  notify:
-    gitter:
-      default:
-        url: https://webhooks.gitter.im/e/d90dcdeeab2f1e357165
diff --git a/vendor/github.com/gin-gonic/gin/logo.jpg b/vendor/github.com/gin-gonic/gin/logo.jpg
deleted file mode 100644
index bb51852e49aa24ab09ff7826b1f6c3dfdc99b16f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12200
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

diff --git a/vendor/github.com/gin-gonic/gin/wercker.yml b/vendor/github.com/gin-gonic/gin/wercker.yml
deleted file mode 100644
index 3ab8084c..00000000
--- a/vendor/github.com/gin-gonic/gin/wercker.yml
+++ /dev/null
@@ -1 +0,0 @@
-box: wercker/default
\ No newline at end of file
diff --git a/vendor/github.com/go-kit/kit/log/README.md b/vendor/github.com/go-kit/kit/log/README.md
deleted file mode 100644
index 7222f800..00000000
--- a/vendor/github.com/go-kit/kit/log/README.md
+++ /dev/null
@@ -1,147 +0,0 @@
-# package log
-
-`package log` provides a minimal interface for structured logging in services.
-It may be wrapped to encode conventions, enforce type-safety, provide leveled
-logging, and so on. It can be used for both typical application log events,
-and log-structured data streams.
-
-## Structured logging
-
-Structured logging is, basically, conceding to the reality that logs are
-_data_, and warrant some level of schematic rigor. Using a stricter,
-key/value-oriented message format for our logs, containing contextual and
-semantic information, makes it much easier to get insight into the
-operational activity of the systems we build. Consequently, `package log` is
-of the strong belief that "[the benefits of structured logging outweigh the
-minimal effort involved](https://www.thoughtworks.com/radar/techniques/structured-logging)".
-
-Migrating from unstructured to structured logging is probably a lot easier
-than you'd expect.
-
-```go
-// Unstructured
-log.Printf("HTTP server listening on %s", addr)
-
-// Structured
-logger.Log("transport", "HTTP", "addr", addr, "msg", "listening")
-```
-
-## Usage
-
-### Typical application logging
-
-```go
-w := log.NewSyncWriter(os.Stderr)
-logger := log.NewLogfmtLogger(w)
-logger.Log("question", "what is the meaning of life?", "answer", 42)
-
-// Output:
-// question="what is the meaning of life?" answer=42
-```
-
-### Contextual Loggers
-
-```go
-func main() {
-	var logger log.Logger
-	logger = log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr))
-	logger = log.With(logger, "instance_id", 123)
-
-	logger.Log("msg", "starting")
-	NewWorker(log.With(logger, "component", "worker")).Run()
-	NewSlacker(log.With(logger, "component", "slacker")).Run()
-}
-
-// Output:
-// instance_id=123 msg=starting
-// instance_id=123 component=worker msg=running
-// instance_id=123 component=slacker msg=running
-```
-
-### Interact with stdlib logger
-
-Redirect stdlib logger to Go kit logger.
-
-```go
-import (
-	"os"
-	stdlog "log"
-	kitlog "github.com/go-kit/kit/log"
-)
-
-func main() {
-	logger := kitlog.NewJSONLogger(kitlog.NewSyncWriter(os.Stdout))
-	stdlog.SetOutput(kitlog.NewStdlibAdapter(logger))
-	stdlog.Print("I sure like pie")
-}
-
-// Output:
-// {"msg":"I sure like pie","ts":"2016/01/01 12:34:56"}
-```
-
-Or, if, for legacy reasons, you need to pipe all of your logging through the
-stdlib log package, you can redirect Go kit logger to the stdlib logger.
-
-```go
-logger := kitlog.NewLogfmtLogger(kitlog.StdlibWriter{})
-logger.Log("legacy", true, "msg", "at least it's something")
-
-// Output:
-// 2016/01/01 12:34:56 legacy=true msg="at least it's something"
-```
-
-### Timestamps and callers
-
-```go
-var logger log.Logger
-logger = log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr))
-logger = log.With(logger, "ts", log.DefaultTimestampUTC, "caller", log.DefaultCaller)
-
-logger.Log("msg", "hello")
-
-// Output:
-// ts=2016-01-01T12:34:56Z caller=main.go:15 msg=hello
-```
-
-## Supported output formats
-
-- [Logfmt](https://brandur.org/logfmt) ([see also](https://blog.codeship.com/logfmt-a-log-format-thats-easy-to-read-and-write))
-- JSON
-
-## Enhancements
-
-`package log` is centered on the one-method Logger interface.
-
-```go
-type Logger interface {
-	Log(keyvals ...interface{}) error
-}
-```
-
-This interface, and its supporting code like is the product of much iteration
-and evaluation. For more details on the evolution of the Logger interface,
-see [The Hunt for a Logger Interface](http://go-talks.appspot.com/github.com/ChrisHines/talks/structured-logging/structured-logging.slide#1),
-a talk by [Chris Hines](https://github.com/ChrisHines).
-Also, please see
-[#63](https://github.com/go-kit/kit/issues/63),
-[#76](https://github.com/go-kit/kit/pull/76),
-[#131](https://github.com/go-kit/kit/issues/131),
-[#157](https://github.com/go-kit/kit/pull/157),
-[#164](https://github.com/go-kit/kit/issues/164), and
-[#252](https://github.com/go-kit/kit/pull/252)
-to review historical conversations about package log and the Logger interface.
-
-Value-add packages and suggestions,
-like improvements to [the leveled logger](https://godoc.org/github.com/go-kit/kit/log/level),
-are of course welcome. Good proposals should
-
-- Be composable with [contextual loggers](https://godoc.org/github.com/go-kit/kit/log#With),
-- Not break the behavior of [log.Caller](https://godoc.org/github.com/go-kit/kit/log#Caller) in any wrapped contextual loggers, and
-- Be friendly to packages that accept only an unadorned log.Logger.
-
-## Benchmarks & comparisons
-
-There are a few Go logging benchmarks and comparisons that include Go kit's package log.
-
-- [imkira/go-loggers-bench](https://github.com/imkira/go-loggers-bench) includes kit/log
-- [uber-common/zap](https://github.com/uber-common/zap), a zero-alloc logging library, includes a comparison with kit/log
diff --git a/vendor/github.com/go-logfmt/logfmt/.gitignore b/vendor/github.com/go-logfmt/logfmt/.gitignore
deleted file mode 100644
index 320e53e9..00000000
--- a/vendor/github.com/go-logfmt/logfmt/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-_testdata/
-_testdata2/
-logfmt-fuzz.zip
-logfmt.test.exe
diff --git a/vendor/github.com/go-logfmt/logfmt/.travis.yml b/vendor/github.com/go-logfmt/logfmt/.travis.yml
deleted file mode 100644
index b599f654..00000000
--- a/vendor/github.com/go-logfmt/logfmt/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: go
-sudo: false
-go:
-  - 1.3
-  - 1.4
-  - 1.5
-  - 1.6
-  - tip
-
-before_install:
-  - go get github.com/mattn/goveralls
-  - go get golang.org/x/tools/cmd/cover
-
-script:
-  - goveralls -service=travis-ci
diff --git a/vendor/github.com/go-logfmt/logfmt/README.md b/vendor/github.com/go-logfmt/logfmt/README.md
deleted file mode 100644
index 3a8f10b7..00000000
--- a/vendor/github.com/go-logfmt/logfmt/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-[![GoDoc](https://godoc.org/github.com/go-logfmt/logfmt?status.svg)](https://godoc.org/github.com/go-logfmt/logfmt)
-[![Go Report Card](https://goreportcard.com/badge/go-logfmt/logfmt)](https://goreportcard.com/report/go-logfmt/logfmt)
-[![TravisCI](https://travis-ci.org/go-logfmt/logfmt.svg?branch=master)](https://travis-ci.org/go-logfmt/logfmt)
-[![Coverage Status](https://coveralls.io/repos/github/go-logfmt/logfmt/badge.svg?branch=master)](https://coveralls.io/github/go-logfmt/logfmt?branch=master)
-
-# logfmt
-
-Package logfmt implements utilities to marshal and unmarshal data in the [logfmt
-format](https://brandur.org/logfmt). It provides an API similar to
-[encoding/json](http://golang.org/pkg/encoding/json/) and
-[encoding/xml](http://golang.org/pkg/encoding/xml/).
-
-The logfmt format was first documented by Brandur Leach in [this
-article](https://brandur.org/logfmt). The format has not been formally
-standardized. The most authoritative public specification to date has been the
-documentation of a Go Language [package](http://godoc.org/github.com/kr/logfmt)
-written by Blake Mizerany and Keith Rarick.
-
-## Goals
-
-This project attempts to conform as closely as possible to the prior art, while
-also removing ambiguity where necessary to provide well behaved encoder and
-decoder implementations.
-
-## Non-goals
-
-This project does not attempt to formally standardize the logfmt format. In the
-event that logfmt is standardized this project would take conforming to the
-standard as a goal.
-
-## Versioning
-
-Package logfmt publishes releases via [semver](http://semver.org/) compatible Git tags prefixed with a single 'v'.
diff --git a/vendor/github.com/go-playground/locales/.gitignore b/vendor/github.com/go-playground/locales/.gitignore
deleted file mode 100644
index daf913b1..00000000
--- a/vendor/github.com/go-playground/locales/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
-*.prof
diff --git a/vendor/github.com/go-playground/locales/README.md b/vendor/github.com/go-playground/locales/README.md
deleted file mode 100644
index b462c93a..00000000
--- a/vendor/github.com/go-playground/locales/README.md
+++ /dev/null
@@ -1,172 +0,0 @@
-## locales
-<img align="right" src="https://raw.githubusercontent.com/go-playground/locales/master/logo.png">![Project status](https://img.shields.io/badge/version-0.11.1-green.svg)
-[![Build Status](https://semaphoreci.com/api/v1/joeybloggs/locales/branches/master/badge.svg)](https://semaphoreci.com/joeybloggs/locales)
-[![Go Report Card](https://goreportcard.com/badge/github.com/go-playground/locales)](https://goreportcard.com/report/github.com/go-playground/locales)
-[![GoDoc](https://godoc.org/github.com/go-playground/locales?status.svg)](https://godoc.org/github.com/go-playground/locales)
-![License](https://img.shields.io/dub/l/vibe-d.svg)
-[![Gitter](https://badges.gitter.im/go-playground/locales.svg)](https://gitter.im/go-playground/locales?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
-
-Locales is a set of locales generated from the [Unicode CLDR Project](http://cldr.unicode.org/) which can be used independently or within
-an i18n package; these were built for use with, but not exclusive to, [Universal Translator](https://github.com/go-playground/universal-translator).
-
-Features
---------
-- [x] Rules generated from the latest [CLDR](http://cldr.unicode.org/index/downloads) data, v31.0.1
-- [x] Contains Cardinal, Ordinal and Range Plural Rules
-- [x] Contains Month, Weekday and Timezone translations built in
-- [x] Contains Date & Time formatting functions
-- [x] Contains Number, Currency, Accounting and Percent formatting functions
-- [x] Supports the "Gregorian" calendar only ( my time isn't unlimited, had to draw the line somewhere )
-
-Full Tests
---------------------
-I could sure use your help adding tests for every locale, it is a huge undertaking and I just don't have the free time to do it all at the moment;
-any help would be **greatly appreciated!!!!** please see [issue](https://github.com/go-playground/locales/issues/1) for details.
-
-Installation
------------
-
-Use go get 
-
-```shell
-go get github.com/go-playground/locales
-```  
-
-NOTES
---------
-You'll notice most return types are []byte, this is because most of the time the results will be concatenated with a larger body
-of text and can avoid some allocations if already appending to a byte array, otherwise just cast as string.
-
-Usage
--------
-```go
-package main
-
-import (
-	"fmt"
-	"time"
-
-	"github.com/go-playground/locales/currency"
-	"github.com/go-playground/locales/en_CA"
-)
-
-func main() {
-
-	loc, _ := time.LoadLocation("America/Toronto")
-	datetime := time.Date(2016, 02, 03, 9, 0, 1, 0, loc)
-
-	l := en_CA.New()
-
-	// Dates
-	fmt.Println(l.FmtDateFull(datetime))
-	fmt.Println(l.FmtDateLong(datetime))
-	fmt.Println(l.FmtDateMedium(datetime))
-	fmt.Println(l.FmtDateShort(datetime))
-
-	// Times
-	fmt.Println(l.FmtTimeFull(datetime))
-	fmt.Println(l.FmtTimeLong(datetime))
-	fmt.Println(l.FmtTimeMedium(datetime))
-	fmt.Println(l.FmtTimeShort(datetime))
-
-	// Months Wide
-	fmt.Println(l.MonthWide(time.January))
-	fmt.Println(l.MonthWide(time.February))
-	fmt.Println(l.MonthWide(time.March))
-	// ...
-
-	// Months Abbreviated
-	fmt.Println(l.MonthAbbreviated(time.January))
-	fmt.Println(l.MonthAbbreviated(time.February))
-	fmt.Println(l.MonthAbbreviated(time.March))
-	// ...
-
-	// Months Narrow
-	fmt.Println(l.MonthNarrow(time.January))
-	fmt.Println(l.MonthNarrow(time.February))
-	fmt.Println(l.MonthNarrow(time.March))
-	// ...
-
-	// Weekdays Wide
-	fmt.Println(l.WeekdayWide(time.Sunday))
-	fmt.Println(l.WeekdayWide(time.Monday))
-	fmt.Println(l.WeekdayWide(time.Tuesday))
-	// ...
-
-	// Weekdays Abbreviated
-	fmt.Println(l.WeekdayAbbreviated(time.Sunday))
-	fmt.Println(l.WeekdayAbbreviated(time.Monday))
-	fmt.Println(l.WeekdayAbbreviated(time.Tuesday))
-	// ...
-
-	// Weekdays Short
-	fmt.Println(l.WeekdayShort(time.Sunday))
-	fmt.Println(l.WeekdayShort(time.Monday))
-	fmt.Println(l.WeekdayShort(time.Tuesday))
-	// ...
-
-	// Weekdays Narrow
-	fmt.Println(l.WeekdayNarrow(time.Sunday))
-	fmt.Println(l.WeekdayNarrow(time.Monday))
-	fmt.Println(l.WeekdayNarrow(time.Tuesday))
-	// ...
-
-	var f64 float64
-
-	f64 = -10356.4523
-
-	// Number
-	fmt.Println(l.FmtNumber(f64, 2))
-
-	// Currency
-	fmt.Println(l.FmtCurrency(f64, 2, currency.CAD))
-	fmt.Println(l.FmtCurrency(f64, 2, currency.USD))
-
-	// Accounting
-	fmt.Println(l.FmtAccounting(f64, 2, currency.CAD))
-	fmt.Println(l.FmtAccounting(f64, 2, currency.USD))
-
-	f64 = 78.12
-
-	// Percent
-	fmt.Println(l.FmtPercent(f64, 0))
-
-	// Plural Rules for locale, so you know what rules you must cover
-	fmt.Println(l.PluralsCardinal())
-	fmt.Println(l.PluralsOrdinal())
-
-	// Cardinal Plural Rules
-	fmt.Println(l.CardinalPluralRule(1, 0))
-	fmt.Println(l.CardinalPluralRule(1.0, 0))
-	fmt.Println(l.CardinalPluralRule(1.0, 1))
-	fmt.Println(l.CardinalPluralRule(3, 0))
-
-	// Ordinal Plural Rules
-	fmt.Println(l.OrdinalPluralRule(21, 0)) // 21st
-	fmt.Println(l.OrdinalPluralRule(22, 0)) // 22nd
-	fmt.Println(l.OrdinalPluralRule(33, 0)) // 33rd
-	fmt.Println(l.OrdinalPluralRule(34, 0)) // 34th
-
-	// Range Plural Rules
-	fmt.Println(l.RangePluralRule(1, 0, 1, 0)) // 1-1
-	fmt.Println(l.RangePluralRule(1, 0, 2, 0)) // 1-2
-	fmt.Println(l.RangePluralRule(5, 0, 8, 0)) // 5-8
-}
-```
-
-NOTES:
--------
-These rules were generated from the [Unicode CLDR Project](http://cldr.unicode.org/), if you encounter any issues
-I strongly encourage contributing to the CLDR project to get the locale information corrected and the next time 
-these locales are regenerated the fix will come with.
-
-I do however realize that time constraints are often important and so there are two options:
-
-1. Create your own locale, copy, paste and modify, and ensure it complies with the `Translator` interface.
-2. Add an exception in the locale generation code directly and once regenerated, fix will be in place.
-
-Please to not make fixes inside the locale files, they WILL get overwritten when the locales are regenerated.
-
-License
-------
-Distributed under MIT License, please see license file in code for more details.
diff --git a/vendor/github.com/go-playground/locales/logo.png b/vendor/github.com/go-playground/locales/logo.png
deleted file mode 100644
index 3038276e6873076ecd542099e95b25037b1c0c34..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 37360
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

diff --git a/vendor/github.com/go-playground/universal-translator/.gitignore b/vendor/github.com/go-playground/universal-translator/.gitignore
deleted file mode 100644
index 26617857..00000000
--- a/vendor/github.com/go-playground/universal-translator/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
-*.prof
\ No newline at end of file
diff --git a/vendor/github.com/go-playground/universal-translator/README.md b/vendor/github.com/go-playground/universal-translator/README.md
deleted file mode 100644
index 24aef158..00000000
--- a/vendor/github.com/go-playground/universal-translator/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-## universal-translator
-<img align="right" src="https://raw.githubusercontent.com/go-playground/universal-translator/master/logo.png">
-![Project status](https://img.shields.io/badge/version-0.16.0-green.svg)
-[![Build Status](https://semaphoreci.com/api/v1/joeybloggs/universal-translator/branches/master/badge.svg)](https://semaphoreci.com/joeybloggs/universal-translator)
-[![Coverage Status](https://coveralls.io/repos/github/go-playground/universal-translator/badge.svg)](https://coveralls.io/github/go-playground/universal-translator)
-[![Go Report Card](https://goreportcard.com/badge/github.com/go-playground/universal-translator)](https://goreportcard.com/report/github.com/go-playground/universal-translator)
-[![GoDoc](https://godoc.org/github.com/go-playground/universal-translator?status.svg)](https://godoc.org/github.com/go-playground/universal-translator)
-![License](https://img.shields.io/dub/l/vibe-d.svg)
-[![Gitter](https://badges.gitter.im/go-playground/universal-translator.svg)](https://gitter.im/go-playground/universal-translator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
-
-Universal Translator is an i18n Translator for Go/Golang using CLDR data + pluralization rules
-
-Why another i18n library?
---------------------------
-Because none of the plural rules seem to be correct out there, including the previous implementation of this package,
-so I took it upon myself to create [locales](https://github.com/go-playground/locales) for everyone to use; this package 
-is a thin wrapper around [locales](https://github.com/go-playground/locales) in order to store and translate text for 
-use in your applications.
-
-Features
---------
-- [x] Rules generated from the [CLDR](http://cldr.unicode.org/index/downloads) data, v30.0.3
-- [x] Contains Cardinal, Ordinal and Range Plural Rules
-- [x] Contains Month, Weekday and Timezone translations built in
-- [x] Contains Date & Time formatting functions
-- [x] Contains Number, Currency, Accounting and Percent formatting functions
-- [x] Supports the "Gregorian" calendar only ( my time isn't unlimited, had to draw the line somewhere )
-- [x] Support loading translations from files
-- [x] Exporting translations to file(s), mainly for getting them professionally translated
-- [ ] Code Generation for translation files -> Go code.. i.e. after it has been professionally translated
-- [ ] Tests for all languages, I need help with this, please see [here](https://github.com/go-playground/locales/issues/1)
-
-Installation
------------
-
-Use go get 
-
-```shell
-go get github.com/go-playground/universal-translator
-```
-
-Usage & Documentation
--------
-
-Please see https://godoc.org/github.com/go-playground/universal-translator for usage docs
-
-##### Examples:
-
-- [Basic](https://github.com/go-playground/universal-translator/tree/master/examples/basic)
-- [Full - no files](https://github.com/go-playground/universal-translator/tree/master/examples/full-no-files)
-- [Full - with files](https://github.com/go-playground/universal-translator/tree/master/examples/full-with-files)
-
-File formatting
---------------
-All types, Plain substitution, Cardinal, Ordinal and Range translations can all be contained withing the same file(s);
-they are only separated for easy viewing.
-
-##### Examples:
-
-- [Formats](https://github.com/go-playground/universal-translator/tree/master/examples/file-formats)
-
-##### Basic Makeup
-NOTE: not all fields are needed for all translation types, see [examples](https://github.com/go-playground/universal-translator/tree/master/examples/file-formats)
-```json
-{
-    "locale": "en",
-    "key": "days-left",
-    "trans": "You have {0} day left.",
-    "type": "Cardinal",
-    "rule": "One",
-    "override": false
-}
-```
-|Field|Description|
-|---|---|
-|locale|The locale for which the translation is for.|
-|key|The translation key that will be used to store and lookup each translation; normally it is a string or integer.|
-|trans|The actual translation text.|
-|type|The type of translation Cardinal, Ordinal, Range or "" for a plain substitution(not required to be defined if plain used)|
-|rule|The plural rule for which the translation is for eg. One, Two, Few, Many or Other.(not required to be defined if plain used)|
-|override|If you wish to override an existing translation that has already been registered, set this to 'true'. 99% of the time there is no need to define it.|
-
-Help With Tests
----------------
-To anyone interesting in helping or contributing, I sure could use some help creating tests for each language.
-Please see issue [here](https://github.com/go-playground/locales/issues/1) for details.
-
-License
-------
-Distributed under MIT License, please see license file in code for more details.
diff --git a/vendor/github.com/go-playground/universal-translator/logo.png b/vendor/github.com/go-playground/universal-translator/logo.png
deleted file mode 100644
index a37aa8c0cd0f6e1b98e0be3eb2531ebc6ac6717b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 16598
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
Z{{;$xH<!uod1L?p002ovPDHLkV1i8-eJlU~

diff --git a/vendor/github.com/go-stack/stack/.travis.yml b/vendor/github.com/go-stack/stack/.travis.yml
deleted file mode 100644
index e91cc9a0..00000000
--- a/vendor/github.com/go-stack/stack/.travis.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-language: go
-sudo: false
-go:
-  - 1.7
-  - 1.8
-  - 1.9
-  - tip
-
-before_install:
-  - go get github.com/mattn/goveralls
-
-script:
-  - goveralls -service=travis-ci
diff --git a/vendor/github.com/go-stack/stack/README.md b/vendor/github.com/go-stack/stack/README.md
deleted file mode 100644
index f11cccca..00000000
--- a/vendor/github.com/go-stack/stack/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-[![GoDoc](https://godoc.org/github.com/go-stack/stack?status.svg)](https://godoc.org/github.com/go-stack/stack)
-[![Go Report Card](https://goreportcard.com/badge/go-stack/stack)](https://goreportcard.com/report/go-stack/stack)
-[![TravisCI](https://travis-ci.org/go-stack/stack.svg?branch=master)](https://travis-ci.org/go-stack/stack)
-[![Coverage Status](https://coveralls.io/repos/github/go-stack/stack/badge.svg?branch=master)](https://coveralls.io/github/go-stack/stack?branch=master)
-
-# stack
-
-Package stack implements utilities to capture, manipulate, and format call
-stacks. It provides a simpler API than package runtime.
-
-The implementation takes care of the minutia and special cases of interpreting
-the program counter (pc) values returned by runtime.Callers.
-
-## Versioning
-
-Package stack publishes releases via [semver](http://semver.org/) compatible Git
-tags prefixed with a single 'v'. The master branch always contains the latest
-release. The develop branch contains unreleased commits.
-
-## Formatting
-
-Package stack's types implement fmt.Formatter, which provides a simple and
-flexible way to declaratively configure formatting when used with logging or
-error tracking packages.
-
-```go
-func DoTheThing() {
-    c := stack.Caller(0)
-    log.Print(c)          // "source.go:10"
-    log.Printf("%+v", c)  // "pkg/path/source.go:10"
-    log.Printf("%n", c)   // "DoTheThing"
-
-    s := stack.Trace().TrimRuntime()
-    log.Print(s)          // "[source.go:15 caller.go:42 main.go:14]"
-}
-```
-
-See the docs for all of the supported formatting options.
diff --git a/vendor/github.com/gogo/protobuf/gogoproto/Makefile b/vendor/github.com/gogo/protobuf/gogoproto/Makefile
deleted file mode 100644
index 0b4659b7..00000000
--- a/vendor/github.com/gogo/protobuf/gogoproto/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# Protocol Buffers for Go with Gadgets
-#
-# Copyright (c) 2013, The GoGo Authors. All rights reserved.
-# http://github.com/gogo/protobuf
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-regenerate:
-	go install github.com/gogo/protobuf/protoc-gen-gogo
-	protoc --gogo_out=Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor:../../../../ --proto_path=../../../../:../protobuf/:. *.proto
-
-restore:
-	cp gogo.pb.golden gogo.pb.go
-
-preserve:
-	cp gogo.pb.go gogo.pb.golden
diff --git a/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.golden b/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.golden
deleted file mode 100644
index f6502e4b..00000000
--- a/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.golden
+++ /dev/null
@@ -1,45 +0,0 @@
-// Code generated by protoc-gen-go.
-// source: gogo.proto
-// DO NOT EDIT!
-
-package gogoproto
-
-import proto "github.com/gogo/protobuf/proto"
-import json "encoding/json"
-import math "math"
-import google_protobuf "github.com/gogo/protobuf/protoc-gen-gogo/descriptor"
-
-// Reference proto, json, and math imports to suppress error if they are not otherwise used.
-var _ = proto.Marshal
-var _ = &json.SyntaxError{}
-var _ = math.Inf
-
-var E_Nullable = &proto.ExtensionDesc{
-	ExtendedType:  (*google_protobuf.FieldOptions)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         51235,
-	Name:          "gogoproto.nullable",
-	Tag:           "varint,51235,opt,name=nullable",
-}
-
-var E_Embed = &proto.ExtensionDesc{
-	ExtendedType:  (*google_protobuf.FieldOptions)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         51236,
-	Name:          "gogoproto.embed",
-	Tag:           "varint,51236,opt,name=embed",
-}
-
-var E_Customtype = &proto.ExtensionDesc{
-	ExtendedType:  (*google_protobuf.FieldOptions)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         51237,
-	Name:          "gogoproto.customtype",
-	Tag:           "bytes,51237,opt,name=customtype",
-}
-
-func init() {
-	proto.RegisterExtension(E_Nullable)
-	proto.RegisterExtension(E_Embed)
-	proto.RegisterExtension(E_Customtype)
-}
diff --git a/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto b/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto
deleted file mode 100644
index 7f099793..00000000
--- a/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto
+++ /dev/null
@@ -1,133 +0,0 @@
-// Protocol Buffers for Go with Gadgets
-//
-// Copyright (c) 2013, The GoGo Authors. All rights reserved.
-// http://github.com/gogo/protobuf
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto2";
-package gogoproto;
-
-import "google/protobuf/descriptor.proto";
-
-option java_package = "com.google.protobuf";
-option java_outer_classname = "GoGoProtos";
-option go_package = "github.com/gogo/protobuf/gogoproto";
-
-extend google.protobuf.EnumOptions {
-	optional bool goproto_enum_prefix = 62001;
-	optional bool goproto_enum_stringer = 62021;
-	optional bool enum_stringer = 62022;
-	optional string enum_customname = 62023;
-	optional bool enumdecl = 62024;
-}
-
-extend google.protobuf.EnumValueOptions {
-	optional string enumvalue_customname = 66001;
-}
-
-extend google.protobuf.FileOptions {
-	optional bool goproto_getters_all = 63001;
-	optional bool goproto_enum_prefix_all = 63002;
-	optional bool goproto_stringer_all = 63003;
-	optional bool verbose_equal_all = 63004;
-	optional bool face_all = 63005;
-	optional bool gostring_all = 63006;
-	optional bool populate_all = 63007;
-	optional bool stringer_all = 63008;
-	optional bool onlyone_all = 63009;
-
-	optional bool equal_all = 63013;
-	optional bool description_all = 63014;
-	optional bool testgen_all = 63015;
-	optional bool benchgen_all = 63016;
-	optional bool marshaler_all = 63017;
-	optional bool unmarshaler_all = 63018;
-	optional bool stable_marshaler_all = 63019;
-
-	optional bool sizer_all = 63020;
-
-	optional bool goproto_enum_stringer_all = 63021;
-	optional bool enum_stringer_all = 63022;
-
-	optional bool unsafe_marshaler_all = 63023;
-	optional bool unsafe_unmarshaler_all = 63024;
-
-	optional bool goproto_extensions_map_all = 63025;
-	optional bool goproto_unrecognized_all = 63026;
-	optional bool gogoproto_import = 63027;
-	optional bool protosizer_all = 63028;
-	optional bool compare_all = 63029;
-    optional bool typedecl_all = 63030;
-    optional bool enumdecl_all = 63031;
-
-	optional bool goproto_registration = 63032;
-}
-
-extend google.protobuf.MessageOptions {
-	optional bool goproto_getters = 64001;
-	optional bool goproto_stringer = 64003;
-	optional bool verbose_equal = 64004;
-	optional bool face = 64005;
-	optional bool gostring = 64006;
-	optional bool populate = 64007;
-	optional bool stringer = 67008;
-	optional bool onlyone = 64009;
-
-	optional bool equal = 64013;
-	optional bool description = 64014;
-	optional bool testgen = 64015;
-	optional bool benchgen = 64016;
-	optional bool marshaler = 64017;
-	optional bool unmarshaler = 64018;
-	optional bool stable_marshaler = 64019;
-
-	optional bool sizer = 64020;
-
-	optional bool unsafe_marshaler = 64023;
-	optional bool unsafe_unmarshaler = 64024;
-
-	optional bool goproto_extensions_map = 64025;
-	optional bool goproto_unrecognized = 64026;
-
-	optional bool protosizer = 64028;
-	optional bool compare = 64029;
-
-	optional bool typedecl = 64030;
-}
-
-extend google.protobuf.FieldOptions {
-	optional bool nullable = 65001;
-	optional bool embed = 65002;
-	optional string customtype = 65003;
-	optional string customname = 65004;
-	optional string jsontag = 65005;
-	optional string moretags = 65006;
-	optional string casttype = 65007;
-	optional string castkey = 65008;
-	optional string castvalue = 65009;
-
-	optional bool stdtime = 65010;
-	optional bool stdduration = 65011;
-}
diff --git a/vendor/github.com/gogo/protobuf/proto/Makefile b/vendor/github.com/gogo/protobuf/proto/Makefile
deleted file mode 100644
index 41c71757..00000000
--- a/vendor/github.com/gogo/protobuf/proto/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# Go support for Protocol Buffers - Google's data interchange format
-#
-# Copyright 2010 The Go Authors.  All rights reserved.
-# https://github.com/golang/protobuf
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-install:
-	go install
-
-test: install generate-test-pbs
-	go test
-
-
-generate-test-pbs:
-	make install
-	make -C testdata
-	protoc-min-version --version="3.0.0" --proto_path=.:../../../../:../protobuf --gogo_out=Mtestdata/test.proto=github.com/gogo/protobuf/proto/testdata,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types:. proto3_proto/proto3.proto
-	make
diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/Makefile b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/Makefile
deleted file mode 100644
index 3496dc99..00000000
--- a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# Go support for Protocol Buffers - Google's data interchange format
-#
-# Copyright 2010 The Go Authors.  All rights reserved.
-# https://github.com/golang/protobuf
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-regenerate:
-	go install github.com/gogo/protobuf/protoc-gen-gogo
-	go install github.com/gogo/protobuf/protoc-gen-gostring
-	protoc --gogo_out=. -I=../../protobuf/google/protobuf ../../protobuf/google/protobuf/descriptor.proto
-	protoc --gostring_out=. -I=../../protobuf/google/protobuf ../../protobuf/google/protobuf/descriptor.proto
diff --git a/vendor/github.com/gogo/protobuf/types/Makefile b/vendor/github.com/gogo/protobuf/types/Makefile
deleted file mode 100644
index c326d257..00000000
--- a/vendor/github.com/gogo/protobuf/types/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# Protocol Buffers for Go with Gadgets
-#
-# Copyright (c) 2016, The GoGo Authors. All rights reserved.
-# http://github.com/gogo/protobuf
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-regenerate:
-	go install github.com/gogo/protobuf/protoc-gen-gogotypes
-	go install github.com/gogo/protobuf/protoc-min-version
-
-	protoc-min-version --version="3.0.0" --gogotypes_out=. -I=../protobuf/google/protobuf ../protobuf/google/protobuf/any.proto
-	protoc-min-version --version="3.0.0" --gogotypes_out=. -I=../protobuf/google/protobuf ../protobuf/google/protobuf/empty.proto
-	protoc-min-version --version="3.0.0" --gogotypes_out=. -I=../protobuf/google/protobuf ../protobuf/google/protobuf/timestamp.proto
-	protoc-min-version --version="3.0.0" --gogotypes_out=. -I=../protobuf/google/protobuf ../protobuf/google/protobuf/duration.proto
-	protoc-min-version --version="3.0.0" --gogotypes_out=. -I=../protobuf/google/protobuf ../protobuf/google/protobuf/struct.proto
-	protoc-min-version --version="3.0.0" --gogotypes_out=. -I=../protobuf/google/protobuf ../protobuf/google/protobuf/wrappers.proto
-	protoc-min-version --version="3.0.0" --gogotypes_out=. -I=../protobuf/google/protobuf ../protobuf/google/protobuf/field_mask.proto
diff --git a/vendor/github.com/golang/protobuf/proto/Makefile b/vendor/github.com/golang/protobuf/proto/Makefile
deleted file mode 100644
index e2e0651a..00000000
--- a/vendor/github.com/golang/protobuf/proto/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# Go support for Protocol Buffers - Google's data interchange format
-#
-# Copyright 2010 The Go Authors.  All rights reserved.
-# https://github.com/golang/protobuf
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-install:
-	go install
-
-test: install generate-test-pbs
-	go test
-
-
-generate-test-pbs:
-	make install
-	make -C testdata
-	protoc --go_out=Mtestdata/test.proto=github.com/golang/protobuf/proto/testdata,Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. proto3_proto/proto3.proto
-	make
diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.proto b/vendor/github.com/golang/protobuf/ptypes/any/any.proto
deleted file mode 100644
index c7486676..00000000
--- a/vendor/github.com/golang/protobuf/ptypes/any/any.proto
+++ /dev/null
@@ -1,149 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option go_package = "github.com/golang/protobuf/ptypes/any";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "AnyProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// `Any` contains an arbitrary serialized protocol buffer message along with a
-// URL that describes the type of the serialized message.
-//
-// Protobuf library provides support to pack/unpack Any values in the form
-// of utility functions or additional generated methods of the Any type.
-//
-// Example 1: Pack and unpack a message in C++.
-//
-//     Foo foo = ...;
-//     Any any;
-//     any.PackFrom(foo);
-//     ...
-//     if (any.UnpackTo(&foo)) {
-//       ...
-//     }
-//
-// Example 2: Pack and unpack a message in Java.
-//
-//     Foo foo = ...;
-//     Any any = Any.pack(foo);
-//     ...
-//     if (any.is(Foo.class)) {
-//       foo = any.unpack(Foo.class);
-//     }
-//
-//  Example 3: Pack and unpack a message in Python.
-//
-//     foo = Foo(...)
-//     any = Any()
-//     any.Pack(foo)
-//     ...
-//     if any.Is(Foo.DESCRIPTOR):
-//       any.Unpack(foo)
-//       ...
-//
-//  Example 4: Pack and unpack a message in Go
-//
-//      foo := &pb.Foo{...}
-//      any, err := ptypes.MarshalAny(foo)
-//      ...
-//      foo := &pb.Foo{}
-//      if err := ptypes.UnmarshalAny(any, foo); err != nil {
-//        ...
-//      }
-//
-// The pack methods provided by protobuf library will by default use
-// 'type.googleapis.com/full.type.name' as the type URL and the unpack
-// methods only use the fully qualified type name after the last '/'
-// in the type URL, for example "foo.bar.com/x/y.z" will yield type
-// name "y.z".
-//
-//
-// JSON
-// ====
-// The JSON representation of an `Any` value uses the regular
-// representation of the deserialized, embedded message, with an
-// additional field `@type` which contains the type URL. Example:
-//
-//     package google.profile;
-//     message Person {
-//       string first_name = 1;
-//       string last_name = 2;
-//     }
-//
-//     {
-//       "@type": "type.googleapis.com/google.profile.Person",
-//       "firstName": <string>,
-//       "lastName": <string>
-//     }
-//
-// If the embedded message type is well-known and has a custom JSON
-// representation, that representation will be embedded adding a field
-// `value` which holds the custom JSON in addition to the `@type`
-// field. Example (for message [google.protobuf.Duration][]):
-//
-//     {
-//       "@type": "type.googleapis.com/google.protobuf.Duration",
-//       "value": "1.212s"
-//     }
-//
-message Any {
-  // A URL/resource name whose content describes the type of the
-  // serialized protocol buffer message.
-  //
-  // For URLs which use the scheme `http`, `https`, or no scheme, the
-  // following restrictions and interpretations apply:
-  //
-  // * If no scheme is provided, `https` is assumed.
-  // * The last segment of the URL's path must represent the fully
-  //   qualified name of the type (as in `path/google.protobuf.Duration`).
-  //   The name should be in a canonical form (e.g., leading "." is
-  //   not accepted).
-  // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
-  //   value in binary format, or produce an error.
-  // * Applications are allowed to cache lookup results based on the
-  //   URL, or have them precompiled into a binary to avoid any
-  //   lookup. Therefore, binary compatibility needs to be preserved
-  //   on changes to types. (Use versioned type names to manage
-  //   breaking changes.)
-  //
-  // Schemes other than `http`, `https` (or the empty scheme) might be
-  // used with implementation specific semantics.
-  //
-  string type_url = 1;
-
-  // Must be a valid serialized protocol buffer of the above specified type.
-  bytes value = 2;
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto b/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
deleted file mode 100644
index 975fce41..00000000
--- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
+++ /dev/null
@@ -1,117 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option go_package = "github.com/golang/protobuf/ptypes/duration";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "DurationProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// A Duration represents a signed, fixed-length span of time represented
-// as a count of seconds and fractions of seconds at nanosecond
-// resolution. It is independent of any calendar and concepts like "day"
-// or "month". It is related to Timestamp in that the difference between
-// two Timestamp values is a Duration and it can be added or subtracted
-// from a Timestamp. Range is approximately +-10,000 years.
-//
-// # Examples
-//
-// Example 1: Compute Duration from two Timestamps in pseudo code.
-//
-//     Timestamp start = ...;
-//     Timestamp end = ...;
-//     Duration duration = ...;
-//
-//     duration.seconds = end.seconds - start.seconds;
-//     duration.nanos = end.nanos - start.nanos;
-//
-//     if (duration.seconds < 0 && duration.nanos > 0) {
-//       duration.seconds += 1;
-//       duration.nanos -= 1000000000;
-//     } else if (durations.seconds > 0 && duration.nanos < 0) {
-//       duration.seconds -= 1;
-//       duration.nanos += 1000000000;
-//     }
-//
-// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
-//
-//     Timestamp start = ...;
-//     Duration duration = ...;
-//     Timestamp end = ...;
-//
-//     end.seconds = start.seconds + duration.seconds;
-//     end.nanos = start.nanos + duration.nanos;
-//
-//     if (end.nanos < 0) {
-//       end.seconds -= 1;
-//       end.nanos += 1000000000;
-//     } else if (end.nanos >= 1000000000) {
-//       end.seconds += 1;
-//       end.nanos -= 1000000000;
-//     }
-//
-// Example 3: Compute Duration from datetime.timedelta in Python.
-//
-//     td = datetime.timedelta(days=3, minutes=10)
-//     duration = Duration()
-//     duration.FromTimedelta(td)
-//
-// # JSON Mapping
-//
-// In JSON format, the Duration type is encoded as a string rather than an
-// object, where the string ends in the suffix "s" (indicating seconds) and
-// is preceded by the number of seconds, with nanoseconds expressed as
-// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
-// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
-// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
-// microsecond should be expressed in JSON format as "3.000001s".
-//
-//
-message Duration {
-
-  // Signed seconds of the span of time. Must be from -315,576,000,000
-  // to +315,576,000,000 inclusive. Note: these bounds are computed from:
-  // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
-  int64 seconds = 1;
-
-  // Signed fractions of a second at nanosecond resolution of the span
-  // of time. Durations less than one second are represented with a 0
-  // `seconds` field and a positive or negative `nanos` field. For durations
-  // of one second or more, a non-zero value for the `nanos` field must be
-  // of the same sign as the `seconds` field. Must be from -999,999,999
-  // to +999,999,999 inclusive.
-  int32 nanos = 2;
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/regen.sh b/vendor/github.com/golang/protobuf/ptypes/regen.sh
deleted file mode 100755
index b50a9414..00000000
--- a/vendor/github.com/golang/protobuf/ptypes/regen.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash -e
-#
-# This script fetches and rebuilds the "well-known types" protocol buffers.
-# To run this you will need protoc and goprotobuf installed;
-# see https://github.com/golang/protobuf for instructions.
-# You also need Go and Git installed.
-
-PKG=github.com/golang/protobuf/ptypes
-UPSTREAM=https://github.com/google/protobuf
-UPSTREAM_SUBDIR=src/google/protobuf
-PROTO_FILES=(any duration empty struct timestamp wrappers)
-
-function die() {
-  echo 1>&2 $*
-  exit 1
-}
-
-# Sanity check that the right tools are accessible.
-for tool in go git protoc protoc-gen-go; do
-  q=$(which $tool) || die "didn't find $tool"
-  echo 1>&2 "$tool: $q"
-done
-
-tmpdir=$(mktemp -d -t regen-wkt.XXXXXX)
-trap 'rm -rf $tmpdir' EXIT
-
-echo -n 1>&2 "finding package dir... "
-pkgdir=$(go list -f '{{.Dir}}' $PKG)
-echo 1>&2 $pkgdir
-base=$(echo $pkgdir | sed "s,/$PKG\$,,")
-echo 1>&2 "base: $base"
-cd "$base"
-
-echo 1>&2 "fetching latest protos... "
-git clone -q $UPSTREAM $tmpdir
-
-for file in ${PROTO_FILES[@]}; do
-  echo 1>&2 "* $file"
-  protoc --go_out=. -I$tmpdir/src $tmpdir/src/google/protobuf/$file.proto || die
-  cp $tmpdir/src/google/protobuf/$file.proto $PKG/$file
-done
-
-echo 1>&2 "All OK"
diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
deleted file mode 100644
index b7cbd175..00000000
--- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
+++ /dev/null
@@ -1,133 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option go_package = "github.com/golang/protobuf/ptypes/timestamp";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "TimestampProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// A Timestamp represents a point in time independent of any time zone
-// or calendar, represented as seconds and fractions of seconds at
-// nanosecond resolution in UTC Epoch time. It is encoded using the
-// Proleptic Gregorian Calendar which extends the Gregorian calendar
-// backwards to year one. It is encoded assuming all minutes are 60
-// seconds long, i.e. leap seconds are "smeared" so that no leap second
-// table is needed for interpretation. Range is from
-// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.
-// By restricting to that range, we ensure that we can convert to
-// and from  RFC 3339 date strings.
-// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
-//
-// # Examples
-//
-// Example 1: Compute Timestamp from POSIX `time()`.
-//
-//     Timestamp timestamp;
-//     timestamp.set_seconds(time(NULL));
-//     timestamp.set_nanos(0);
-//
-// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
-//
-//     struct timeval tv;
-//     gettimeofday(&tv, NULL);
-//
-//     Timestamp timestamp;
-//     timestamp.set_seconds(tv.tv_sec);
-//     timestamp.set_nanos(tv.tv_usec * 1000);
-//
-// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
-//
-//     FILETIME ft;
-//     GetSystemTimeAsFileTime(&ft);
-//     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
-//
-//     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
-//     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
-//     Timestamp timestamp;
-//     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
-//     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
-//
-// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
-//
-//     long millis = System.currentTimeMillis();
-//
-//     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
-//         .setNanos((int) ((millis % 1000) * 1000000)).build();
-//
-//
-// Example 5: Compute Timestamp from current time in Python.
-//
-//     timestamp = Timestamp()
-//     timestamp.GetCurrentTime()
-//
-// # JSON Mapping
-//
-// In JSON format, the Timestamp type is encoded as a string in the
-// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
-// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
-// where {year} is always expressed using four digits while {month}, {day},
-// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
-// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
-// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
-// is required, though only UTC (as indicated by "Z") is presently supported.
-//
-// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
-// 01:30 UTC on January 15, 2017.
-//
-// In JavaScript, one can convert a Date object to this format using the
-// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString]
-// method. In Python, a standard `datetime.datetime` object can be converted
-// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
-// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
-// can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
-// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime())
-// to obtain a formatter capable of generating timestamps in this format.
-//
-//
-message Timestamp {
-
-  // Represents seconds of UTC time since Unix epoch
-  // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
-  // 9999-12-31T23:59:59Z inclusive.
-  int64 seconds = 1;
-
-  // Non-negative fractions of a second at nanosecond resolution. Negative
-  // second values with fractions must still have non-negative nanos values
-  // that count forward in time. Must be from 0 to 999,999,999
-  // inclusive.
-  int32 nanos = 2;
-}
diff --git a/vendor/github.com/golang/snappy/.gitignore b/vendor/github.com/golang/snappy/.gitignore
deleted file mode 100644
index 042091d9..00000000
--- a/vendor/github.com/golang/snappy/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-cmd/snappytool/snappytool
-testdata/bench
-
-# These explicitly listed benchmark data files are for an obsolete version of
-# snappy_test.go.
-testdata/alice29.txt
-testdata/asyoulik.txt
-testdata/fireworks.jpeg
-testdata/geo.protodata
-testdata/html
-testdata/html_x_4
-testdata/kppkn.gtb
-testdata/lcet10.txt
-testdata/paper-100k.pdf
-testdata/plrabn12.txt
-testdata/urls.10K
diff --git a/vendor/github.com/golang/snappy/README b/vendor/github.com/golang/snappy/README
deleted file mode 100644
index cea12879..00000000
--- a/vendor/github.com/golang/snappy/README
+++ /dev/null
@@ -1,107 +0,0 @@
-The Snappy compression format in the Go programming language.
-
-To download and install from source:
-$ go get github.com/golang/snappy
-
-Unless otherwise noted, the Snappy-Go source files are distributed
-under the BSD-style license found in the LICENSE file.
-
-
-
-Benchmarks.
-
-The golang/snappy benchmarks include compressing (Z) and decompressing (U) ten
-or so files, the same set used by the C++ Snappy code (github.com/google/snappy
-and note the "google", not "golang"). On an "Intel(R) Core(TM) i7-3770 CPU @
-3.40GHz", Go's GOARCH=amd64 numbers as of 2016-05-29:
-
-"go test -test.bench=."
-
-_UFlat0-8         2.19GB/s ± 0%  html
-_UFlat1-8         1.41GB/s ± 0%  urls
-_UFlat2-8         23.5GB/s ± 2%  jpg
-_UFlat3-8         1.91GB/s ± 0%  jpg_200
-_UFlat4-8         14.0GB/s ± 1%  pdf
-_UFlat5-8         1.97GB/s ± 0%  html4
-_UFlat6-8          814MB/s ± 0%  txt1
-_UFlat7-8          785MB/s ± 0%  txt2
-_UFlat8-8          857MB/s ± 0%  txt3
-_UFlat9-8          719MB/s ± 1%  txt4
-_UFlat10-8        2.84GB/s ± 0%  pb
-_UFlat11-8        1.05GB/s ± 0%  gaviota
-
-_ZFlat0-8         1.04GB/s ± 0%  html
-_ZFlat1-8          534MB/s ± 0%  urls
-_ZFlat2-8         15.7GB/s ± 1%  jpg
-_ZFlat3-8          740MB/s ± 3%  jpg_200
-_ZFlat4-8         9.20GB/s ± 1%  pdf
-_ZFlat5-8          991MB/s ± 0%  html4
-_ZFlat6-8          379MB/s ± 0%  txt1
-_ZFlat7-8          352MB/s ± 0%  txt2
-_ZFlat8-8          396MB/s ± 1%  txt3
-_ZFlat9-8          327MB/s ± 1%  txt4
-_ZFlat10-8        1.33GB/s ± 1%  pb
-_ZFlat11-8         605MB/s ± 1%  gaviota
-
-
-
-"go test -test.bench=. -tags=noasm"
-
-_UFlat0-8          621MB/s ± 2%  html
-_UFlat1-8          494MB/s ± 1%  urls
-_UFlat2-8         23.2GB/s ± 1%  jpg
-_UFlat3-8         1.12GB/s ± 1%  jpg_200
-_UFlat4-8         4.35GB/s ± 1%  pdf
-_UFlat5-8          609MB/s ± 0%  html4
-_UFlat6-8          296MB/s ± 0%  txt1
-_UFlat7-8          288MB/s ± 0%  txt2
-_UFlat8-8          309MB/s ± 1%  txt3
-_UFlat9-8          280MB/s ± 1%  txt4
-_UFlat10-8         753MB/s ± 0%  pb
-_UFlat11-8         400MB/s ± 0%  gaviota
-
-_ZFlat0-8          409MB/s ± 1%  html
-_ZFlat1-8          250MB/s ± 1%  urls
-_ZFlat2-8         12.3GB/s ± 1%  jpg
-_ZFlat3-8          132MB/s ± 0%  jpg_200
-_ZFlat4-8         2.92GB/s ± 0%  pdf
-_ZFlat5-8          405MB/s ± 1%  html4
-_ZFlat6-8          179MB/s ± 1%  txt1
-_ZFlat7-8          170MB/s ± 1%  txt2
-_ZFlat8-8          189MB/s ± 1%  txt3
-_ZFlat9-8          164MB/s ± 1%  txt4
-_ZFlat10-8         479MB/s ± 1%  pb
-_ZFlat11-8         270MB/s ± 1%  gaviota
-
-
-
-For comparison (Go's encoded output is byte-for-byte identical to C++'s), here
-are the numbers from C++ Snappy's
-
-make CXXFLAGS="-O2 -DNDEBUG -g" clean snappy_unittest.log && cat snappy_unittest.log
-
-BM_UFlat/0     2.4GB/s  html
-BM_UFlat/1     1.4GB/s  urls
-BM_UFlat/2    21.8GB/s  jpg
-BM_UFlat/3     1.5GB/s  jpg_200
-BM_UFlat/4    13.3GB/s  pdf
-BM_UFlat/5     2.1GB/s  html4
-BM_UFlat/6     1.0GB/s  txt1
-BM_UFlat/7   959.4MB/s  txt2
-BM_UFlat/8     1.0GB/s  txt3
-BM_UFlat/9   864.5MB/s  txt4
-BM_UFlat/10    2.9GB/s  pb
-BM_UFlat/11    1.2GB/s  gaviota
-
-BM_ZFlat/0   944.3MB/s  html (22.31 %)
-BM_ZFlat/1   501.6MB/s  urls (47.78 %)
-BM_ZFlat/2    14.3GB/s  jpg (99.95 %)
-BM_ZFlat/3   538.3MB/s  jpg_200 (73.00 %)
-BM_ZFlat/4     8.3GB/s  pdf (83.30 %)
-BM_ZFlat/5   903.5MB/s  html4 (22.52 %)
-BM_ZFlat/6   336.0MB/s  txt1 (57.88 %)
-BM_ZFlat/7   312.3MB/s  txt2 (61.91 %)
-BM_ZFlat/8   353.1MB/s  txt3 (54.99 %)
-BM_ZFlat/9   289.9MB/s  txt4 (66.26 %)
-BM_ZFlat/10    1.2GB/s  pb (19.68 %)
-BM_ZFlat/11  527.4MB/s  gaviota (37.72 %)
diff --git a/vendor/github.com/gorilla/websocket/.gitignore b/vendor/github.com/gorilla/websocket/.gitignore
deleted file mode 100644
index ac710204..00000000
--- a/vendor/github.com/gorilla/websocket/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-
-.idea/
-*.iml
\ No newline at end of file
diff --git a/vendor/github.com/gorilla/websocket/.travis.yml b/vendor/github.com/gorilla/websocket/.travis.yml
deleted file mode 100644
index 3d8d29cf..00000000
--- a/vendor/github.com/gorilla/websocket/.travis.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-language: go
-sudo: false
-
-matrix:
-  include:
-    - go: 1.4
-    - go: 1.5
-    - go: 1.6
-    - go: 1.7
-    - go: 1.8
-    - go: tip
-  allow_failures:
-    - go: tip
-
-script:
-  - go get -t -v ./...
-  - diff -u <(echo -n) <(gofmt -d .)
-  - go vet $(go list ./... | grep -v /vendor/)
-  - go test -v -race ./...
diff --git a/vendor/github.com/gorilla/websocket/README.md b/vendor/github.com/gorilla/websocket/README.md
deleted file mode 100644
index 33c3d2be..00000000
--- a/vendor/github.com/gorilla/websocket/README.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# Gorilla WebSocket
-
-Gorilla WebSocket is a [Go](http://golang.org/) implementation of the
-[WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol.
-
-[![Build Status](https://travis-ci.org/gorilla/websocket.svg?branch=master)](https://travis-ci.org/gorilla/websocket)
-[![GoDoc](https://godoc.org/github.com/gorilla/websocket?status.svg)](https://godoc.org/github.com/gorilla/websocket)
-
-### Documentation
-
-* [API Reference](http://godoc.org/github.com/gorilla/websocket)
-* [Chat example](https://github.com/gorilla/websocket/tree/master/examples/chat)
-* [Command example](https://github.com/gorilla/websocket/tree/master/examples/command)
-* [Client and server example](https://github.com/gorilla/websocket/tree/master/examples/echo)
-* [File watch example](https://github.com/gorilla/websocket/tree/master/examples/filewatch)
-
-### Status
-
-The Gorilla WebSocket package provides a complete and tested implementation of
-the [WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol. The
-package API is stable.
-
-### Installation
-
-    go get github.com/gorilla/websocket
-
-### Protocol Compliance
-
-The Gorilla WebSocket package passes the server tests in the [Autobahn Test
-Suite](http://autobahn.ws/testsuite) using the application in the [examples/autobahn
-subdirectory](https://github.com/gorilla/websocket/tree/master/examples/autobahn).
-
-### Gorilla WebSocket compared with other packages
-
-<table>
-<tr>
-<th></th>
-<th><a href="http://godoc.org/github.com/gorilla/websocket">github.com/gorilla</a></th>
-<th><a href="http://godoc.org/golang.org/x/net/websocket">golang.org/x/net</a></th>
-</tr>
-<tr>
-<tr><td colspan="3"><a href="http://tools.ietf.org/html/rfc6455">RFC 6455</a> Features</td></tr>
-<tr><td>Passes <a href="http://autobahn.ws/testsuite/">Autobahn Test Suite</a></td><td><a href="https://github.com/gorilla/websocket/tree/master/examples/autobahn">Yes</a></td><td>No</td></tr>
-<tr><td>Receive <a href="https://tools.ietf.org/html/rfc6455#section-5.4">fragmented</a> message<td>Yes</td><td><a href="https://code.google.com/p/go/issues/detail?id=7632">No</a>, see note 1</td></tr>
-<tr><td>Send <a href="https://tools.ietf.org/html/rfc6455#section-5.5.1">close</a> message</td><td><a href="http://godoc.org/github.com/gorilla/websocket#hdr-Control_Messages">Yes</a></td><td><a href="https://code.google.com/p/go/issues/detail?id=4588">No</a></td></tr>
-<tr><td>Send <a href="https://tools.ietf.org/html/rfc6455#section-5.5.2">pings</a> and receive <a href="https://tools.ietf.org/html/rfc6455#section-5.5.3">pongs</a></td><td><a href="http://godoc.org/github.com/gorilla/websocket#hdr-Control_Messages">Yes</a></td><td>No</td></tr>
-<tr><td>Get the <a href="https://tools.ietf.org/html/rfc6455#section-5.6">type</a> of a received data message</td><td>Yes</td><td>Yes, see note 2</td></tr>
-<tr><td colspan="3">Other Features</tr></td>
-<tr><td><a href="https://tools.ietf.org/html/rfc7692">Compression Extensions</a></td><td>Experimental</td><td>No</td></tr>
-<tr><td>Read message using io.Reader</td><td><a href="http://godoc.org/github.com/gorilla/websocket#Conn.NextReader">Yes</a></td><td>No, see note 3</td></tr>
-<tr><td>Write message using io.WriteCloser</td><td><a href="http://godoc.org/github.com/gorilla/websocket#Conn.NextWriter">Yes</a></td><td>No, see note 3</td></tr>
-</table>
-
-Notes: 
-
-1. Large messages are fragmented in [Chrome's new WebSocket implementation](http://www.ietf.org/mail-archive/web/hybi/current/msg10503.html).
-2. The application can get the type of a received data message by implementing
-   a [Codec marshal](http://godoc.org/golang.org/x/net/websocket#Codec.Marshal)
-   function.
-3. The go.net io.Reader and io.Writer operate across WebSocket frame boundaries.
-  Read returns when the input buffer is full or a frame boundary is
-  encountered. Each call to Write sends a single frame message. The Gorilla
-  io.Reader and io.WriteCloser operate on a single WebSocket message.
-
diff --git a/vendor/github.com/imdario/mergo/.gitignore b/vendor/github.com/imdario/mergo/.gitignore
deleted file mode 100644
index 529c3412..00000000
--- a/vendor/github.com/imdario/mergo/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-#### joe made this: http://goel.io/joe
-
-#### go ####
-# Binaries for programs and plugins
-*.exe
-*.dll
-*.so
-*.dylib
-
-# Test binary, build with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736
-.glide/
-
-#### vim ####
-# Swap
-[._]*.s[a-v][a-z]
-[._]*.sw[a-p]
-[._]s[a-v][a-z]
-[._]sw[a-p]
-
-# Session
-Session.vim
-
-# Temporary
-.netrwhist
-*~
-# Auto-generated tag files
-tags
diff --git a/vendor/github.com/imdario/mergo/.travis.yml b/vendor/github.com/imdario/mergo/.travis.yml
deleted file mode 100644
index b13a50ed..00000000
--- a/vendor/github.com/imdario/mergo/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: go
-install:
-  - go get -t
-  - go get golang.org/x/tools/cmd/cover
-  - go get github.com/mattn/goveralls
-script:
-  - $HOME/gopath/bin/goveralls -service=travis-ci -repotoken $COVERALLS_TOKEN
diff --git a/vendor/github.com/imdario/mergo/CODE_OF_CONDUCT.md b/vendor/github.com/imdario/mergo/CODE_OF_CONDUCT.md
deleted file mode 100644
index 469b4490..00000000
--- a/vendor/github.com/imdario/mergo/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at i@dario.im. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
diff --git a/vendor/github.com/imdario/mergo/README.md b/vendor/github.com/imdario/mergo/README.md
deleted file mode 100644
index 4a99d317..00000000
--- a/vendor/github.com/imdario/mergo/README.md
+++ /dev/null
@@ -1,207 +0,0 @@
-# Mergo
-
-A helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements.
-
-Also a lovely [comune](http://en.wikipedia.org/wiki/Mergo) (municipality) in the Province of Ancona in the Italian region of Marche.
-
-## Status
-
-It is ready for production use. [It is used in several projects by Docker, Google, The Linux Foundation, VMWare, Shopify, etc](https://github.com/imdario/mergo#mergo-in-the-wild).
-
-[![Build Status][1]][2]
-[![GoDoc][3]][4]
-[![GoCard][5]][6]
-[![Coverage Status][7]][8]
-
-[1]: https://travis-ci.org/imdario/mergo.png
-[2]: https://travis-ci.org/imdario/mergo
-[3]: https://godoc.org/github.com/imdario/mergo?status.svg
-[4]: https://godoc.org/github.com/imdario/mergo
-[5]: https://goreportcard.com/badge/imdario/mergo
-[6]: https://goreportcard.com/report/github.com/imdario/mergo
-[7]: https://coveralls.io/repos/github/imdario/mergo/badge.svg?branch=master
-[8]: https://coveralls.io/github/imdario/mergo?branch=master
-
-### Latest release
-
-[Release 0.3.1](https://github.com/imdario/mergo/releases/tag/0.3.1) is an important release because it changes `Merge()`and `Map()` signatures to support [transformers](#transformers). An optional/variadic argument has been added, so it won't break existing code.
-
-### Important note
-
-If you were using Mergo **before** April 6th 2015, please check your project works as intended after updating your local copy with ```go get -u github.com/imdario/mergo```. I apologize for any issue caused by its previous behavior and any future bug that Mergo could cause (I hope it won't!) in existing projects after the change (release 0.2.0).
-
-### Mergo in the wild
-
-- [moby/moby](https://github.com/moby/moby)
-- [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
-- [vmware/dispatch](https://github.com/vmware/dispatch)
-- [Shopify/themekit](https://github.com/Shopify/themekit)
-- [imdario/zas](https://github.com/imdario/zas)
-- [matcornic/hermes](https://github.com/matcornic/hermes)
-- [OpenBazaar/openbazaar-go](https://github.com/OpenBazaar/openbazaar-go)
-- [kataras/iris](https://github.com/kataras/iris)
-- [michaelsauter/crane](https://github.com/michaelsauter/crane)
-- [go-task/task](https://github.com/go-task/task)
-- [sensu/uchiwa](https://github.com/sensu/uchiwa)
-- [ory/hydra](https://github.com/ory/hydra)
-- [sisatech/vcli](https://github.com/sisatech/vcli)
-- [dairycart/dairycart](https://github.com/dairycart/dairycart)
-- [projectcalico/felix](https://github.com/projectcalico/felix)
-- [resin-os/balena](https://github.com/resin-os/balena)
-- [go-kivik/kivik](https://github.com/go-kivik/kivik)
-- [Telefonica/govice](https://github.com/Telefonica/govice)
-- [supergiant/supergiant](supergiant/supergiant)
-- [SergeyTsalkov/brooce](https://github.com/SergeyTsalkov/brooce)
-- [soniah/dnsmadeeasy](https://github.com/soniah/dnsmadeeasy)
-- [ohsu-comp-bio/funnel](https://github.com/ohsu-comp-bio/funnel)
-- [EagerIO/Stout](https://github.com/EagerIO/Stout)
-- [lynndylanhurley/defsynth-api](https://github.com/lynndylanhurley/defsynth-api)
-- [russross/canvasassignments](https://github.com/russross/canvasassignments)
-- [rdegges/cryptly-api](https://github.com/rdegges/cryptly-api)
-- [casualjim/exeggutor](https://github.com/casualjim/exeggutor)
-- [divshot/gitling](https://github.com/divshot/gitling)
-- [RWJMurphy/gorl](https://github.com/RWJMurphy/gorl)
-- [andrerocker/deploy42](https://github.com/andrerocker/deploy42)
-- [elwinar/rambler](https://github.com/elwinar/rambler)
-- [tmaiaroto/gopartman](https://github.com/tmaiaroto/gopartman)
-- [jfbus/impressionist](https://github.com/jfbus/impressionist)
-- [Jmeyering/zealot](https://github.com/Jmeyering/zealot)
-- [godep-migrator/rigger-host](https://github.com/godep-migrator/rigger-host)
-- [Dronevery/MultiwaySwitch-Go](https://github.com/Dronevery/MultiwaySwitch-Go)
-- [thoas/picfit](https://github.com/thoas/picfit)
-- [mantasmatelis/whooplist-server](https://github.com/mantasmatelis/whooplist-server)
-- [jnuthong/item_search](https://github.com/jnuthong/item_search)
-- [bukalapak/snowboard](https://github.com/bukalapak/snowboard)
-
-## Installation
-
-    go get github.com/imdario/mergo
-
-    // use in your .go code
-    import (
-        "github.com/imdario/mergo"
-    )
-
-## Usage
-
-You can only merge same-type structs with exported fields initialized as zero value of their type and same-types maps. Mergo won't merge unexported (private) fields but will do recursively any exported one. Also maps will be merged recursively except for structs inside maps (because they are not addressable using Go reflection).
-
-```go
-if err := mergo.Merge(&dst, src); err != nil {
-    // ...
-}
-```
-
-Also, you can merge overwriting values using the transformer `WithOverride`.
-
-```go
-if err := mergo.Merge(&dst, src, WithOverride); err != nil {
-    // ...
-}
-```
-
-Additionally, you can map a `map[string]interface{}` to a struct (and otherwise, from struct to map), following the same restrictions as in `Merge()`. Keys are capitalized to find each corresponding exported field.
-
-```go
-if err := mergo.Map(&dst, srcMap); err != nil {
-    // ...
-}
-```
-
-Warning: if you map a struct to map, it won't do it recursively. Don't expect Mergo to map struct members of your struct as `map[string]interface{}`. They will be just assigned as values.
-
-More information and examples in [godoc documentation](http://godoc.org/github.com/imdario/mergo).
-
-### Nice example
-
-```go
-package main
-
-import (
-	"fmt"
-	"github.com/imdario/mergo"
-)
-
-type Foo struct {
-	A string
-	B int64
-}
-
-func main() {
-	src := Foo{
-		A: "one",
-		B: 2,
-	}
-	dest := Foo{
-		A: "two",
-	}
-	mergo.Merge(&dest, src)
-	fmt.Println(dest)
-	// Will print
-	// {two 2}
-}
-```
-
-Note: if test are failing due missing package, please execute:
-
-    go get gopkg.in/yaml.v2
-
-### Transformers
-
-Transformers allow to merge specific types differently than in the default behavior. In other words, now you can customize how some types are merged. For example, `time.Time` is a struct; it doesn't have zero value but IsZero can return true because it has fields with zero value. How can we merge a non-zero `time.Time`?
-
-```go
-package main
-
-import (
-	"fmt"
-        "reflect"
-        "time"
-)
-
-type timeTransfomer struct {
-}
-
-func (t timeTransfomer) Transformer(typ reflect.Type) func(dst, src reflect.Value) error {
-	if typ == reflect.TypeOf(time.Time{}) {
-		return func(dst, src reflect.Value) error {
-			if dst.CanSet() {
-				isZero := dst.MethodByName("IsZero")
-				result := isZero.Call([]reflect.Value{})
-				if result[0].Bool() {
-					dst.Set(src)
-				}
-			}
-			return nil
-		}
-	}
-	return nil
-}
-
-type Snapshot struct {
-	Time time.Time
-	// ...
-}
-
-func main() {
-	src := Snapshot{time.Now()}
-	dest := Snapshot{}
-	mergo.Merge(&dest, src, WithTransformers(timeTransfomer{}))
-	fmt.Println(dest)
-	// Will print
-	// { 2018-01-12 01:15:00 +0000 UTC m=+0.000000001 }
-}
-```
-
-
-## Contact me
-
-If I can help you, you have an idea or you are using Mergo in your projects, don't hesitate to drop me a line (or a pull request): [@im_dario](https://twitter.com/im_dario)
-
-## About
-
-Written by [Dario Castañé](http://dario.im).
-
-## License
-
-[BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause) license, as [Go language](http://golang.org/LICENSE).
diff --git a/vendor/github.com/inconshreveable/mousetrap/README.md b/vendor/github.com/inconshreveable/mousetrap/README.md
deleted file mode 100644
index 7a950d17..00000000
--- a/vendor/github.com/inconshreveable/mousetrap/README.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# mousetrap
-
-mousetrap is a tiny library that answers a single question.
-
-On a Windows machine, was the process invoked by someone double clicking on
-the executable file while browsing in explorer?
-
-### Motivation
-
-Windows developers unfamiliar with command line tools will often "double-click"
-the executable for a tool. Because most CLI tools print the help and then exit
-when invoked without arguments, this is often very frustrating for those users.
-
-mousetrap provides a way to detect these invocations so that you can provide
-more helpful behavior and instructions on how to run the CLI tool. To see what
-this looks like, both from an organizational and a technical perspective, see
-https://inconshreveable.com/09-09-2014/sweat-the-small-stuff/
-
-### The interface
-
-The library exposes a single interface:
-
-    func StartedByExplorer() (bool)
diff --git a/vendor/github.com/jawher/mow.cli/.gitignore b/vendor/github.com/jawher/mow.cli/.gitignore
deleted file mode 100644
index 4feabb0b..00000000
--- a/vendor/github.com/jawher/mow.cli/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-testdata/*.golden
-coverage.out
diff --git a/vendor/github.com/jawher/mow.cli/.travis.yml b/vendor/github.com/jawher/mow.cli/.travis.yml
deleted file mode 100644
index 768003f3..00000000
--- a/vendor/github.com/jawher/mow.cli/.travis.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-language: go
-go:
-- 1.8
-- 1.7
-- tip
-sudo: false
-
-install: make setup
-
-script: make check test
-
-deploy:
-  provider: releases
-  api_key:
-    secure: D2fwuS7n54ZkjfRmLMEAnwR2lQLa5xd+4s0l65pI6UN4ljVfQwQiFdZXaZWFr8PYSTKTm0UPj6Iqqw7VOl8I6iDzcaOqN3hoh5mDaJ7kyo7GZRPodwK9MKdOp5dPw459L2Atll8kxb4iYmfnjmcl0lDCUuWvMxXx+zgiFTB7BO0=
-  skip_cleanup: true
-  on:
-    tags: true
-    go: 1.8
diff --git a/vendor/github.com/jawher/mow.cli/Makefile b/vendor/github.com/jawher/mow.cli/Makefile
deleted file mode 100644
index ddb334d9..00000000
--- a/vendor/github.com/jawher/mow.cli/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-test:
-	go test -v ./...
-
-check: lint vet fmtcheck ineffassign
-
-lint:
-	golint -set_exit_status .
-
-vet:
-	go vet
-
-fmtcheck:
-	@ export output="$$(gofmt -s -d .)"; \
-		[ -n "$${output}" ] && echo "$${output}" && export status=1; \
-		exit $${status:-0}
-
-ineffassign:
-	ineffassign .
-
-setup:
-	go get github.com/gordonklaus/ineffassign
-	go get github.com/golang/lint/golint
-	go get -t -u ./...
-
-.PHONY: test check lint vet fmtcheck ineffassign
diff --git a/vendor/github.com/jawher/mow.cli/README.md b/vendor/github.com/jawher/mow.cli/README.md
deleted file mode 100644
index 62be4312..00000000
--- a/vendor/github.com/jawher/mow.cli/README.md
+++ /dev/null
@@ -1,771 +0,0 @@
-# mow.cli
-
-[![Build Status](https://travis-ci.org/jawher/mow.cli.svg?branch=master)](https://travis-ci.org/jawher/mow.cli)
-[![GoDoc](https://godoc.org/github.com/jawher/mow.cli?status.svg)](https://godoc.org/github.com/jawher/mow.cli)
-
-A framework to build command line applications in Go with most of the burden of arguments parsing and validation placed on the framework instead of the developer.
-
-## First app
-
-### A simple app
-
-```go
-package main
-
-import (
-    "fmt"
-    "os"
-
-    "github.com/jawher/mow.cli"
-)
-
-func main() {
-    app := cli.App("cp", "Copy files around")
-
-    app.Spec = "[-r] SRC... DST"
-
-    var (
-        recursive = app.BoolOpt("r recursive", false, "Copy files recursively")
-        src       = app.StringsArg("SRC", nil, "Source files to copy")
-        dst       = app.StringArg("DST", "", "Destination where to copy files to")
-    )
-
-    app.Action = func() {
-        fmt.Printf("Copying %v to %s [recursively: %v]\n", *src, *dst, *recursive)
-    }
-
-    app.Run(os.Args)
-}
-```
-
-### An app with multiple commands:
-
-```go
-package main
-
-import (
-	"fmt"
-	"os"
-
-	"github.com/jawher/mow.cli"
-)
-
-func main() {
-	app := cli.App("uman", "User Manager")
-
-	app.Spec = "[-v]"
-
-	var (
-		verbose = app.BoolOpt("v verbose", false, "Verbose debug mode")
-	)
-
-	app.Before = func() {
-		if *verbose {
-			// Here you can enable debug output in your logger for example
-			fmt.Println("Verbose mode enabled")
-		}
-	}
-
-	// Declare a first command, invocable with "uman list"
-	app.Command("list", "list the users", func(cmd *cli.Cmd) {
-		// These are the command specific options and args, nicely scoped inside a func
-		var (
-			all = cmd.BoolOpt("all", false, "Display all users, including disabled ones")
-		)
-
-		// What to run when this command is called
-		cmd.Action = func() {
-			// Inside the action, and only inside, you can safely access the values of the options and arguments
-			fmt.Printf("user list (including disabled ones: %v)\n", *all)
-		}
-	})
-
-	// The second command, invocable with "uman get"
-	app.Command("get", "get a user details", func(cmd *cli.Cmd) {
-		var (
-			detailed = cmd.BoolOpt("detailed", false, "Disaply detailed information")
-			id       = cmd.StringArg("ID", "", "The user id to display")
-		)
-
-		cmd.Action = func() {
-			fmt.Printf("user %q details (detailed mode: %v)\n", *id, *detailed)
-		}
-	})
-
-	// Now that the app is configured, execute it passing in the os.Args array
-	app.Run(os.Args)
-}
-```
-
-## Motivation
-
-|                                                                      | mow.cli | codegangsta/cli | flag |
-|----------------------------------------------------------------------|---------|-----------------|------|
-| Contextual help                                                      | ✓       | ✓               |      |
-| Commands                                                             | ✓       | ✓               |      |
-| Option folding  `-xyz`                                               | ✓       |                 |      |
-| Option Value folding  `-fValue`                                      | ✓       |                 |      |
-| Option exclusion: `--start ❘ --stop`                                 | ✓       |                 |      |
-| Option dependency : `[-a -b]` or `[-a [-b]]`                         | ✓       |                 |      |
-| Arguments validation : `SRC DST`                                     | ✓       |                 |      |
-| Argument optionality : `SRC [DST]`                                   | ✓       |                 |      |
-| Argument repetition : `SRC... DST`                                   | ✓       |                 |      |
-| Option/Argument dependency : `SRC [-f DST]`                          | ✓       |                 |      |
-| Any combination of the above: `[-d ❘ --rm] IMAGE [COMMAND [ARG...]]` | ✓       |                 |      |
-
-In the goland, docopt is another library with rich flags and arguments validation.
-However, it falls short for many use cases:
-
-|                             | mow.cli | docopt |
-|-----------------------------|---------|--------|
-| Contextual help             | ✓       |        |
-| Backtracking: `SRC... DST`  | ✓       |        |
-| Backtracking: `[SRC] DST`   | ✓       |        |
-| Branching: `(SRC ❘ -f DST)` | ✓       |        |
-
-## Installation
-
-To install this library, simply run:
-
-```
-$ go get github.com/jawher/mow.cli
-```
-
-## Basics
-
-You start by creating an application by passing a name and a description:
-
-```go
-cp := cli.App("cp", "Copy files around")
-```
-
-To attach the code to execute when the app is launched, assign a function to the Action field:
-
-```go
-cp.Action = func() {
-    fmt.Printf("Hello world\n")
-}
-```
-
-If you want you can add support for printing the app version (invoked by ```-v, --version```) like so:
-
-```go
-cp.Version("v version", "cp 1.2.3")
-```
-
-Finally, in your main func, call Run on the app:
-
-```go
-cp.Run(os.Args)
-```
-
-## Options
-
-To add a (global) option, call one of the (String[s]|Int[s]|Bool)Opt methods on the app:
-
-```go
-recursive := cp.BoolOpt("R recursive", false, "recursively copy the src to dst")
-```
-
-* The first argument is a space separated list of names (short and long) for the option without the dashes, e.g `"f force"`. While you can specify multiple short or long names, e.g. `"f x force force-push"`, only the first short name and the first long name will be displayed in the help messages
-* The second parameter is the default value for the option
-* The third and last parameter is the option description, as will be shown in the help messages
-
-There is also a second set of methods Bool, String, Int, Strings and Ints, which accepts a struct describing the option:
-
-```go
-recursive = cp.Bool(cli.BoolOpt{
-    Name:  "R recursive",
-    Value: false,
-    Desc:  "copy src files recursively",
-    EnvVar: "VAR_RECURSIVE",
-    SetByUser: &recursiveSetByUser,
-})
-```
-
-`EnvVar` accepts a space separated list of environment variables names to be used to initialize the option.
-
-If `SetByUser` is specified (by passing a pointer to a bool variable), it will be set to `true` if the user explicitly set the option.
-
-The result is a pointer to a value which will be populated after parsing the command line arguments.
-You can access the values in the Action func.
-
-In the command line, mow.cli accepts the following syntaxes
-
-### For boolean options:
-
-
-* `-f` : a single dash for the one letter names
-* `-f=false` : a single dash for the one letter names, equal sign followed by true or false
-* `--force` :  double dash for longer option names
-* `-it` : mow.cli supports option folding, this is equivalent to: -i -t
-
-### For string, int options:
-
-
-* `-e=value` : single dash for one letter names, equal sign followed by the value
-* `-e value` : single dash for one letter names, space followed by the value
-* `-Ivalue` : single dash for one letter names immediately followed by the value
-* `--extra=value` : double dash for longer option names, equal sign followed by the value
-* `--extra value` : double dash for longer option names, space followed by the value
-
-### For slice options (StringsOpt, IntsOpt):
-repeat the option to accumulate the values in the resulting slice:
-
-* `-e PATH:/bin -e PATH:/usr/bin` : resulting slice contains `["/bin", "/usr/bin"]`
-* `-ePATH:/bin -ePATH:/usr/bin` : resulting slice contains `["/bin", "/usr/bin"]`
-* `-e=PATH:/bin -e=PATH:/usr/bin` : resulting slice contains `["/bin", "/usr/bin"]`
-* `--env PATH:/bin --env PATH:/usr/bin` : resulting slice contains `["/bin", "/usr/bin"]`
-* `--env=PATH:/bin --env=PATH:/usr/bin` : resulting slice contains `["/bin", "/usr/bin"]`
-
-
-## Arguments
-
-To accept arguments, you need to explicitly declare them by calling one of the (String[s]|Int[s]|Bool)Arg methods on the app:
-
-```go
-src := cp.StringArg("SRC", "", "the file to copy")
-dst := cp.StringArg("DST", "", "the destination")
-```
-
-* The first argument is the argument name as will be shown in the help messages
-* The second parameter is the default value for the argument
-* The third parameter is the argument description, as will be shown in the help messages
-
-
-There is also a second set of methods Bool, String, Int, Strings and Ints, which accepts structs describing the argument:
-
-```go
-src = cp.Strings(cli.StringsArg{
-    Name:  "SRC",
-    Desc:  "The source files to copy",
-    Value: "default value",
-    EnvVar: "VAR1 VAR2",
-    SetByUser: &srcSetByUser,
-})
-```
-
-The Value field is where you can set the initial value for the argument.
-
-`EnvVar` accepts a space separated list of environment variables names to be used to initialize the argument.
-
-If `SetByUser` is specified (by passing a pointer to a bool variable), it will be set to `true` only if the user explicitly sets the argument.
-
-The result is a pointer to a value that will be populated after parsing the command line arguments.
-You can access the values in the Action func.
-
-
-## Operators
-
-The `--` operator marks the end of options.
-Everything that follow will be treated as an argument,
-even if starts with a dash.
-
-For example, given the `touch` command which takes a filename as an argument (and possibly other options):
-
-```go
-file := cp.StringArg("FILE", "", "the file to create")
-```
-
-If we try to create a file named `-f` this way:
-
-```
-touch -f
-```
-
-Would fail, because `-f` will be parsed as an option not as an argument.
-The fix is to prefix the filename with the `--` operator:
-
-```
-touch -- -f
-```
-
-## Commands
-
-mow.cli supports nesting commands and sub commands.
-Declare a top level command by calling the Command func on the app struct, and a sub command by calling
-the Command func on the command struct:
-
-```go
-docker := cli.App("docker", "A self-sufficient runtime for linux containers")
-
-docker.Command("run", "Run a command in a new container", func(cmd *cli.Cmd) {
-    // initialize the run command here
-})
-```
-
-* The first argument is the command name, as will be shown in the help messages and as will need to be input by the user in the command line to call the command
-* The second argument is the command description as will be shown in the help messages
-* The third argument is a CmdInitializer, a function that receives a pointer to a Cmd struct representing the command.
-In this function, you can add options and arguments by calling the same methods as you would with an app struct (BoolOpt, StringArg, ...).
-You would also assign a function to the Action field of the Cmd struct for it to be executed when the command is invoked.
-
-```go
-docker.Command("run", "Run a command in a new container", func(cmd *cli.Cmd) {
-    var (
-        detached = cmd.BoolOpt("d detach", false, "Detached mode: run the container in the background and print the new container ID")
-        memory   = cmd.StringOpt("m memory", "", "Memory limit (format: <number><optional unit>, where unit = b, k, m or g)")
-        image    = cmd.StringArg("IMAGE", "", "")
-    )
-    
-    cmd.Action = func() {
-        if *detached {
-            //do something
-        }
-        runContainer(*image, *detached, *memory)
-    }
-})
-```
-You can also add sub commands by calling Command on the Cmd struct:
-
-```go
-bzk.Command("job", "actions on jobs", func(cmd *cli.Cmd) {
-    cmd.Command("list", "list jobs", listJobs)
-    cmd.Command("start", "start a new job", startJob)
-    cmd.Command("log", "show a job log", nil)
-})
-```
-
-When you just want to set Action to cmd, you can use ActionCommand function for this:
-
-```go
-app.Command("list", "list all configs", cli.ActionCommand(func() { list() }))
-```
-
-is the same as:
-
-```go
-app.Command("list", "list all configs", func(cmd *cli.Cmd)) {
-    cmd.Action = func() {
-      list()
-    }
-}
-```
-
-This could go on to any depth if need be.
-
-mow.cli also supports command aliases. For example:
-
-```go
-app.Command("start run r", "start doing things", cli.ActionCommand(func() { start() }))
-```
-
-will alias `start`, `run`, and `r` to the same action. Aliases also work for
-subcommands:
-
-```go
-app.Command("job j", "actions on jobs", func(cmd *cli.Cmd) {
-    cmd.Command("list ls", "list jobs", func(cmd *cli.Cmd) {
-        cmd.Action = func() {
-            list()
-        }
-    })
-})
-```
-
-which then allows you to invoke the subcommand as `app job list`, `app job ls`,
-`app j ls`, or `app j list`.
-
-
-As a side-note: it may seem a bit weird the way mow.cli uses a function to initialize a command instead of just returning the command struct.
-
-The motivation behind this choice is scoping: as with the standard flag package, adding an option or an argument returns a pointer to a value which will be populated when the app is run.
-
-Since you'll want to store these pointers in variables, and to avoid having dozens of them in the same scope (the main func for example or as global variables),
-mow.cli's API was specifically tailored to take a func parameter (called CmdInitializer) which accepts the command struct.
-
-This way, the command specific variables scope is limited to this function.
-
-## Custom types
-
-Out of the box, mow.cli supports the following types for options and arguments:
-
-* bool
-* string
-* int
-* strings (slice of strings)
-* ints (slice of ints)
-
-You can however extend mow.cli to handle other types, e.g. `time.Duration`, `float64`, or even your own struct types for example.
-
-To do so, you'll need to:
-
-* implement the `flag.Value` interface for the custom type
-* declare the option or the flag using `VarOpt`, `VarArg` for the short hands, and `Var` for the full form.
-
-Here's an example:
-
-```go
-// Declare your type
-type Duration time.Duration
-
-// Make it implement flag.Value
-func (d *Duration) Set(v string) error {
-	parsed, err := time.ParseDuration(v)
-	if err != nil {
-		return err
-	}
-	*d = Duration(parsed)
-	return nil
-}
-
-func (d *Duration) String() string {
-	duration := time.Duration(*d)
-	return duration.String()
-}
-
-func main() {
-    duration := Duration(0)
-
-	app := App("var", "")
-
-	app.VarArg("DURATION", &duration, "")
-
-	app.Run([]string{"cp", "1h31m42s"})
-}
-```
-
-### Boolean custom types
-
-To make your custom type behave as a boolean option, i.e. doesn't take a value, it has to implement a `IsBoolFlag` method that returns true:
-
-```go
-type BoolLike int
-
-
-func (d *BoolLike) IsBoolFlag() bool {
-	return true
-}
-```
-
-### Multi-valued custom type
-
-To make your custom type behave as a multi-valued option or argument, i.e. takes multiple values,
-it has to implement a `Clear` method which will be called whenever the value list needs to be cleared,
-e.g. when the value was initially populated from an environment variable, and then explicitly set from the CLI:
-
-```go
-type Durations []time.Duration
-
-// Make it implement flag.Value 
-func (d *Durations) Set(v string) error {
-	parsed, err := time.ParseDuration(v)
-	if err != nil {
-		return err
-	}
-	*d = append(*d, Duration(parsed))
-	return nil
-}
-
-func (d *Durations) String() string {
-	return fmt.Sprintf("%v", *d)
-}
-
-
-// Make it multi-valued
-func (d *Durations) Clear() {
-	*d = []Duration{}
-}
-```
-
-### Hide default value of custom type
-
-If your custom type implements a `IsDefault` method (returning a boolean), the help message generation will make use of it to decide whether or not to display the default value.
-
-```go
-type Action string
-
-// Make it implement flag.Value
-:
-:
-
-// Make it multi-valued
-func (a *Action) IsDefault() bool {
-	return (*a) == "nop"
-}
-```
-
-## Interceptors
-
-It is possible to define snippets of code to be executed before and after a command or any of its sub commands is executed.
-
-For example, given an app with multiple commands but with a global flag which toggles a verbose mode:
-
-```go
-app := cli.App("app", "bla bla")
-
-verbose := app.Bool(cli.BoolOpt{
-	Name:  "verbose",
-	Value: false,
-	Desc:  "Enable debug logs",
-})
-
-app.Command("command1", "...", func(cmd *cli.Cmd) {
-
-})
-
-app.Command("command2", "...", func(cmd *cli.Cmd) {
-
-})
-```
-
-Instead of repeating yourself by checking if the verbose flag is set or not, and setting the debug level in every command (and its sub-commands),
-a before interceptor can be set on the `app` instead:
-
-```go
-app.Before = func() {
-	if (*verbose) {
-		logrus.SetLevel(logrus.DebugLevel)
-	}
-}
-```
-
-Whenever a valid command is called by the user, all the before interceptors defined on the app and the intermediate commands
-will be called, in order from the root to the leaf.
-
-Similarly, if you need to execute a code snippet after a command has been called, e.g. to cleanup resources allocated in before interceptors,
-simply set the `After` field of the app struct or any other command.
-`After` interceptors will be called, in order from the leaf up to the root (the opposite order of the `Before` interceptors).
-
-Here's a diagram which shows in when and in which order multiple `Before` and `After` interceptors get executed:
-
-![flow](http://i.imgur.com/oUEa8Sh.png)
-
-## Spec
-
-An app or command's call syntax can be customized using spec strings.
-This can be useful to indicate that an argument is optional for example, or that 2 options are mutually exclusive.
-
-You can set a spec string on:
-
-* The app: to configure the syntax for global options and arguments
-* A command: to configure the syntax for that command's options and arguments
-
-In both cases, a spec string is assigned to the Spec field:
-
-```go
-cp := cli.App("cp", "Copy files around")
-cp.Spec = "[-R [-H | -L | -P]]"
-```
-
-And:
-```go
-docker := cli.App("docker", "A self-sufficient runtime for linux containers")
-docker.Command("run", "Run a command in a new container", func(cmd *cli.Cmd) {
-    cmd.Spec = "[-d|--rm] IMAGE [COMMAND [ARG...]]"
-    :
-    :
-}
-```
-
-The spec syntax is mostly based on the conventions used in POSIX command line apps help messages and man pages:
-
-### Options
-
-You can use both short and long option names in spec strings:
-```go
-x.Spec="-f"
-```
-And:
-```go
-x.Spec="--force"
-```
-
-In both cases, we required that the f or force flag be set
-
-Any option you reference in a spec string MUST be explicitly declared, otherwise mow.cli will panic:
-```go
-x.BoolOpt("f force", ...)
-```
-### Arguments
-
-Arguments are all-uppercased words:
-```go
-x.Spec="SRC DST"
-```
-
-This spec string will force the user to pass exactly 2 arguments, SRC and DST
-
-Any argument you reference in a spec string MUST be explicitly declared, otherwise mow.cli will panic:
-
-```go
-x.StringArg("SRC", ...)
-x.StringArg("DST", ...)
-```
-
-### Ordering
-
-Except for options, The order of the elements in a spec string is respected and enforced when parsing the command line arguments:
-
-```go
-x.Spec = "-f -g SRC -h DST"
-```
-
-Consecutive options (`-f` and `-g` for example) get parsed regardless of the order they are specified in (both `-f=5 -g=6` and `-g=6 -f=5` are valid).
-
-Order between options and arguments is significant (`-f` and `-g` must appear before the `SRC` argument).
-
-Same goes for arguments, where `SRC` must appear before `DST`.
-
-### Optionality
-
-You can mark items as optional in a spec string by enclosing them in square brackets :`[...]`
-```go
-x.Spec = "[-x]"
-```
-
-### Choice
-
-You can use the `|` operator to indicate a choice between two or more items
-```go
-x.Spec = "--rm | --daemon"
-x.Spec = "-H | -L | -P"
-x.Spec = "-t | DST"
-```
-
-### Repetition
-
-You can use the `...` postfix operator to mark an element as repeatable:
-
-```go
-x.Spec="SRC..."
-x.Spec="-e..."
-```
-
-### Grouping
-
-You can group items using parenthesis. This is useful in combination with the choice and repetition operators (`|` and `...`):
-
-```go
-x.Spec = "(-e COMMAND)... | (-x|-y)"
-```
-
-The parenthesis in the example above serve to mark that it is the sequence of a -e flag followed by an argument that is repeatable, and that
-all that is mutually exclusive to a choice between -x and -y options.
-
-### Option group
-
-This is a shortcut to declare a choice between multiple options:
-```go
-x.Spec = "-abcd"
-```
-
-Is equivalent to:
-
-```go
-x.Spec = "(-a | -b | -c | -d)..."
-```
-
-I.e. any combination of the listed options in any order, with at least one option.
-
-### All options
-
-Another shortcut:
-
-```go
-x.Spec = "[OPTIONS]"
-```
-
-This is a special syntax (the square brackets are not for marking an optional item, and the uppercased word is not for an argument).
-This is equivalent to a repeatable choice between all the available options.
-For example, if an app or a command declares 4 options a, b, c and d, `[OPTIONS]` is equivalent to:
-
-```go
-x.Spec = "[-a | -b | -c | -d]..."
-```
-
-### Inline option values
-
-You can use the `=<some-text>` notation right after an option (long or short form) to give an inline description or value.
-
-An example:
-
-```go
-x.Spec = "[ -a=<absolute-path> | --timeout=<in seconds> ] ARG"
-```
-
-The inline values are ignored by the spec parser and are just there for the final user as a contextual hint.
-
-### Operators
-
-The `--` operator can be used in a spec string to automatically treat everything following it as an options.
-
-In other words, placing a `--` in the spec string automatically inserts a `--` in the same position in the program call arguments.
-
-This lets you write programs like the `time` utility for example:
-
-```go
-x.Spec = "time -lp [-- CMD [ARG...]]"
-```
-
-## Grammar
-
-Here's the (simplified) EBNF grammar for the Specs language:
-
-```
-spec         -> sequence
-sequence     -> choice*
-req_sequence -> choice+
-choice       -> atom ('|' atom)*
-atom         -> (shortOpt | longOpt | optSeq | allOpts | group | optional) rep? | optEnd
-shortOp      -> '-' [A-Za-z]
-longOpt      -> '--' [A-Za-z][A-Za-z0-9]*
-optSeq       -> '-' [A-Za-z]+
-allOpts      -> '[OPTIONS]'
-group        -> '(' req_sequence ')'
-optional     -> '[' req_sequence ']'
-rep          -> '...'
-optEnd       -> '--'
-```
-And that's it for the spec language.
-You can combine these few building blocks in any way you want (while respecting the grammar above) to construct sophisticated validation constraints
-(don't go too wild though).
-
-Behind the scenes, mow.cli parses the spec string and constructs a finite state machine to be used to parse the command line arguments.
-mow.cli also handles backtracking, and so it can handle tricky cases, or what I like to call "the cp test"
-```
-cp SRC... DST
-```
-
-Without backtracking, this deceptively simple spec string cannot be parsed correctly.
-For instance, docopt can't handle this case, whereas mow.cli does.
-
-## Default spec
-
-By default, and unless a spec string is set by the user, mow.cli auto-generates one for the app and every command using this logic:
-
-* Start with an empty spec string
-* If at least one option was declared, append `[OPTIONS]` to the spec string
-* For every declared argument, append it, in the order of declaration, to the spec string
-
-For example, given this command declaration:
-
-```go
-docker.Command("run", "Run a command in a new container", func(cmd *cli.Cmd) {
-    var (
-        detached = cmd.BoolOpt("d detach", false, "Detached mode: run the container in the background and print the new container ID", nil)
-        memory   = cmd.StringOpt("m memory", "", "Memory limit (format: <number><optional unit>, where unit = b, k, m or g)", nil)
-        image    = cmd.StringArg("IMAGE", "", "", nil)
-        args     = cmd.StringsArg("ARG", "", "", nil)
-    )
-})
-```
-
-The auto-generated spec string would be:
-```go
-[OPTIONS] IMAGE ARG
-```
-
-Which should suffice for simple cases. If not, the spec string has to be set explicitly.
-
-## Exiting
-
-`mow.cli` provides the `Exit` function which accepts an exit code and exits the app with the provided code.
-
-You are highly encouraged to call `cli.Exit` instead of `os.Exit` for the `After` interceptors to be executed.
-
-## License
-
-This work is published under the MIT license.
-
-Please see the `LICENSE` file for details.
diff --git a/vendor/github.com/jmhodges/levigo/.gitignore b/vendor/github.com/jmhodges/levigo/.gitignore
deleted file mode 100644
index 2af17d56..00000000
--- a/vendor/github.com/jmhodges/levigo/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.o
-*.a
-*.6
-*.out
-_testmain.go
-_obj
diff --git a/vendor/github.com/jmhodges/levigo/README.md b/vendor/github.com/jmhodges/levigo/README.md
deleted file mode 100644
index 3ea196bf..00000000
--- a/vendor/github.com/jmhodges/levigo/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# levigo
-
-levigo is a Go wrapper for LevelDB.
-
-The API has been godoc'ed and [is available on the
-web](http://godoc.org/github.com/jmhodges/levigo).
-
-Questions answered at `golang-nuts@googlegroups.com`.
-
-## Building
-
-You'll need the shared library build of
-[LevelDB](http://code.google.com/p/leveldb/) installed on your machine. The
-current LevelDB will build it by default.
-
-The minimum version of LevelDB required is currently 1.7. If you require the
-use of an older version of LevelDB, see the [fork of levigo for LevelDB
-1.4](https://github.com/jmhodges/levigo_leveldb_1.4). Prefer putting in the
-work to be up to date as LevelDB moves very quickly.
-
-Now, if you build LevelDB and put the shared library and headers in one of the
-standard places for your OS, you'll be able to simply run:
-
-    go get github.com/jmhodges/levigo
-
-But, suppose you put the shared LevelDB library somewhere weird like
-/path/to/lib and the headers were installed in /path/to/include. To install
-levigo remotely, you'll run:
-
-    CGO_CFLAGS="-I/path/to/leveldb/include" CGO_LDFLAGS="-L/path/to/leveldb/lib" go get github.com/jmhodges/levigo
-
-and there you go.
-
-In order to build with snappy, you'll have to explicitly add "-lsnappy" to the
-`CGO_LDFLAGS`. Supposing that both snappy and leveldb are in weird places,
-you'll run something like:
-
-    CGO_CFLAGS="-I/path/to/leveldb/include -I/path/to/snappy/include"
-    CGO_LDFLAGS="-L/path/to/leveldb/lib -L/path/to/snappy/lib -lsnappy" go get github.com/jmhodges/levigo
-
-(and make sure the -lsnappy is after the snappy library path!).
-
-Of course, these same rules apply when doing `go build`, as well.
-
-## Caveats
-
-Comparators and WriteBatch iterators must be written in C in your own
-library. This seems like a pain in the ass, but remember that you'll have the
-LevelDB C API available to your in your client package when you import levigo.
-
-An example of writing your own Comparator can be found in
-<https://github.com/jmhodges/levigo/blob/master/examples>.
diff --git a/vendor/github.com/kr/logfmt/.gitignore b/vendor/github.com/kr/logfmt/.gitignore
deleted file mode 100644
index 8e524f68..00000000
--- a/vendor/github.com/kr/logfmt/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.test
-*.swp
-*.prof
diff --git a/vendor/github.com/kr/logfmt/Readme b/vendor/github.com/kr/logfmt/Readme
deleted file mode 100644
index 1865a11f..00000000
--- a/vendor/github.com/kr/logfmt/Readme
+++ /dev/null
@@ -1,12 +0,0 @@
-Go package for parsing (and, eventually, generating)
-log lines in the logfmt style.
-
-See http://godoc.org/github.com/kr/logfmt for format, and other documentation and examples.
-
-Copyright (C) 2013 Keith Rarick, Blake Mizerany
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/github.com/mattn/go-isatty/.travis.yml b/vendor/github.com/mattn/go-isatty/.travis.yml
deleted file mode 100644
index b9f8b239..00000000
--- a/vendor/github.com/mattn/go-isatty/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: go
-go:
-  - tip
-
-before_install:
-  - go get github.com/mattn/goveralls
-  - go get golang.org/x/tools/cmd/cover
-script:
-  - $HOME/gopath/bin/goveralls -repotoken 3gHdORO5k5ziZcWMBxnd9LrMZaJs8m9x5
diff --git a/vendor/github.com/mattn/go-isatty/README.md b/vendor/github.com/mattn/go-isatty/README.md
deleted file mode 100644
index 1e69004b..00000000
--- a/vendor/github.com/mattn/go-isatty/README.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# go-isatty
-
-[![Godoc Reference](https://godoc.org/github.com/mattn/go-isatty?status.svg)](http://godoc.org/github.com/mattn/go-isatty)
-[![Build Status](https://travis-ci.org/mattn/go-isatty.svg?branch=master)](https://travis-ci.org/mattn/go-isatty)
-[![Coverage Status](https://coveralls.io/repos/github/mattn/go-isatty/badge.svg?branch=master)](https://coveralls.io/github/mattn/go-isatty?branch=master)
-[![Go Report Card](https://goreportcard.com/badge/mattn/go-isatty)](https://goreportcard.com/report/mattn/go-isatty)
-
-isatty for golang
-
-## Usage
-
-```go
-package main
-
-import (
-	"fmt"
-	"github.com/mattn/go-isatty"
-	"os"
-)
-
-func main() {
-	if isatty.IsTerminal(os.Stdout.Fd()) {
-		fmt.Println("Is Terminal")
-	} else if isatty.IsCygwinTerminal(os.Stdout.Fd()) {
-		fmt.Println("Is Cygwin/MSYS2 Terminal")
-	} else {
-		fmt.Println("Is Not Terminal")
-	}
-}
-```
-
-## Installation
-
-```
-$ go get github.com/mattn/go-isatty
-```
-
-## License
-
-MIT
-
-## Author
-
-Yasuhiro Matsumoto (a.k.a mattn)
-
-## Thanks
-
-* k-takata: base idea for IsCygwinTerminal
-
-    https://github.com/k-takata/go-iscygpty
diff --git a/vendor/github.com/pkg/errors/.gitignore b/vendor/github.com/pkg/errors/.gitignore
deleted file mode 100644
index daf913b1..00000000
--- a/vendor/github.com/pkg/errors/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
-*.prof
diff --git a/vendor/github.com/pkg/errors/.travis.yml b/vendor/github.com/pkg/errors/.travis.yml
deleted file mode 100644
index 588ceca1..00000000
--- a/vendor/github.com/pkg/errors/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: go
-go_import_path: github.com/pkg/errors
-go:
-  - 1.4.3
-  - 1.5.4
-  - 1.6.2
-  - 1.7.1
-  - tip
-
-script:
-  - go test -v ./...
diff --git a/vendor/github.com/pkg/errors/README.md b/vendor/github.com/pkg/errors/README.md
deleted file mode 100644
index 273db3c9..00000000
--- a/vendor/github.com/pkg/errors/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors)
-
-Package errors provides simple error handling primitives.
-
-`go get github.com/pkg/errors`
-
-The traditional error handling idiom in Go is roughly akin to
-```go
-if err != nil {
-        return err
-}
-```
-which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error.
-
-## Adding context to an error
-
-The errors.Wrap function returns a new error that adds context to the original error. For example
-```go
-_, err := ioutil.ReadAll(r)
-if err != nil {
-        return errors.Wrap(err, "read failed")
-}
-```
-## Retrieving the cause of an error
-
-Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`.
-```go
-type causer interface {
-        Cause() error
-}
-```
-`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example:
-```go
-switch err := errors.Cause(err).(type) {
-case *MyError:
-        // handle specifically
-default:
-        // unknown error
-}
-```
-
-[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors).
-
-## Contributing
-
-We welcome pull requests, bug fixes and issue reports. With that said, the bar for adding new symbols to this package is intentionally set high.
-
-Before proposing a change, please discuss your change by raising an issue.
-
-## Licence
-
-BSD-2-Clause
diff --git a/vendor/github.com/pkg/errors/appveyor.yml b/vendor/github.com/pkg/errors/appveyor.yml
deleted file mode 100644
index a932eade..00000000
--- a/vendor/github.com/pkg/errors/appveyor.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-version: build-{build}.{branch}
-
-clone_folder: C:\gopath\src\github.com\pkg\errors
-shallow_clone: true # for startup speed
-
-environment:
-  GOPATH: C:\gopath
-
-platform:
-  - x64
-
-# http://www.appveyor.com/docs/installed-software
-install:
-  # some helpful output for debugging builds
-  - go version
-  - go env
-  # pre-installed MinGW at C:\MinGW is 32bit only
-  # but MSYS2 at C:\msys64 has mingw64
-  - set PATH=C:\msys64\mingw64\bin;%PATH%
-  - gcc --version
-  - g++ --version
-
-build_script:
-  - go install -v ./...
-
-test_script:
-  - set PATH=C:\gopath\bin;%PATH%
-  - go test -v ./...
-
-#artifacts:
-#  - path: '%GOPATH%\bin\*.exe'
-deploy: off
diff --git a/vendor/github.com/rcrowley/go-metrics/.gitignore b/vendor/github.com/rcrowley/go-metrics/.gitignore
deleted file mode 100644
index 83c8f823..00000000
--- a/vendor/github.com/rcrowley/go-metrics/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-*.[68]
-*.a
-*.out
-*.swp
-_obj
-_testmain.go
-cmd/metrics-bench/metrics-bench
-cmd/metrics-example/metrics-example
-cmd/never-read/never-read
diff --git a/vendor/github.com/rcrowley/go-metrics/.travis.yml b/vendor/github.com/rcrowley/go-metrics/.travis.yml
deleted file mode 100644
index f8b3b2ed..00000000
--- a/vendor/github.com/rcrowley/go-metrics/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-language: go
-
-go:
-    - 1.2
-    - 1.3
-    - 1.4
-    - 1.5
-    - 1.6
-    - 1.7
-    - 1.8
-    - 1.9
-
-script:
-    - ./validate.sh
-
-# this should give us faster builds according to 
-# http://docs.travis-ci.com/user/migrating-from-legacy/
-sudo: false
diff --git a/vendor/github.com/rcrowley/go-metrics/README.md b/vendor/github.com/rcrowley/go-metrics/README.md
deleted file mode 100644
index 17cea76d..00000000
--- a/vendor/github.com/rcrowley/go-metrics/README.md
+++ /dev/null
@@ -1,167 +0,0 @@
-go-metrics
-==========
-
-![travis build status](https://travis-ci.org/rcrowley/go-metrics.svg?branch=master)
-
-Go port of Coda Hale's Metrics library: <https://github.com/dropwizard/metrics>.
-
-Documentation: <http://godoc.org/github.com/rcrowley/go-metrics>.
-
-Usage
------
-
-Create and update metrics:
-
-```go
-c := metrics.NewCounter()
-metrics.Register("foo", c)
-c.Inc(47)
-
-g := metrics.NewGauge()
-metrics.Register("bar", g)
-g.Update(47)
-
-r := NewRegistry()
-g := metrics.NewRegisteredFunctionalGauge("cache-evictions", r, func() int64 { return cache.getEvictionsCount() })
-
-s := metrics.NewExpDecaySample(1028, 0.015) // or metrics.NewUniformSample(1028)
-h := metrics.NewHistogram(s)
-metrics.Register("baz", h)
-h.Update(47)
-
-m := metrics.NewMeter()
-metrics.Register("quux", m)
-m.Mark(47)
-
-t := metrics.NewTimer()
-metrics.Register("bang", t)
-t.Time(func() {})
-t.Update(47)
-```
-
-Register() is not threadsafe. For threadsafe metric registration use
-GetOrRegister:
-
-```go
-t := metrics.GetOrRegisterTimer("account.create.latency", nil)
-t.Time(func() {})
-t.Update(47)
-```
-
-**NOTE:** Be sure to unregister short-lived meters and timers otherwise they will
-leak memory:
-
-```go
-// Will call Stop() on the Meter to allow for garbage collection
-metrics.Unregister("quux")
-// Or similarly for a Timer that embeds a Meter
-metrics.Unregister("bang")
-```
-
-Periodically log every metric in human-readable form to standard error:
-
-```go
-go metrics.Log(metrics.DefaultRegistry, 5 * time.Second, log.New(os.Stderr, "metrics: ", log.Lmicroseconds))
-```
-
-Periodically log every metric in slightly-more-parseable form to syslog:
-
-```go
-w, _ := syslog.Dial("unixgram", "/dev/log", syslog.LOG_INFO, "metrics")
-go metrics.Syslog(metrics.DefaultRegistry, 60e9, w)
-```
-
-Periodically emit every metric to Graphite using the [Graphite client](https://github.com/cyberdelia/go-metrics-graphite):
-
-```go
-
-import "github.com/cyberdelia/go-metrics-graphite"
-
-addr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:2003")
-go graphite.Graphite(metrics.DefaultRegistry, 10e9, "metrics", addr)
-```
-
-Periodically emit every metric into InfluxDB:
-
-**NOTE:** this has been pulled out of the library due to constant fluctuations
-in the InfluxDB API. In fact, all client libraries are on their way out. see
-issues [#121](https://github.com/rcrowley/go-metrics/issues/121) and
-[#124](https://github.com/rcrowley/go-metrics/issues/124) for progress and details.
-
-```go
-import "github.com/vrischmann/go-metrics-influxdb"
-
-go influxdb.InfluxDB(metrics.DefaultRegistry,
-  10e9, 
-  "127.0.0.1:8086", 
-  "database-name", 
-  "username", 
-  "password"
-)
-```
-
-Periodically upload every metric to Librato using the [Librato client](https://github.com/mihasya/go-metrics-librato):
-
-**Note**: the client included with this repository under the `librato` package
-has been deprecated and moved to the repository linked above.
-
-```go
-import "github.com/mihasya/go-metrics-librato"
-
-go librato.Librato(metrics.DefaultRegistry,
-    10e9,                  // interval
-    "example@example.com", // account owner email address
-    "token",               // Librato API token
-    "hostname",            // source
-    []float64{0.95},       // percentiles to send
-    time.Millisecond,      // time unit
-)
-```
-
-Periodically emit every metric to StatHat:
-
-```go
-import "github.com/rcrowley/go-metrics/stathat"
-
-go stathat.Stathat(metrics.DefaultRegistry, 10e9, "example@example.com")
-```
-
-Maintain all metrics along with expvars at `/debug/metrics`:
-
-This uses the same mechanism as [the official expvar](http://golang.org/pkg/expvar/)
-but exposed under `/debug/metrics`, which shows a json representation of all your usual expvars
-as well as all your go-metrics.
-
-
-```go
-import "github.com/rcrowley/go-metrics/exp"
-
-exp.Exp(metrics.DefaultRegistry)
-```
-
-Installation
-------------
-
-```sh
-go get github.com/rcrowley/go-metrics
-```
-
-StatHat support additionally requires their Go client:
-
-```sh
-go get github.com/stathat/go
-```
-
-Publishing Metrics
-------------------
-
-Clients are available for the following destinations:
-
-* Librato - https://github.com/mihasya/go-metrics-librato
-* Graphite - https://github.com/cyberdelia/go-metrics-graphite
-* InfluxDB - https://github.com/vrischmann/go-metrics-influxdb
-* Ganglia - https://github.com/appscode/metlia
-* Prometheus - https://github.com/deathowl/go-metrics-prometheus
-* DataDog - https://github.com/syntaqx/go-metrics-datadog
-* SignalFX - https://github.com/pascallouisperez/go-metrics-signalfx
-* Honeycomb - https://github.com/getspine/go-metrics-honeycomb
diff --git a/vendor/github.com/rcrowley/go-metrics/memory.md b/vendor/github.com/rcrowley/go-metrics/memory.md
deleted file mode 100644
index 47454f54..00000000
--- a/vendor/github.com/rcrowley/go-metrics/memory.md
+++ /dev/null
@@ -1,285 +0,0 @@
-Memory usage
-============
-
-(Highly unscientific.)
-
-Command used to gather static memory usage:
-
-```sh
-grep ^Vm "/proc/$(ps fax | grep [m]etrics-bench | awk '{print $1}')/status"
-```
-
-Program used to gather baseline memory usage:
-
-```go
-package main
-
-import "time"
-
-func main() {
-	time.Sleep(600e9)
-}
-```
-
-Baseline
---------
-
-```
-VmPeak:    42604 kB
-VmSize:    42604 kB
-VmLck:         0 kB
-VmHWM:      1120 kB
-VmRSS:      1120 kB
-VmData:    35460 kB
-VmStk:       136 kB
-VmExe:      1020 kB
-VmLib:      1848 kB
-VmPTE:        36 kB
-VmSwap:        0 kB
-```
-
-Program used to gather metric memory usage (with other metrics being similar):
-
-```go
-package main
-
-import (
-	"fmt"
-	"metrics"
-	"time"
-)
-
-func main() {
-	fmt.Sprintf("foo")
-	metrics.NewRegistry()
-	time.Sleep(600e9)
-}
-```
-
-1000 counters registered
-------------------------
-
-```
-VmPeak:    44016 kB
-VmSize:    44016 kB
-VmLck:         0 kB
-VmHWM:      1928 kB
-VmRSS:      1928 kB
-VmData:    36868 kB
-VmStk:       136 kB
-VmExe:      1024 kB
-VmLib:      1848 kB
-VmPTE:        40 kB
-VmSwap:        0 kB
-```
-
-**1.412 kB virtual, TODO 0.808 kB resident per counter.**
-
-100000 counters registered
---------------------------
-
-```
-VmPeak:    55024 kB
-VmSize:    55024 kB
-VmLck:         0 kB
-VmHWM:     12440 kB
-VmRSS:     12440 kB
-VmData:    47876 kB
-VmStk:       136 kB
-VmExe:      1024 kB
-VmLib:      1848 kB
-VmPTE:        64 kB
-VmSwap:        0 kB
-```
-
-**0.1242 kB virtual, 0.1132 kB resident per counter.**
-
-1000 gauges registered
-----------------------
-
-```
-VmPeak:    44012 kB
-VmSize:    44012 kB
-VmLck:         0 kB
-VmHWM:      1928 kB
-VmRSS:      1928 kB
-VmData:    36868 kB
-VmStk:       136 kB
-VmExe:      1020 kB
-VmLib:      1848 kB
-VmPTE:        40 kB
-VmSwap:        0 kB
-```
-
-**1.408 kB virtual, 0.808 kB resident per counter.**
-
-100000 gauges registered
-------------------------
-
-```
-VmPeak:    55020 kB
-VmSize:    55020 kB
-VmLck:         0 kB
-VmHWM:     12432 kB
-VmRSS:     12432 kB
-VmData:    47876 kB
-VmStk:       136 kB
-VmExe:      1020 kB
-VmLib:      1848 kB
-VmPTE:        60 kB
-VmSwap:        0 kB
-```
-
-**0.12416 kB virtual, 0.11312 resident per gauge.**
-
-1000 histograms with a uniform sample size of 1028
---------------------------------------------------
-
-```
-VmPeak:    72272 kB
-VmSize:    72272 kB
-VmLck:         0 kB
-VmHWM:     16204 kB
-VmRSS:     16204 kB
-VmData:    65100 kB
-VmStk:       136 kB
-VmExe:      1048 kB
-VmLib:      1848 kB
-VmPTE:        80 kB
-VmSwap:        0 kB
-```
-
-**29.668 kB virtual, TODO 15.084 resident per histogram.**
-
-10000 histograms with a uniform sample size of 1028
----------------------------------------------------
-
-```
-VmPeak:   256912 kB
-VmSize:   256912 kB
-VmLck:         0 kB
-VmHWM:    146204 kB
-VmRSS:    146204 kB
-VmData:   249740 kB
-VmStk:       136 kB
-VmExe:      1048 kB
-VmLib:      1848 kB
-VmPTE:       448 kB
-VmSwap:        0 kB
-```
-
-**21.4308 kB virtual, 14.5084 kB resident per histogram.**
-
-50000 histograms with a uniform sample size of 1028
----------------------------------------------------
-
-```
-VmPeak:   908112 kB
-VmSize:   908112 kB
-VmLck:         0 kB
-VmHWM:    645832 kB
-VmRSS:    645588 kB
-VmData:   900940 kB
-VmStk:       136 kB
-VmExe:      1048 kB
-VmLib:      1848 kB
-VmPTE:      1716 kB
-VmSwap:     1544 kB
-```
-
-**17.31016 kB virtual, 12.88936 kB resident per histogram.**
-
-1000 histograms with an exponentially-decaying sample size of 1028 and alpha of 0.015
--------------------------------------------------------------------------------------
-
-```
-VmPeak:    62480 kB
-VmSize:    62480 kB
-VmLck:         0 kB
-VmHWM:     11572 kB
-VmRSS:     11572 kB
-VmData:    55308 kB
-VmStk:       136 kB
-VmExe:      1048 kB
-VmLib:      1848 kB
-VmPTE:        64 kB
-VmSwap:        0 kB
-```
-
-**19.876 kB virtual, 10.452 kB resident per histogram.**
-
-10000 histograms with an exponentially-decaying sample size of 1028 and alpha of 0.015
---------------------------------------------------------------------------------------
-
-```
-VmPeak:   153296 kB
-VmSize:   153296 kB
-VmLck:         0 kB
-VmHWM:    101176 kB
-VmRSS:    101176 kB
-VmData:   146124 kB
-VmStk:       136 kB
-VmExe:      1048 kB
-VmLib:      1848 kB
-VmPTE:       240 kB
-VmSwap:        0 kB
-```
-
-**11.0692 kB virtual, 10.0056 kB resident per histogram.**
-
-50000 histograms with an exponentially-decaying sample size of 1028 and alpha of 0.015
---------------------------------------------------------------------------------------
-
-```
-VmPeak:   557264 kB
-VmSize:   557264 kB
-VmLck:         0 kB
-VmHWM:    501056 kB
-VmRSS:    501056 kB
-VmData:   550092 kB
-VmStk:       136 kB
-VmExe:      1048 kB
-VmLib:      1848 kB
-VmPTE:      1032 kB
-VmSwap:        0 kB
-```
-
-**10.2932 kB virtual, 9.99872 kB resident per histogram.**
-
-1000 meters
------------
-
-```
-VmPeak:    74504 kB
-VmSize:    74504 kB
-VmLck:         0 kB
-VmHWM:     24124 kB
-VmRSS:     24124 kB
-VmData:    67340 kB
-VmStk:       136 kB
-VmExe:      1040 kB
-VmLib:      1848 kB
-VmPTE:        92 kB
-VmSwap:        0 kB
-```
-
-**31.9 kB virtual, 23.004 kB resident per meter.**
-
-10000 meters
-------------
-
-```
-VmPeak:   278920 kB
-VmSize:   278920 kB
-VmLck:         0 kB
-VmHWM:    227300 kB
-VmRSS:    227300 kB
-VmData:   271756 kB
-VmStk:       136 kB
-VmExe:      1040 kB
-VmLib:      1848 kB
-VmPTE:       488 kB
-VmSwap:        0 kB
-```
-
-**23.6316 kB virtual, 22.618 kB resident per meter.**
diff --git a/vendor/github.com/rcrowley/go-metrics/validate.sh b/vendor/github.com/rcrowley/go-metrics/validate.sh
deleted file mode 100755
index c4ae91e6..00000000
--- a/vendor/github.com/rcrowley/go-metrics/validate.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-set -e
-
-# check there are no formatting issues
-GOFMT_LINES=`gofmt -l . | wc -l | xargs`
-test $GOFMT_LINES -eq 0 || echo "gofmt needs to be run, ${GOFMT_LINES} files have issues"
-
-# run the tests for the root package
-go test -race .
diff --git a/vendor/github.com/spf13/cobra/.gitignore b/vendor/github.com/spf13/cobra/.gitignore
deleted file mode 100644
index 1b8c7c26..00000000
--- a/vendor/github.com/spf13/cobra/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-# Vim files https://github.com/github/gitignore/blob/master/Global/Vim.gitignore
-# swap
-[._]*.s[a-w][a-z]
-[._]s[a-w][a-z]
-# session
-Session.vim
-# temporary
-.netrwhist
-*~
-# auto-generated tag files
-tags
-
-*.exe
-
-cobra.test
diff --git a/vendor/github.com/spf13/cobra/.mailmap b/vendor/github.com/spf13/cobra/.mailmap
deleted file mode 100644
index 94ec5306..00000000
--- a/vendor/github.com/spf13/cobra/.mailmap
+++ /dev/null
@@ -1,3 +0,0 @@
-Steve Francia <steve.francia@gmail.com>
-Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
-Fabiano Franz <ffranz@redhat.com>                   <contact@fabianofranz.com>
diff --git a/vendor/github.com/spf13/cobra/.travis.yml b/vendor/github.com/spf13/cobra/.travis.yml
deleted file mode 100644
index 68efa136..00000000
--- a/vendor/github.com/spf13/cobra/.travis.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-language: go
-
-matrix:
-  include:
-    - go: 1.7.6
-    - go: 1.8.3
-    - go: tip
-  allow_failures:
-    - go: tip
-
-before_install:
-  - mkdir -p bin
-  - curl -Lso bin/shellcheck https://github.com/caarlos0/shellcheck-docker/releases/download/v0.4.3/shellcheck
-  - chmod +x bin/shellcheck
-script:
-  - PATH=$PATH:$PWD/bin go test -v ./...
-  - go build
-  - diff -u <(echo -n) <(gofmt -d -s .)
-  - if [ -z $NOVET ]; then
-      diff -u <(echo -n) <(go tool vet . 2>&1 | grep -vE 'ExampleCommand|bash_completions.*Fprint');
-    fi
diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md
deleted file mode 100644
index 373a056b..00000000
--- a/vendor/github.com/spf13/cobra/README.md
+++ /dev/null
@@ -1,721 +0,0 @@
-![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png)
-
-Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files.
-
-Many of the most widely used Go projects are built using Cobra including:
-
-* [Kubernetes](http://kubernetes.io/)
-* [Hugo](http://gohugo.io)
-* [rkt](https://github.com/coreos/rkt)
-* [etcd](https://github.com/coreos/etcd)
-* [Moby (former Docker)](https://github.com/moby/moby)
-* [Docker (distribution)](https://github.com/docker/distribution)
-* [OpenShift](https://www.openshift.com/)
-* [Delve](https://github.com/derekparker/delve)
-* [GopherJS](http://www.gopherjs.org/)
-* [CockroachDB](http://www.cockroachlabs.com/)
-* [Bleve](http://www.blevesearch.com/)
-* [ProjectAtomic (enterprise)](http://www.projectatomic.io/)
-* [GiantSwarm's swarm](https://github.com/giantswarm/cli)
-* [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack)
-* [rclone](http://rclone.org/)
-* [nehm](https://github.com/bogem/nehm)
-
-[![Build Status](https://travis-ci.org/spf13/cobra.svg "Travis CI status")](https://travis-ci.org/spf13/cobra)
-[![CircleCI status](https://circleci.com/gh/spf13/cobra.png?circle-token=:circle-token "CircleCI status")](https://circleci.com/gh/spf13/cobra)
-[![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra)
-
-# Table of Contents
-
-- [Overview](#overview)
-- [Concepts](#concepts)
-  * [Commands](#commands)
-  * [Flags](#flags)
-- [Installing](#installing)
-- [Getting Started](#getting-started)
-  * [Using the Cobra Generator](#using-the-cobra-generator)
-  * [Using the Cobra Library](#using-the-cobra-library)
-  * [Working with Flags](#working-with-flags)
-  * [Positional and Custom Arguments](#positional-and-custom-arguments)
-  * [Example](#example)
-  * [Help Command](#help-command)
-  * [Usage Message](#usage-message)
-  * [PreRun and PostRun Hooks](#prerun-and-postrun-hooks)
-  * [Suggestions when "unknown command" happens](#suggestions-when-unknown-command-happens)
-  * [Generating documentation for your command](#generating-documentation-for-your-command)
-  * [Generating bash completions](#generating-bash-completions)
-- [Contributing](#contributing)
-- [License](#license)
-
-# Overview
-
-Cobra is a library providing a simple interface to create powerful modern CLI
-interfaces similar to git & go tools.
-
-Cobra is also an application that will generate your application scaffolding to rapidly
-develop a Cobra-based application.
-
-Cobra provides:
-* Easy subcommand-based CLIs: `app server`, `app fetch`, etc.
-* Fully POSIX-compliant flags (including short & long versions)
-* Nested subcommands
-* Global, local and cascading flags
-* Easy generation of applications & commands with `cobra init appname` & `cobra add cmdname`
-* Intelligent suggestions (`app srver`... did you mean `app server`?)
-* Automatic help generation for commands and flags
-* Automatic help flag recognition of `-h`, `--help`, etc.
-* Automatically generated bash autocomplete for your application
-* Automatically generated man pages for your application
-* Command aliases so you can change things without breaking them
-* The flexibility to define your own help, usage, etc.
-* Optional tight integration with [viper](http://github.com/spf13/viper) for 12-factor apps
-
-# Concepts
-
-Cobra is built on a structure of commands, arguments & flags.
-
-**Commands** represent actions, **Args** are things and **Flags** are modifiers for those actions.
-
-The best applications will read like sentences when used. Users will know how
-to use the application because they will natively understand how to use it.
-
-The pattern to follow is
-`APPNAME VERB NOUN --ADJECTIVE.`
-    or
-`APPNAME COMMAND ARG --FLAG`
-
-A few good real world examples may better illustrate this point.
-
-In the following example, 'server' is a command, and 'port' is a flag:
-
-    hugo server --port=1313
-
-In this command we are telling Git to clone the url bare.
-
-    git clone URL --bare
-
-## Commands
-
-Command is the central point of the application. Each interaction that
-the application supports will be contained in a Command. A command can
-have children commands and optionally run an action.
-
-In the example above, 'server' is the command.
-
-[More about cobra.Command](https://godoc.org/github.com/spf13/cobra#Command)
-
-## Flags
-
-A flag is a way to modify the behavior of a command. Cobra supports
-fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/).
-A Cobra command can define flags that persist through to children commands
-and flags that are only available to that command.
-
-In the example above, 'port' is the flag.
-
-Flag functionality is provided by the [pflag
-library](https://github.com/spf13/pflag), a fork of the flag standard library
-which maintains the same interface while adding POSIX compliance.
-
-# Installing
-Using Cobra is easy. First, use `go get` to install the latest version
-of the library. This command will install the `cobra` generator executable
-along with the library and its dependencies:
-
-    go get -u github.com/spf13/cobra/cobra
-
-Next, include Cobra in your application:
-
-```go
-import "github.com/spf13/cobra"
-```
-
-# Getting Started
-
-While you are welcome to provide your own organization, typically a Cobra-based
-application will follow the following organizational structure:
-
-```
-  â–¾ appName/
-    â–¾ cmd/
-        add.go
-        your.go
-        commands.go
-        here.go
-      main.go
-```
-
-In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra.
-
-```go
-package main
-
-import (
-  "fmt"
-  "os"
-
-  "{pathToYourApp}/cmd"
-)
-
-func main() {
-  if err := cmd.RootCmd.Execute(); err != nil {
-    fmt.Println(err)
-    os.Exit(1)
-  }
-}
-```
-
-## Using the Cobra Generator
-
-Cobra provides its own program that will create your application and add any
-commands you want. It's the easiest way to incorporate Cobra into your application.
-
-[Here](https://github.com/spf13/cobra/blob/master/cobra/README.md) you can find more information about it.
-
-## Using the Cobra Library
-
-To manually implement Cobra you need to create a bare main.go file and a RootCmd file.
-You will optionally provide additional commands as you see fit.
-
-### Create rootCmd
-
-Cobra doesn't require any special constructors. Simply create your commands.
-
-Ideally you place this in app/cmd/root.go:
-
-```go
-var RootCmd = &cobra.Command{
-  Use:   "hugo",
-  Short: "Hugo is a very fast static site generator",
-  Long: `A Fast and Flexible Static Site Generator built with
-                love by spf13 and friends in Go.
-                Complete documentation is available at http://hugo.spf13.com`,
-  Run: func(cmd *cobra.Command, args []string) {
-    // Do Stuff Here
-  },
-}
-```
-
-You will additionally define flags and handle configuration in your init() function.
-
-For example cmd/root.go:
-
-```go
-import (
-  "fmt"
-  "os"
-
-  homedir "github.com/mitchellh/go-homedir"
-  "github.com/spf13/cobra"
-  "github.com/spf13/viper"
-)
-
-func init() {
-  cobra.OnInitialize(initConfig)
-  RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)")
-  RootCmd.PersistentFlags().StringVarP(&projectBase, "projectbase", "b", "", "base project directory eg. github.com/spf13/")
-  RootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "Author name for copyright attribution")
-  RootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "Name of license for the project (can provide `licensetext` in config)")
-  RootCmd.PersistentFlags().Bool("viper", true, "Use Viper for configuration")
-  viper.BindPFlag("author", RootCmd.PersistentFlags().Lookup("author"))
-  viper.BindPFlag("projectbase", RootCmd.PersistentFlags().Lookup("projectbase"))
-  viper.BindPFlag("useViper", RootCmd.PersistentFlags().Lookup("viper"))
-  viper.SetDefault("author", "NAME HERE <EMAIL ADDRESS>")
-  viper.SetDefault("license", "apache")
-}
-
-func Execute() {
-  RootCmd.Execute()
-}
-
-func initConfig() {
-  // Don't forget to read config either from cfgFile or from home directory!
-  if cfgFile != "" {
-    // Use config file from the flag.
-    viper.SetConfigFile(cfgFile)
-  } else {
-    // Find home directory.
-    home, err := homedir.Dir()
-    if err != nil {
-      fmt.Println(err)
-      os.Exit(1)
-    }
-
-    // Search config in home directory with name ".cobra" (without extension).
-    viper.AddConfigPath(home)
-    viper.SetConfigName(".cobra")
-  }
-
-  if err := viper.ReadInConfig(); err != nil {
-    fmt.Println("Can't read config:", err)
-    os.Exit(1)
-  }
-}
-```
-
-### Create your main.go
-
-With the root command you need to have your main function execute it.
-Execute should be run on the root for clarity, though it can be called on any command.
-
-In a Cobra app, typically the main.go file is very bare. It serves, one purpose, to initialize Cobra.
-
-```go
-package main
-
-import (
-  "fmt"
-  "os"
-
-  "{pathToYourApp}/cmd"
-)
-
-func main() {
-  if err := cmd.RootCmd.Execute(); err != nil {
-    fmt.Println(err)
-    os.Exit(1)
-  }
-}
-```
-
-### Create additional commands
-
-Additional commands can be defined and typically are each given their own file
-inside of the cmd/ directory.
-
-If you wanted to create a version command you would create cmd/version.go and
-populate it with the following:
-
-```go
-package cmd
-
-import (
-  "github.com/spf13/cobra"
-  "fmt"
-)
-
-func init() {
-  RootCmd.AddCommand(versionCmd)
-}
-
-var versionCmd = &cobra.Command{
-  Use:   "version",
-  Short: "Print the version number of Hugo",
-  Long:  `All software has versions. This is Hugo's`,
-  Run: func(cmd *cobra.Command, args []string) {
-    fmt.Println("Hugo Static Site Generator v0.9 -- HEAD")
-  },
-}
-```
-
-## Working with Flags
-
-Flags provide modifiers to control how the action command operates.
-
-### Assign flags to a command
-
-Since the flags are defined and used in different locations, we need to
-define a variable outside with the correct scope to assign the flag to
-work with.
-
-```go
-var Verbose bool
-var Source string
-```
-
-There are two different approaches to assign a flag.
-
-### Persistent Flags
-
-A flag can be 'persistent' meaning that this flag will be available to the
-command it's assigned to as well as every command under that command. For
-global flags, assign a flag as a persistent flag on the root.
-
-```go
-RootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output")
-```
-
-### Local Flags
-
-A flag can also be assigned locally which will only apply to that specific command.
-
-```go
-RootCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from")
-```
-
-### Local Flag on Parent Commands
-
-By default Cobra only parses local flags on the target command, any local flags on 
-parent commands are ignored. By enabling `Command.TraverseChildren` Cobra will 
-parse local flags on each command before executing the target command.
-
-```go
-command := cobra.Command{
-  Use: "print [OPTIONS] [COMMANDS]",
-  TraverseChildren: true,
-}
-```
-
-### Bind Flags with Config
-
-You can also bind your flags with [viper](https://github.com/spf13/viper):
-```go
-var author string
-
-func init() {
-  RootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution")
-  viper.BindPFlag("author", RootCmd.PersistentFlags().Lookup("author"))
-}
-```
-
-In this example the persistent flag `author` is bound with `viper`.
-**Note**, that the variable `author` will not be set to the value from config,
-when the `--author` flag is not provided by user.
-
-More in [viper documentation](https://github.com/spf13/viper#working-with-flags).
-
-## Positional and Custom Arguments
-
-Validation of positional arguments can be specified using the `Args` field
-of `Command`.
-
-The following validators are built in:
-
-- `NoArgs` - the command will report an error if there are any positional args.
-- `ArbitraryArgs` - the command will accept any args.
-- `OnlyValidArgs` - the command will report an error if there are any positional args that are not in the `ValidArgs` field of `Command`.
-- `MinimumNArgs(int)` - the command will report an error if there are not at least N positional args.
-- `MaximumNArgs(int)` - the command will report an error if there are more than N positional args.
-- `ExactArgs(int)` - the command will report an error if there are not exactly N positional args.
-- `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args.
-
-An example of setting the custom validator:
-
-```go
-var cmd = &cobra.Command{
-  Short: "hello",
-  Args: func(cmd *cobra.Command, args []string) error {
-    if len(args) < 1 {
-      return errors.New("requires at least one arg")
-    }
-    if myapp.IsValidColor(args[0]) {
-      return nil
-    }
-    return fmt.Errorf("invalid color specified: %s", args[0])
-  },
-  Run: func(cmd *cobra.Command, args []string) {
-    fmt.Println("Hello, World!")
-  },
-}
-```
-
-## Example
-
-In the example below, we have defined three commands. Two are at the top level
-and one (cmdTimes) is a child of one of the top commands. In this case the root
-is not executable meaning that a subcommand is required. This is accomplished
-by not providing a 'Run' for the 'rootCmd'.
-
-We have only defined one flag for a single command.
-
-More documentation about flags is available at https://github.com/spf13/pflag
-
-```go
-package main
-
-import (
-  "fmt"
-  "strings"
-
-  "github.com/spf13/cobra"
-)
-
-func main() {
-  var echoTimes int
-
-  var cmdPrint = &cobra.Command{
-    Use:   "print [string to print]",
-    Short: "Print anything to the screen",
-    Long: `print is for printing anything back to the screen.
-For many years people have printed back to the screen.`,
-    Args: cobra.MinimumNArgs(1),
-    Run: func(cmd *cobra.Command, args []string) {
-      fmt.Println("Print: " + strings.Join(args, " "))
-    },
-  }
-
-  var cmdEcho = &cobra.Command{
-    Use:   "echo [string to echo]",
-    Short: "Echo anything to the screen",
-    Long: `echo is for echoing anything back.
-Echo works a lot like print, except it has a child command.`,
-    Args: cobra.MinimumNArgs(1),
-    Run: func(cmd *cobra.Command, args []string) {
-      fmt.Println("Print: " + strings.Join(args, " "))
-    },
-  }
-
-  var cmdTimes = &cobra.Command{
-    Use:   "times [# times] [string to echo]",
-    Short: "Echo anything to the screen more times",
-    Long: `echo things multiple times back to the user by providing
-a count and a string.`,
-    Args: cobra.MinimumNArgs(1),
-    Run: func(cmd *cobra.Command, args []string) {
-      for i := 0; i < echoTimes; i++ {
-        fmt.Println("Echo: " + strings.Join(args, " "))
-      }
-    },
-  }
-
-  cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input")
-
-  var rootCmd = &cobra.Command{Use: "app"}
-  rootCmd.AddCommand(cmdPrint, cmdEcho)
-  cmdEcho.AddCommand(cmdTimes)
-  rootCmd.Execute()
-}
-```
-
-For a more complete example of a larger application, please checkout [Hugo](http://gohugo.io/).
-
-## Help Command
-
-Cobra automatically adds a help command to your application when you have subcommands.
-This will be called when a user runs 'app help'. Additionally, help will also
-support all other commands as input. Say, for instance, you have a command called
-'create' without any additional configuration; Cobra will work when 'app help
-create' is called.  Every command will automatically have the '--help' flag added.
-
-### Example
-
-The following output is automatically generated by Cobra. Nothing beyond the
-command and flag definitions are needed.
-
-    $ cobra help
-
-    Cobra is a CLI library for Go that empowers applications.
-    This application is a tool to generate the needed files
-    to quickly create a Cobra application.
-
-    Usage:
-      cobra [command]
-
-    Available Commands:
-      add         Add a command to a Cobra Application
-      help        Help about any command
-      init        Initialize a Cobra Application
-
-    Flags:
-      -a, --author string    author name for copyright attribution (default "YOUR NAME")
-          --config string    config file (default is $HOME/.cobra.yaml)
-      -h, --help             help for cobra
-      -l, --license string   name of license for the project
-          --viper            use Viper for configuration (default true)
-
-    Use "cobra [command] --help" for more information about a command.
-
-
-Help is just a command like any other. There is no special logic or behavior
-around it. In fact, you can provide your own if you want.
-
-### Defining your own help
-
-You can provide your own Help command or your own template for the default command to use
-with followind functions:
-
-```go
-cmd.SetHelpCommand(cmd *Command)
-cmd.SetHelpFunc(f func(*Command, []string))
-cmd.SetHelpTemplate(s string)
-```
-
-The latter two will also apply to any children commands.
-
-## Usage Message
-
-When the user provides an invalid flag or invalid command, Cobra responds by
-showing the user the 'usage'.
-
-### Example
-You may recognize this from the help above. That's because the default help
-embeds the usage as part of its output.
-
-    $ cobra --invalid
-    Error: unknown flag: --invalid
-    Usage:
-      cobra [command]
-
-    Available Commands:
-      add         Add a command to a Cobra Application
-      help        Help about any command
-      init        Initialize a Cobra Application
-
-    Flags:
-      -a, --author string    author name for copyright attribution (default "YOUR NAME")
-          --config string    config file (default is $HOME/.cobra.yaml)
-      -h, --help             help for cobra
-      -l, --license string   name of license for the project
-          --viper            use Viper for configuration (default true)
-
-    Use "cobra [command] --help" for more information about a command.
-
-### Defining your own usage
-You can provide your own usage function or template for Cobra to use.
-Like help, the function and template are overridable through public methods:
-
-```go
-cmd.SetUsageFunc(f func(*Command) error)
-cmd.SetUsageTemplate(s string)
-```
-
-## PreRun and PostRun Hooks
-
-It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`.  The `Persistent*Run` functions will be inherited by children if they do not declare their own.  These functions are run in the following order:
-
-- `PersistentPreRun`
-- `PreRun`
-- `Run`
-- `PostRun`
-- `PersistentPostRun`
-
-An example of two commands which use all of these features is below.  When the subcommand is executed, it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`:
-
-```go
-package main
-
-import (
-  "fmt"
-
-  "github.com/spf13/cobra"
-)
-
-func main() {
-
-  var rootCmd = &cobra.Command{
-    Use:   "root [sub]",
-    Short: "My root command",
-    PersistentPreRun: func(cmd *cobra.Command, args []string) {
-      fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args)
-    },
-    PreRun: func(cmd *cobra.Command, args []string) {
-      fmt.Printf("Inside rootCmd PreRun with args: %v\n", args)
-    },
-    Run: func(cmd *cobra.Command, args []string) {
-      fmt.Printf("Inside rootCmd Run with args: %v\n", args)
-    },
-    PostRun: func(cmd *cobra.Command, args []string) {
-      fmt.Printf("Inside rootCmd PostRun with args: %v\n", args)
-    },
-    PersistentPostRun: func(cmd *cobra.Command, args []string) {
-      fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args)
-    },
-  }
-
-  var subCmd = &cobra.Command{
-    Use:   "sub [no options!]",
-    Short: "My subcommand",
-    PreRun: func(cmd *cobra.Command, args []string) {
-      fmt.Printf("Inside subCmd PreRun with args: %v\n", args)
-    },
-    Run: func(cmd *cobra.Command, args []string) {
-      fmt.Printf("Inside subCmd Run with args: %v\n", args)
-    },
-    PostRun: func(cmd *cobra.Command, args []string) {
-      fmt.Printf("Inside subCmd PostRun with args: %v\n", args)
-    },
-    PersistentPostRun: func(cmd *cobra.Command, args []string) {
-      fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args)
-    },
-  }
-
-  rootCmd.AddCommand(subCmd)
-
-  rootCmd.SetArgs([]string{""})
-  rootCmd.Execute()
-  fmt.Println()
-  rootCmd.SetArgs([]string{"sub", "arg1", "arg2"})
-  rootCmd.Execute()
-}
-```
-
-Output:
-```
-Inside rootCmd PersistentPreRun with args: []
-Inside rootCmd PreRun with args: []
-Inside rootCmd Run with args: []
-Inside rootCmd PostRun with args: []
-Inside rootCmd PersistentPostRun with args: []
-
-Inside rootCmd PersistentPreRun with args: [arg1 arg2]
-Inside subCmd PreRun with args: [arg1 arg2]
-Inside subCmd Run with args: [arg1 arg2]
-Inside subCmd PostRun with args: [arg1 arg2]
-Inside subCmd PersistentPostRun with args: [arg1 arg2]
-```
-
-## Suggestions when "unknown command" happens
-
-Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example:
-
-```
-$ hugo srever
-Error: unknown command "srever" for "hugo"
-
-Did you mean this?
-        server
-
-Run 'hugo --help' for usage.
-```
-
-Suggestions are automatic based on every subcommand registered and use an implementation of [Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance). Every registered command that matches a minimum distance of 2 (ignoring case) will be displayed as a suggestion.
-
-If you need to disable suggestions or tweak the string distance in your command, use:
-
-```go
-command.DisableSuggestions = true
-```
-
-or
-
-```go
-command.SuggestionsMinimumDistance = 1
-```
-
-You can also explicitly set names for which a given command will be suggested using the `SuggestFor` attribute. This allows suggestions for strings that are not close in terms of string distance, but makes sense in your set of commands and for some which you don't want aliases. Example:
-
-```
-$ kubectl remove
-Error: unknown command "remove" for "kubectl"
-
-Did you mean this?
-        delete
-
-Run 'kubectl help' for usage.
-```
-
-## Generating documentation for your command
-
-Cobra can generate documentation based on subcommands, flags, etc. in the following formats:
-
-- [Markdown](doc/md_docs.md)
-- [ReStructured Text](doc/rest_docs.md)
-- [Man Page](doc/man_docs.md)
-
-## Generating bash completions
-
-Cobra can generate a bash-completion file. If you add more information to your command, these completions can be amazingly powerful and flexible.  Read more about it in [Bash Completions](bash_completions.md).
-
-# Contributing
-
-1. Fork it
-2. Download your fork to your PC (`git clone https://github.com/your_username/cobra && cd cobra`)
-3. Create your feature branch (`git checkout -b my-new-feature`)
-4. Make changes and add them (`git add .`)
-5. Commit your changes (`git commit -m 'Add some feature'`)
-6. Push to the branch (`git push origin my-new-feature`)
-7. Create new pull request
-
-# License
-
-Cobra is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/cobra/blob/master/LICENSE.txt)
diff --git a/vendor/github.com/spf13/cobra/bash_completions.md b/vendor/github.com/spf13/cobra/bash_completions.md
deleted file mode 100644
index 52bd39dd..00000000
--- a/vendor/github.com/spf13/cobra/bash_completions.md
+++ /dev/null
@@ -1,206 +0,0 @@
-# Generating Bash Completions For Your Own cobra.Command
-
-Generating bash completions from a cobra command is incredibly easy. An actual program which does so for the kubernetes kubectl binary is as follows:
-
-```go
-package main
-
-import (
-        "io/ioutil"
-        "os"
-
-        "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd"
-)
-
-func main() {
-        kubectl := cmd.NewFactory(nil).NewKubectlCommand(os.Stdin, ioutil.Discard, ioutil.Discard)
-        kubectl.GenBashCompletionFile("out.sh")
-}
-```
-
-`out.sh` will get you completions of subcommands and flags. Copy it to `/etc/bash_completion.d/` as described [here](https://debian-administration.org/article/316/An_introduction_to_bash_completion_part_1) and reset your terminal to use autocompletion. If you make additional annotations to your code, you can get even more intelligent and flexible behavior.
-
-## Creating your own custom functions
-
-Some more actual code that works in kubernetes:
-
-```bash
-const (
-        bash_completion_func = `__kubectl_parse_get()
-{
-    local kubectl_output out
-    if kubectl_output=$(kubectl get --no-headers "$1" 2>/dev/null); then
-        out=($(echo "${kubectl_output}" | awk '{print $1}'))
-        COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) )
-    fi
-}
-
-__kubectl_get_resource()
-{
-    if [[ ${#nouns[@]} -eq 0 ]]; then
-        return 1
-    fi
-    __kubectl_parse_get ${nouns[${#nouns[@]} -1]}
-    if [[ $? -eq 0 ]]; then
-        return 0
-    fi
-}
-
-__custom_func() {
-    case ${last_command} in
-        kubectl_get | kubectl_describe | kubectl_delete | kubectl_stop)
-            __kubectl_get_resource
-            return
-            ;;
-        *)
-            ;;
-    esac
-}
-`)
-```
-
-And then I set that in my command definition:
-
-```go
-cmds := &cobra.Command{
-	Use:   "kubectl",
-	Short: "kubectl controls the Kubernetes cluster manager",
-	Long: `kubectl controls the Kubernetes cluster manager.
-
-Find more information at https://github.com/GoogleCloudPlatform/kubernetes.`,
-	Run: runHelp,
-	BashCompletionFunction: bash_completion_func,
-}
-```
-
-The `BashCompletionFunction` option is really only valid/useful on the root command. Doing the above will cause `__custom_func()` to be called when the built in processor was unable to find a solution. In the case of kubernetes a valid command might look something like `kubectl get pod [mypod]`. If you type `kubectl get pod [tab][tab]` the `__customc_func()` will run because the cobra.Command only understood "kubectl" and "get." `__custom_func()` will see that the cobra.Command is "kubectl_get" and will thus call another helper `__kubectl_get_resource()`.  `__kubectl_get_resource` will look at the 'nouns' collected. In our example the only noun will be `pod`.  So it will call `__kubectl_parse_get pod`.  `__kubectl_parse_get` will actually call out to kubernetes and get any pods.  It will then set `COMPREPLY` to valid pods!
-
-## Have the completions code complete your 'nouns'
-
-In the above example "pod" was assumed to already be typed. But if you want `kubectl get [tab][tab]` to show a list of valid "nouns" you have to set them. Simplified code from `kubectl get` looks like:
-
-```go
-validArgs []string = { "pod", "node", "service", "replicationcontroller" }
-
-cmd := &cobra.Command{
-	Use:     "get [(-o|--output=)json|yaml|template|...] (RESOURCE [NAME] | RESOURCE/NAME ...)",
-	Short:   "Display one or many resources",
-	Long:    get_long,
-	Example: get_example,
-	Run: func(cmd *cobra.Command, args []string) {
-		err := RunGet(f, out, cmd, args)
-		util.CheckErr(err)
-	},
-	ValidArgs: validArgs,
-}
-```
-
-Notice we put the "ValidArgs" on the "get" subcommand. Doing so will give results like
-
-```bash
-# kubectl get [tab][tab]
-node                 pod                    replicationcontroller  service
-```
-
-## Plural form and shortcuts for nouns
-
-If your nouns have a number of aliases, you can define them alongside `ValidArgs` using `ArgAliases`:
-
-```go
-argAliases []string = { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" }
-
-cmd := &cobra.Command{
-    ...
-	ValidArgs:  validArgs,
-	ArgAliases: argAliases
-}
-```
-
-The aliases are not shown to the user on tab completion, but they are accepted as valid nouns by
-the completion algorithm if entered manually, e.g. in:
-
-```bash
-# kubectl get rc [tab][tab]
-backend        frontend       database 
-```
-
-Note that without declaring `rc` as an alias, the completion algorithm would show the list of nouns
-in this example again instead of the replication controllers.
-
-## Mark flags as required
-
-Most of the time completions will only show subcommands. But if a flag is required to make a subcommand work, you probably want it to show up when the user types [tab][tab].  Marking a flag as 'Required' is incredibly easy.
-
-```go
-cmd.MarkFlagRequired("pod")
-cmd.MarkFlagRequired("container")
-```
-
-and you'll get something like
-
-```bash
-# kubectl exec [tab][tab][tab]
--c            --container=  -p            --pod=  
-```
-
-# Specify valid filename extensions for flags that take a filename
-
-In this example we use --filename= and expect to get a json or yaml file as the argument. To make this easier we annotate the --filename flag with valid filename extensions.
-
-```go
-	annotations := []string{"json", "yaml", "yml"}
-	annotation := make(map[string][]string)
-	annotation[cobra.BashCompFilenameExt] = annotations
-
-	flag := &pflag.Flag{
-		Name:        "filename",
-		Shorthand:   "f",
-		Usage:       usage,
-		Value:       value,
-		DefValue:    value.String(),
-		Annotations: annotation,
-	}
-	cmd.Flags().AddFlag(flag)
-```
-
-Now when you run a command with this filename flag you'll get something like
-
-```bash
-# kubectl create -f 
-test/                         example/                      rpmbuild/
-hello.yml                     test.json
-```
-
-So while there are many other files in the CWD it only shows me subdirs and those with valid extensions.
-
-# Specifiy custom flag completion
-
-Similar to the filename completion and filtering using cobra.BashCompFilenameExt, you can specifiy
-a custom flag completion function with cobra.BashCompCustom:
-
-```go
-	annotation := make(map[string][]string)
-	annotation[cobra.BashCompFilenameExt] = []string{"__kubectl_get_namespaces"}
-
-	flag := &pflag.Flag{
-		Name:        "namespace",
-		Usage:       usage,
-		Annotations: annotation,
-	}
-	cmd.Flags().AddFlag(flag)
-```
-
-In addition add the `__handle_namespace_flag` implementation in the `BashCompletionFunction`
-value, e.g.:
-
-```bash
-__kubectl_get_namespaces()
-{
-    local template
-    template="{{ range .items  }}{{ .metadata.name }} {{ end }}"
-    local kubectl_out
-    if kubectl_out=$(kubectl get -o template --template="${template}" namespace 2>/dev/null); then
-        COMPREPLY=( $( compgen -W "${kubectl_out}[*]" -- "$cur" ) )
-    fi
-}
-```
diff --git a/vendor/github.com/spf13/pflag/.gitignore b/vendor/github.com/spf13/pflag/.gitignore
deleted file mode 100644
index c3da2901..00000000
--- a/vendor/github.com/spf13/pflag/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.idea/*
-
diff --git a/vendor/github.com/spf13/pflag/.travis.yml b/vendor/github.com/spf13/pflag/.travis.yml
deleted file mode 100644
index f8a63b30..00000000
--- a/vendor/github.com/spf13/pflag/.travis.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-sudo: false
-
-language: go
-
-go:
-  - 1.7.3
-  - 1.8.1
-  - tip
-
-matrix:
-  allow_failures:
-    - go: tip
-
-install:
-  - go get github.com/golang/lint/golint
-  - export PATH=$GOPATH/bin:$PATH
-  - go install ./...
-
-script:
-  - verify/all.sh -v
-  - go test ./...
diff --git a/vendor/github.com/spf13/pflag/README.md b/vendor/github.com/spf13/pflag/README.md
deleted file mode 100644
index b052414d..00000000
--- a/vendor/github.com/spf13/pflag/README.md
+++ /dev/null
@@ -1,296 +0,0 @@
-[![Build Status](https://travis-ci.org/spf13/pflag.svg?branch=master)](https://travis-ci.org/spf13/pflag)
-[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/pflag)](https://goreportcard.com/report/github.com/spf13/pflag)
-[![GoDoc](https://godoc.org/github.com/spf13/pflag?status.svg)](https://godoc.org/github.com/spf13/pflag)
-
-## Description
-
-pflag is a drop-in replacement for Go's flag package, implementing
-POSIX/GNU-style --flags.
-
-pflag is compatible with the [GNU extensions to the POSIX recommendations
-for command-line options][1]. For a more precise description, see the
-"Command-line flag syntax" section below.
-
-[1]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
-
-pflag is available under the same style of BSD license as the Go language,
-which can be found in the LICENSE file.
-
-## Installation
-
-pflag is available using the standard `go get` command.
-
-Install by running:
-
-    go get github.com/spf13/pflag
-
-Run tests by running:
-
-    go test github.com/spf13/pflag
-
-## Usage
-
-pflag is a drop-in replacement of Go's native flag package. If you import
-pflag under the name "flag" then all code should continue to function
-with no changes.
-
-``` go
-import flag "github.com/spf13/pflag"
-```
-
-There is one exception to this: if you directly instantiate the Flag struct
-there is one more field "Shorthand" that you will need to set.
-Most code never instantiates this struct directly, and instead uses
-functions such as String(), BoolVar(), and Var(), and is therefore
-unaffected.
-
-Define flags using flag.String(), Bool(), Int(), etc.
-
-This declares an integer flag, -flagname, stored in the pointer ip, with type *int.
-
-``` go
-var ip *int = flag.Int("flagname", 1234, "help message for flagname")
-```
-
-If you like, you can bind the flag to a variable using the Var() functions.
-
-``` go
-var flagvar int
-func init() {
-    flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
-}
-```
-
-Or you can create custom flags that satisfy the Value interface (with
-pointer receivers) and couple them to flag parsing by
-
-``` go
-flag.Var(&flagVal, "name", "help message for flagname")
-```
-
-For such flags, the default value is just the initial value of the variable.
-
-After all flags are defined, call
-
-``` go
-flag.Parse()
-```
-
-to parse the command line into the defined flags.
-
-Flags may then be used directly. If you're using the flags themselves,
-they are all pointers; if you bind to variables, they're values.
-
-``` go
-fmt.Println("ip has value ", *ip)
-fmt.Println("flagvar has value ", flagvar)
-```
-
-There are helpers function to get values later if you have the FlagSet but
-it was difficult to keep up with all of the flag pointers in your code.
-If you have a pflag.FlagSet with a flag called 'flagname' of type int you
-can use GetInt() to get the int value. But notice that 'flagname' must exist
-and it must be an int. GetString("flagname") will fail.
-
-``` go
-i, err := flagset.GetInt("flagname")
-```
-
-After parsing, the arguments after the flag are available as the
-slice flag.Args() or individually as flag.Arg(i).
-The arguments are indexed from 0 through flag.NArg()-1.
-
-The pflag package also defines some new functions that are not in flag,
-that give one-letter shorthands for flags. You can use these by appending
-'P' to the name of any function that defines a flag.
-
-``` go
-var ip = flag.IntP("flagname", "f", 1234, "help message")
-var flagvar bool
-func init() {
-	flag.BoolVarP(&flagvar, "boolname", "b", true, "help message")
-}
-flag.VarP(&flagVal, "varname", "v", "help message")
-```
-
-Shorthand letters can be used with single dashes on the command line.
-Boolean shorthand flags can be combined with other shorthand flags.
-
-The default set of command-line flags is controlled by
-top-level functions.  The FlagSet type allows one to define
-independent sets of flags, such as to implement subcommands
-in a command-line interface. The methods of FlagSet are
-analogous to the top-level functions for the command-line
-flag set.
-
-## Setting no option default values for flags
-
-After you create a flag it is possible to set the pflag.NoOptDefVal for
-the given flag. Doing this changes the meaning of the flag slightly. If
-a flag has a NoOptDefVal and the flag is set on the command line without
-an option the flag will be set to the NoOptDefVal. For example given:
-
-``` go
-var ip = flag.IntP("flagname", "f", 1234, "help message")
-flag.Lookup("flagname").NoOptDefVal = "4321"
-```
-
-Would result in something like
-
-| Parsed Arguments | Resulting Value |
-| -------------    | -------------   |
-| --flagname=1357  | ip=1357         |
-| --flagname       | ip=4321         |
-| [nothing]        | ip=1234         |
-
-## Command line flag syntax
-
-```
---flag    // boolean flags, or flags with no option default values
---flag x  // only on flags without a default value
---flag=x
-```
-
-Unlike the flag package, a single dash before an option means something
-different than a double dash. Single dashes signify a series of shorthand
-letters for flags. All but the last shorthand letter must be boolean flags
-or a flag with a default value
-
-```
-// boolean or flags where the 'no option default value' is set
--f
--f=true
--abc
-but
--b true is INVALID
-
-// non-boolean and flags without a 'no option default value'
--n 1234
--n=1234
--n1234
-
-// mixed
--abcs "hello"
--absd="hello"
--abcs1234
-```
-
-Flag parsing stops after the terminator "--". Unlike the flag package,
-flags can be interspersed with arguments anywhere on the command line
-before this terminator.
-
-Integer flags accept 1234, 0664, 0x1234 and may be negative.
-Boolean flags (in their long form) accept 1, 0, t, f, true, false,
-TRUE, FALSE, True, False.
-Duration flags accept any input valid for time.ParseDuration.
-
-## Mutating or "Normalizing" Flag names
-
-It is possible to set a custom flag name 'normalization function.' It allows flag names to be mutated both when created in the code and when used on the command line to some 'normalized' form. The 'normalized' form is used for comparison. Two examples of using the custom normalization func follow.
-
-**Example #1**: You want -, _, and . in flags to compare the same. aka --my-flag == --my_flag == --my.flag
-
-``` go
-func wordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName {
-	from := []string{"-", "_"}
-	to := "."
-	for _, sep := range from {
-		name = strings.Replace(name, sep, to, -1)
-	}
-	return pflag.NormalizedName(name)
-}
-
-myFlagSet.SetNormalizeFunc(wordSepNormalizeFunc)
-```
-
-**Example #2**: You want to alias two flags. aka --old-flag-name == --new-flag-name
-
-``` go
-func aliasNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName {
-	switch name {
-	case "old-flag-name":
-		name = "new-flag-name"
-		break
-	}
-	return pflag.NormalizedName(name)
-}
-
-myFlagSet.SetNormalizeFunc(aliasNormalizeFunc)
-```
-
-## Deprecating a flag or its shorthand
-It is possible to deprecate a flag, or just its shorthand. Deprecating a flag/shorthand hides it from help text and prints a usage message when the deprecated flag/shorthand is used.
-
-**Example #1**: You want to deprecate a flag named "badflag" as well as inform the users what flag they should use instead.
-```go
-// deprecate a flag by specifying its name and a usage message
-flags.MarkDeprecated("badflag", "please use --good-flag instead")
-```
-This hides "badflag" from help text, and prints `Flag --badflag has been deprecated, please use --good-flag instead` when "badflag" is used.
-
-**Example #2**: You want to keep a flag name "noshorthandflag" but deprecate its shortname "n".
-```go
-// deprecate a flag shorthand by specifying its flag name and a usage message
-flags.MarkShorthandDeprecated("noshorthandflag", "please use --noshorthandflag only")
-```
-This hides the shortname "n" from help text, and prints `Flag shorthand -n has been deprecated, please use --noshorthandflag only` when the shorthand "n" is used.
-
-Note that usage message is essential here, and it should not be empty.
-
-## Hidden flags
-It is possible to mark a flag as hidden, meaning it will still function as normal, however will not show up in usage/help text.
-
-**Example**: You have a flag named "secretFlag" that you need for internal use only and don't want it showing up in help text, or for its usage text to be available.
-```go
-// hide a flag by specifying its name
-flags.MarkHidden("secretFlag")
-```
-
-## Disable sorting of flags
-`pflag` allows you to disable sorting of flags for help and usage message.
-
-**Example**:
-```go
-flags.BoolP("verbose", "v", false, "verbose output")
-flags.String("coolflag", "yeaah", "it's really cool flag")
-flags.Int("usefulflag", 777, "sometimes it's very useful")
-flags.SortFlags = false
-flags.PrintDefaults()
-```
-**Output**:
-```
-  -v, --verbose           verbose output
-      --coolflag string   it's really cool flag (default "yeaah")
-      --usefulflag int    sometimes it's very useful (default 777)
-```
-
-
-## Supporting Go flags when using pflag
-In order to support flags defined using Go's `flag` package, they must be added to the `pflag` flagset. This is usually necessary
-to support flags defined by third-party dependencies (e.g. `golang/glog`).
-
-**Example**: You want to add the Go flags to the `CommandLine` flagset
-```go
-import (
-	goflag "flag"
-	flag "github.com/spf13/pflag"
-)
-
-var ip *int = flag.Int("flagname", 1234, "help message for flagname")
-
-func main() {
-	flag.CommandLine.AddGoFlagSet(goflag.CommandLine)
-	flag.Parse()
-}
-```
-
-## More info
-
-You can see the full reference documentation of the pflag package
-[at godoc.org][3], or through go's standard documentation system by
-running `godoc -http=:6060` and browsing to
-[http://localhost:6060/pkg/github.com/spf13/pflag][2] after
-installation.
-
-[2]: http://localhost:6060/pkg/github.com/spf13/pflag
-[3]: http://godoc.org/github.com/spf13/pflag
diff --git a/vendor/github.com/streadway/simpleuuid/.travis.yml b/vendor/github.com/streadway/simpleuuid/.travis.yml
deleted file mode 100644
index 4f2ee4d9..00000000
--- a/vendor/github.com/streadway/simpleuuid/.travis.yml
+++ /dev/null
@@ -1 +0,0 @@
-language: go
diff --git a/vendor/github.com/streadway/simpleuuid/README.md b/vendor/github.com/streadway/simpleuuid/README.md
deleted file mode 100644
index ee438347..00000000
--- a/vendor/github.com/streadway/simpleuuid/README.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# Simple UUIDs
-
-[![Build Status][1]][2]
-
-[1]: https://secure.travis-ci.org/streadway/simpleuuid.png
-[2]: http://www.travis-ci.org/streadway/simpleuuid
-
-This implements a variant of Format 1 from [RFC 4122][rfc4122] that is intended
-to be roughly sortable and play nicely as Cassandra TimeUUID keys.  Much of the
-inspiration comes form having used [ryanking's simple\_uuid
-gem](https://github.com/ryanking/simple_uuid).
-
-As the package implies, this is a simple UUID generator.  It doesn't offer
-total sorting, monotonic increments or prevent timing collisions.
-
-This package does offer a simple combination of random and time based
-uniqueness that will play nicely if you want a unique key from a Time object.
-If your time objects sort with a granularity of 100 nanoseconds then the UUIDs
-generated will have the same order.  UUIDs with the same time have undefined
-order.
-
-# Other UUIDs
-
-The other formats described in [RFC 4122][rfc4122] should be parsable either in
-text or byte form, though will not be sortable or likely have a meaningful time
-componenet.
-
-# Contributions
-
-Send a pull request with a tested `go fmt` change in a branch other than
-`master`.  Do try to organize your commits to be atomic to the changes
-introduced.
-
-# License
-
-Copyright (C) 2012 by Sean Treadway ([streadway](http://github.com/streadway))
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-[rfc4122]: http://www.ietf.org/rfc/rfc4122.txt
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl b/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl
deleted file mode 100644
index c5cc66f4..00000000
--- a/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl
+++ /dev/null
@@ -1,4 +0,0 @@
-{{.CommentFormat}}
-func {{.DocInfo.Name}}f(t TestingT, {{.ParamsFormat}}) bool {
-	return {{.DocInfo.Name}}(t, {{.ForwardedParamsFormat}})
-}
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl b/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl
deleted file mode 100644
index 99f9acfb..00000000
--- a/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl
+++ /dev/null
@@ -1,4 +0,0 @@
-{{.CommentWithoutT "a"}}
-func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) bool {
-	return {{.DocInfo.Name}}(a.t, {{.ForwardedParams}})
-}
diff --git a/vendor/github.com/stretchr/testify/require/require.go.tmpl b/vendor/github.com/stretchr/testify/require/require.go.tmpl
deleted file mode 100644
index d2c38f6f..00000000
--- a/vendor/github.com/stretchr/testify/require/require.go.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{{.Comment}}
-func {{.DocInfo.Name}}(t TestingT, {{.Params}}) {
-	if !assert.{{.DocInfo.Name}}(t, {{.ForwardedParams}}) {
-		t.FailNow()
-	}
-}
diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go.tmpl b/vendor/github.com/stretchr/testify/require/require_forward.go.tmpl
deleted file mode 100644
index b93569e0..00000000
--- a/vendor/github.com/stretchr/testify/require/require_forward.go.tmpl
+++ /dev/null
@@ -1,4 +0,0 @@
-{{.CommentWithoutT "a"}}
-func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) {
-	{{.DocInfo.Name}}(a.t, {{.ForwardedParams}})
-}
diff --git a/vendor/github.com/tendermint/abci/example/dummy/README.md b/vendor/github.com/tendermint/abci/example/dummy/README.md
deleted file mode 100644
index 8c1f0f04..00000000
--- a/vendor/github.com/tendermint/abci/example/dummy/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Dummy
-
-There are two app's here: the DummyApplication and the PersistentDummyApplication.
-
-## DummyApplication
-
-The DummyApplication is a simple merkle key-value store. 
-Transactions of the form `key=value` are stored as key-value pairs in the tree.
-Transactions without an `=` sign set the value to the key.
-The app has no replay protection (other than what the mempool provides).
-
-## PersistentDummyApplication
-
-The PersistentDummyApplication wraps the DummyApplication
-and provides two additional features:
-
-1) persistence of state across app restarts (using Tendermint's ABCI-Handshake mechanism)
-2) validator set changes
-
-The state is persisted in leveldb along with the last block committed,
-and the Handshake allows any necessary blocks to be replayed.
-Validator set changes are effected using the following transaction format:
-
-```
-val:pubkey1/power1,addr2/power2,addr3/power3"
-```
-
-where `power1` is the new voting power for the validator with `pubkey1` (possibly a new one).
-There is no sybil protection against new validators joining. 
-Validators can be removed by setting their power to `0`.
-
diff --git a/vendor/github.com/tendermint/abci/types/types.proto b/vendor/github.com/tendermint/abci/types/types.proto
deleted file mode 100644
index c80261e0..00000000
--- a/vendor/github.com/tendermint/abci/types/types.proto
+++ /dev/null
@@ -1,258 +0,0 @@
-syntax = "proto3";
-package types;
-
-// For more information on gogo.proto, see:
-// https://github.com/gogo/protobuf/blob/master/extensions.md
-import "github.com/gogo/protobuf/gogoproto/gogo.proto";
-
-// This file is copied from http://github.com/tendermint/abci
-
-//----------------------------------------
-// Request types
-
-message Request {
-  oneof value {
-    RequestEcho echo = 2;
-    RequestFlush flush = 3;
-    RequestInfo info = 4;
-    RequestSetOption set_option = 5;
-    RequestInitChain init_chain = 6;
-    RequestQuery query = 7;
-    RequestBeginBlock begin_block = 8;
-    RequestCheckTx check_tx = 9;
-    RequestDeliverTx deliver_tx = 19;
-    RequestEndBlock end_block = 11;
-    RequestCommit commit = 12;
-  }
-}
-
-message RequestEcho {
-  string message = 1;
-}
-
-message RequestFlush {
-}
-
-message RequestInfo {
-  string version = 1;
-}
-
-message RequestSetOption {
-  string key = 1;
-  string value = 2;
-}
-
-message RequestInitChain {
-  repeated Validator validators = 1;
-}
-
-message RequestQuery{
-  bytes data = 1;
-  string path = 2;
-  int64 height = 3;
-  bool prove = 4;
-}
-
-message RequestBeginBlock {
-  bytes hash = 1;
-  Header header = 2;
-  repeated int32 absent_validators = 3;
-  repeated Evidence byzantine_validators = 4;
-}
-
-message RequestCheckTx {
-  bytes tx = 1;
-}
-
-message RequestDeliverTx {
-  bytes tx = 1;
-}
-
-message RequestEndBlock{
-  int64 height = 1;
-}
-
-message RequestCommit {
-}
-
-//----------------------------------------
-// Response types
-
-message Response {
-  oneof value {
-    ResponseException exception = 1;
-    ResponseEcho echo = 2;
-    ResponseFlush flush = 3;
-    ResponseInfo info = 4;
-    ResponseSetOption set_option = 5;
-    ResponseInitChain init_chain = 6;
-    ResponseQuery query = 7;
-    ResponseBeginBlock begin_block = 8;
-    ResponseCheckTx check_tx = 9;
-    ResponseDeliverTx deliver_tx = 10;
-    ResponseEndBlock end_block = 11;
-    ResponseCommit commit = 12;
-  }
-}
-
-message ResponseException {
-  string error = 1;
-}
-
-message ResponseEcho {
-  string message = 1;
-}
-
-message ResponseFlush {
-}
-
-message ResponseInfo {
-  string data = 1;
-  string version = 2;
-  int64 last_block_height = 3;
-  bytes last_block_app_hash = 4;
-}
-
-message ResponseSetOption {
-  uint32 code = 1;
-  string log  = 2;
-}
-
-message ResponseInitChain {
-}
-
-message ResponseQuery {
-  uint32 code = 1;
-  int64 index = 2;
-  bytes key = 3 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
-  bytes value = 4 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
-  bytes proof = 5 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
-  int64 height = 6;
-  string log = 7;
-}
-
-message ResponseBeginBlock {
-}
-
-message ResponseCheckTx {
-  uint32 code = 1;
-  bytes data = 2 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
-  string log = 3;
-  int64 gas = 4;
-  int64 fee = 5;
-}
-
-message ResponseDeliverTx {
-  uint32 code = 1;
-  bytes data = 2 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
-  string log = 3;
-  repeated KVPair tags = 4;
-}
-
-message ResponseEndBlock {
-  repeated Validator validator_updates = 1;
-  ConsensusParams consensus_param_updates = 2;
-}
-
-message ResponseCommit {
-  uint32 code = 1;
-  bytes data = 2 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
-  string log = 3;
-}
-
-//----------------------------------------
-// Misc.
-
-// ConsensusParams contains all consensus-relevant parameters
-// that can be adjusted by the abci app
-message ConsensusParams {
-  BlockSize block_size = 1;
-  TxSize tx_size = 2;
-  BlockGossip block_gossip = 3;
-}
-
-// BlockSize contain limits on the block size.
-message BlockSize {
-  int32 max_bytes = 1;
-  int32 max_txs = 2;
-  int64 max_gas = 3;
-}
-
-// TxSize contain limits on the tx size.
-message TxSize{
-  int32 max_bytes = 1;
-  int64 max_gas = 2;
-}
-
-// BlockGossip determine consensus critical
-// elements of how blocks are gossiped
-message BlockGossip {
-  // Note: must not be 0
-  int32 block_part_size_bytes = 1;
-}
-
-//----------------------------------------
-// Blockchain Types
-
-message Header {
-  string chain_id = 1 [(gogoproto.customname) = "ChainID"];
-  int64 height = 2;
-  int64 time = 3;
-  int32 num_txs = 4;
-  BlockID last_block_id = 5 [(gogoproto.customname) = "LastBlockID"];
-  bytes last_commit_hash = 6;
-  bytes data_hash = 7;
-  bytes validators_hash = 8;
-  bytes app_hash = 9;
-}
-
-message BlockID {
-  bytes hash = 1;
-  PartSetHeader parts = 2;
-}
-
-message PartSetHeader {
-  int32 total = 1;
-  bytes hash = 2;
-}
-
-message Validator {
-  bytes pub_key = 1;
-  int64 power = 2;
-}
-
-message Evidence {
-  bytes pub_key = 1;
-  int64 height = 2;
-}
-
-//----------------------------------------
-// Abstract types
-
-message KVPair {
-  string key = 1;
-  enum Type {
-    STRING = 0;
-    INT = 1;
-  }
-  Type value_type = 2;
-  string value_string = 3;
-  int64 value_int = 4;
-}
-
-//----------------------------------------
-// Service Definition
-
-service ABCIApplication {
-  rpc Echo(RequestEcho) returns (ResponseEcho) ;
-  rpc Flush(RequestFlush) returns (ResponseFlush);
-  rpc Info(RequestInfo) returns (ResponseInfo);
-  rpc SetOption(RequestSetOption) returns (ResponseSetOption);
-  rpc DeliverTx(RequestDeliverTx) returns (ResponseDeliverTx);
-  rpc CheckTx(RequestCheckTx) returns (ResponseCheckTx);
-  rpc Query(RequestQuery) returns (ResponseQuery);
-  rpc Commit(RequestCommit) returns (ResponseCommit);
-  rpc InitChain(RequestInitChain) returns (ResponseInitChain);
-  rpc BeginBlock(RequestBeginBlock) returns (ResponseBeginBlock);
-  rpc EndBlock(RequestEndBlock) returns (ResponseEndBlock);
-}
diff --git a/vendor/github.com/tendermint/go-crypto/.gitignore b/vendor/github.com/tendermint/go-crypto/.gitignore
deleted file mode 100644
index d19e6457..00000000
--- a/vendor/github.com/tendermint/go-crypto/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.swp
-*.swo
-vendor
-shunit2
diff --git a/vendor/github.com/tendermint/go-crypto/CHANGELOG.md b/vendor/github.com/tendermint/go-crypto/CHANGELOG.md
deleted file mode 100644
index af053930..00000000
--- a/vendor/github.com/tendermint/go-crypto/CHANGELOG.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# Changelog
-
-## 0.4.1 (October 27, 2017)
-
-This release removes support for bcrypt as it was merged too soon without an upgrade plan
-for existing keys.
-
-REVERTS THE FOLLOWING COMMITS:
-
-- Parameterize and lower bcrypt cost - dfc4cdd2d71513e4a9922d679c74f36357c4c862
-- Upgrade keys to use bcrypt with salts (#38)  - 8e7f0e7701f92206679ad093d013b9b162427631
-
-## 0.4.0 (October 27, 2017)
-
-BREAKING CHANGES:
-
-- `keys`: use bcrypt plus salt
-
-FEATURES:
-
-- add support for signing via Ledger Nano
-
-IMPROVEMENTS:
-
-- linting and comments
-
-## 0.3.0 (September 22, 2017)
-
-BREAKING CHANGES:
-
-- Remove `cmd` and `keys/tx` packages altogether: move it to the cosmos-sdk
-- `cryptostore.Generator` takes a secret 
-- Remove `String()` from `Signature` interface
-
-FEATURES:
-
-- `keys`: add CRC16 error correcting code
-
-IMPROVEMENTS:
-
-- Allow no passwords on keys for development convenience
-
-
-## 0.2.1 (June 21, 2017)
-
-- Improve keys command
-  - No password prompts in non-interactive mode (echo 'foobar' | keys new foo)
-  - Added support for seed phrases
-    - Seed phrase now returned on `keys new`
-    - Add `keys restore` to restore private key from key phrase
-    - Checksum to verify typos in the seed phrase (rather than just a useless key)
-  - Add `keys delete` to remove a key if needed
-
-## 0.2.0 (May 18, 2017)
-
-BREAKING CHANGES:
-
-- [hd] The following functions no longer take a `coin string` as argument: `ComputeAddress`, `AddrFromPubKeyBytes`, `ComputeAddressForPrivKey`, `ComputeWIF`, `WIFFromPrivKeyBytes`
-- Changes to `PrivKey`, `PubKey`, and `Signature` (denoted `Xxx` below):
-  - interfaces are renamed `XxxInner`, and are not for use outside the package, though they must be exposed for sake of serialization.
-  - `Xxx` is now a struct that wraps the corresponding `XxxInner` interface
-
-FEATURES:
-
-- `github.com/tendermint/go-keys -> github.com/tendermint/go-crypto/keys` - command and lib for generating and managing encrypted keys
-- [hd] New function `WIFFromPrivKeyBytes(privKeyBytes []byte, compress bool) string`
-- Changes to `PrivKey`, `PubKey`, and `Signature` (denoted `Xxx` below):
-  - Expose a new method `Unwrap() XxxInner` on the `Xxx` struct which returns the corresponding `XxxInner` interface
-  - Expose a new method `Wrap() Xxx` on the `XxxInner` interface which returns the corresponding `Xxx` struct
-
-IMPROVEMENTS:
-
-- Update to use new `tmlibs` repository
-
-## 0.1.0 (April 14, 2017)
-
-Initial release
-
diff --git a/vendor/github.com/tendermint/go-crypto/Makefile b/vendor/github.com/tendermint/go-crypto/Makefile
deleted file mode 100644
index c1974c41..00000000
--- a/vendor/github.com/tendermint/go-crypto/Makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-.PHONEY: all test install get_vendor_deps ensure_tools codegen wordlist
-
-GOTOOLS = \
-	github.com/Masterminds/glide \
-	github.com/jteeuwen/go-bindata/go-bindata \
-	github.com/alecthomas/gometalinter
-
-REPO:=github.com/tendermint/go-crypto
-
-all: get_vendor_deps metalinter_test test
-
-test:
-	go test -p 1 `glide novendor`
-
-get_vendor_deps: ensure_tools
-	@rm -rf vendor/
-	@echo "--> Running glide install"
-	@glide install
-
-ensure_tools:
-	go get $(GOTOOLS)
-
-wordlist:
-	go-bindata -ignore ".*\.go" -o keys/wordlist/wordlist.go -pkg "wordlist" keys/wordlist/...
-
-prepgen: install
-	go install ./vendor/github.com/btcsuite/btcutil/base58
-	go install ./vendor/github.com/stretchr/testify/assert
-	go install ./vendor/github.com/stretchr/testify/require
-	go install ./vendor/golang.org/x/crypto/bcrypt
-
-codegen:
-	@echo "--> regenerating all interface wrappers"
-	@gen
-	@echo "Done!"
-
-metalinter: ensure_tools
-	@gometalinter --install
-	gometalinter --vendor --deadline=600s --enable-all --disable=lll ./...
-
-metalinter_test: ensure_tools
-	@gometalinter --install
-	gometalinter --vendor --deadline=600s --disable-all  \
-		--enable=deadcode \
-		--enable=gas \
-		--enable=goconst \
-		--enable=gocyclo \
-		--enable=gosimple \
-	 	--enable=ineffassign \
-	   	--enable=interfacer \
-		--enable=maligned \
-		--enable=megacheck \
-	 	--enable=misspell \
-		--enable=safesql \
-		--enable=staticcheck \
-		--enable=structcheck \
-	   	--enable=unconvert \
-		--enable=unused \
-		--enable=vetshadow \
-		--enable=vet \
-		--enable=varcheck \
-		./...
-
-		#--enable=dupl \
-		#--enable=errcheck \
-		#--enable=goimports \
-		#--enable=golint \ <== comments on anything exported
-		#--enable=gotype \
-		#--enable=unparam \
diff --git a/vendor/github.com/tendermint/go-crypto/README.md b/vendor/github.com/tendermint/go-crypto/README.md
deleted file mode 100644
index da76fe82..00000000
--- a/vendor/github.com/tendermint/go-crypto/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# go-crypto [![GoDoc](https://godoc.org/github.com/tendermint/go-crypto?status.svg)](https://godoc.org/github.com/tendermint/go-crypto)
-
-go-crypto is the cryptographic package adapted for Tendermint's uses
-
-## Importing it
-`import "github.com/tendermint/go-crypto"`
\ No newline at end of file
diff --git a/vendor/github.com/tendermint/go-crypto/circle.yml b/vendor/github.com/tendermint/go-crypto/circle.yml
deleted file mode 100644
index a37187dd..00000000
--- a/vendor/github.com/tendermint/go-crypto/circle.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-machine:
-  environment:
-    GOPATH: /home/ubuntu/.go_workspace
-    PROJECT_PARENT_PATH: "$GOPATH/src/github.com/$CIRCLE_PROJECT_USERNAME"
-    PROJECT_PATH: $GOPATH/src/github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME
-    GO15VENDOREXPERIMENT: 1
-  hosts:
-    circlehost: 127.0.0.1
-    localhost: 127.0.0.1
-
-dependencies:
-  override:
-    - mkdir -p "$PROJECT_PARENT_PATH"
-    - ln -sf "$HOME/$CIRCLE_PROJECT_REPONAME/" "$PROJECT_PATH"
-  post:
-    - go version
-
-test:
-  override:
-    - "go version"
-    - "cd $PROJECT_PATH && make all"
diff --git a/vendor/github.com/tendermint/go-crypto/glide.lock b/vendor/github.com/tendermint/go-crypto/glide.lock
deleted file mode 100644
index 096ec5c1..00000000
--- a/vendor/github.com/tendermint/go-crypto/glide.lock
+++ /dev/null
@@ -1,86 +0,0 @@
-hash: 6e06a42eafe0aeff112cee86aef6b2cab0e2f62c2e6bfccfb629aa22f6b62773
-updated: 2017-10-27T18:45:18.350198941+02:00
-imports:
-- name: github.com/btcsuite/btcd
-  version: c7588cbf7690cd9f047a28efa2dcd8f2435a4e5e
-  subpackages:
-  - btcec
-- name: github.com/btcsuite/btcutil
-  version: 66871daeb12123ece012a9628d2798d01195c4b3
-  subpackages:
-  - base58
-- name: github.com/ethanfrey/hid
-  version: 660bb717bd4e7cbcdf0f7cd5cadf1cb2e4be452a
-- name: github.com/ethanfrey/ledger
-  version: 23a7bb9d74bc83a862fcb4bddde24215b2295ad9
-- name: github.com/go-kit/kit
-  version: e2b298466b32c7cd5579a9b9b07e968fc9d9452c
-  subpackages:
-  - log
-  - log/level
-  - log/term
-- name: github.com/go-logfmt/logfmt
-  version: 390ab7935ee28ec6b286364bba9b4dd6410cb3d5
-- name: github.com/go-playground/locales
-  version: e4cbcb5d0652150d40ad0646651076b6bd2be4f6
-  subpackages:
-  - currency
-- name: github.com/go-playground/universal-translator
-  version: 71201497bace774495daed26a3874fd339e0b538
-- name: github.com/go-stack/stack
-  version: 817915b46b97fd7bb80e8ab6b69f01a53ac3eebf
-- name: github.com/howeyc/crc16
-  version: 96a97a1abb579c7ff1a8ffa77f2e72d1c314b57f
-- name: github.com/kr/logfmt
-  version: b84e30acd515aadc4b783ad4ff83aff3299bdfe0
-- name: github.com/pkg/errors
-  version: 645ef00459ed84a119197bfb8d8205042c6df63d
-- name: github.com/tendermint/ed25519
-  version: d8387025d2b9d158cf4efb07e7ebf814bcce2057
-  subpackages:
-  - edwards25519
-  - extra25519
-- name: github.com/tendermint/go-wire
-  version: 8ee84b5b2581530168daf66fc89c548d27403c57
-  subpackages:
-  - data
-  - data/base58
-- name: github.com/tendermint/tmlibs
-  version: 092eb701c7276907cdbed258750e22ce895b6735
-  subpackages:
-  - common
-  - log
-- name: golang.org/x/crypto
-  version: edd5e9b0879d13ee6970a50153d85b8fec9f7686
-  subpackages:
-  - bcrypt
-  - blowfish
-  - nacl/secretbox
-  - openpgp/armor
-  - openpgp/errors
-  - pbkdf2
-  - poly1305
-  - ripemd160
-  - salsa20/salsa
-- name: gopkg.in/go-playground/validator.v9
-  version: 1304298bf10d085adec514b076772a79c9cadb6b
-testImports:
-- name: github.com/davecgh/go-spew
-  version: 6d212800a42e8ab5c146b8ace3490ee17e5225f9
-  subpackages:
-  - spew
-- name: github.com/mndrix/btcutil
-  version: d3a63a5752ecf3fbc06bd97365da752111c263df
-- name: github.com/pmezard/go-difflib
-  version: d8ed2627bdf02c080bf22230dbb337003b7aba2d
-  subpackages:
-  - difflib
-- name: github.com/stretchr/testify
-  version: 69483b4bd14f5845b5a1e55bca19e954e827f1d0
-  subpackages:
-  - assert
-  - require
-- name: github.com/tyler-smith/go-bip32
-  version: eb790af526c30f23a7c8b00a48e342f9d0bd6386
-- name: github.com/tyler-smith/go-bip39
-  version: 8e7a99b3e716f36d3b080a9a70f9eb45abe4edcc
diff --git a/vendor/github.com/tendermint/go-crypto/glide.yaml b/vendor/github.com/tendermint/go-crypto/glide.yaml
deleted file mode 100644
index 2f3e7247..00000000
--- a/vendor/github.com/tendermint/go-crypto/glide.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-package: github.com/tendermint/go-crypto
-import:
-- package: github.com/btcsuite/btcd
-  subpackages:
-  - btcec
-- package: github.com/btcsuite/btcutil
-  subpackages:
-  - base58
-- package: github.com/tendermint/ed25519
-  subpackages:
-  - extra25519
-- package: github.com/tendermint/tmlibs
-  version: develop
-- package: github.com/tendermint/go-wire
-  version: develop
-  subpackages:
-  - data
-  - data/base58
-- package: golang.org/x/crypto
-  subpackages:
-  - blowfish
-  - nacl/secretbox
-  - openpgp/armor
-  - ripemd160
-- package: github.com/pkg/errors
-- package: github.com/howeyc/crc16
-- package: github.com/ethanfrey/ledger
-testImport:
-- package: github.com/mndrix/btcutil
-- package: github.com/stretchr/testify
-  version: ^1.1.4
-  subpackages:
-  - assert
-  - require
-- package: github.com/tyler-smith/go-bip32
-- package: github.com/tyler-smith/go-bip39
diff --git a/vendor/github.com/tendermint/go-wire/.gitignore b/vendor/github.com/tendermint/go-wire/.gitignore
deleted file mode 100644
index 62f28681..00000000
--- a/vendor/github.com/tendermint/go-wire/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-vendor
-.glide
diff --git a/vendor/github.com/tendermint/go-wire/CHANGELOG.md b/vendor/github.com/tendermint/go-wire/CHANGELOG.md
deleted file mode 100644
index 8540dead..00000000
--- a/vendor/github.com/tendermint/go-wire/CHANGELOG.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# Changelog
-
-## 0.7.2 (Dec 5, 2017)
-
-IMPROVEMENTS:
- - data: expose Marshal and Unmarshal methods on `Bytes` to support protobuf
- - nowriter: start adding new interfaces for improved technical language and organization
-
-BUG FIXES:
- - fix incorrect byte write count for integers
-
-## 0.7.1 (Oct 27, 2017)
-
-BUG FIXES:
- - dont use nil for empty byte array (undoes fix from 0.7.0 pending further analysis)
-
-## 0.7.0 (Oct 26, 2017)
-
-BREAKING CHANGE:
- - time: panic on encode, error on decode for times before 1970
- - rm codec.go
-
-IMPROVEMENTS:
- - various additional comments, guards, and checks
-
-BUG FIXES:
- - fix default encoding of time and bytes
- - don't panic on ReadTime
- - limit the amount of memory that can be allocated
-
-## 0.6.2 (May 18, 2017)
-
-FEATURES:
-
-- `github.com/tendermint/go-data` -> `github.com/tendermint/go-wire/data`
-
-IMPROVEMENTS:
-
-- Update imports for new `tmlibs` repository
-
-## 0.6.1 (April 18, 2017)
-
-FEATURES:
-
-- Size functions: ByteSliceSize, UvarintSize
-- CLI tool 
-- Expression DSL
-- New functions for bools: ReadBool, WriteBool, GetBool, PutBool
-- ReadJSONBytes function
-
-
-IMPROVEMENTS:
-
-- Makefile
-- Use arrays instead of slices
-- More testing
-- Allow omitempty to work on non-comparable types
-
-BUG FIXES:
-
-- Allow time parsing for seconds, milliseconds, and microseconds
-- Stop overflows in ReadBinaryBytes
-
-
-## 0.6.0 (January 18, 2016)
-
-BREAKING CHANGES:
-
-FEATURES:
-
-IMPROVEMENTS:
-
-BUG FIXES:
-
-
-## Prehistory
-
diff --git a/vendor/github.com/tendermint/go-wire/Makefile b/vendor/github.com/tendermint/go-wire/Makefile
deleted file mode 100644
index dca90294..00000000
--- a/vendor/github.com/tendermint/go-wire/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-.PHONEY: all docs test install get_vendor_deps ensure_tools
-
-GOTOOLS = \
-	github.com/Masterminds/glide
-
-STRING := ../../clipperhouse/stringer
-
-all: test install
-
-docs:
-	@go get github.com/davecheney/godoc2md
-	godoc2md $(REPO) > README.md
-
-all: install test
-
-install: 
-	go install github.com/tendermint/go-wire/cmd/...
-
-test:
-	go test `glide novendor`
-
-get_vendor_deps: ensure_tools
-	@rm -rf vendor/
-	@echo "--> Running glide install"
-	@glide install
-
-ensure_tools:
-	go get $(GOTOOLS)
-
-pigeon:
-	pigeon -o expr/expr.go expr/expr.peg
-
-tools:
-	go get github.com/clipperhouse/gen
-	@cd ${STRING} && git remote add haus https://github.com/hausdorff/stringer.git
-	@cd ${STRING} && git fetch haus && git checkout fix-imports
-	@cd ${STRING} && go install .
-	@go install github.com/clipperhouse/gen
-
diff --git a/vendor/github.com/tendermint/go-wire/README.md b/vendor/github.com/tendermint/go-wire/README.md
deleted file mode 100644
index 1baea637..00000000
--- a/vendor/github.com/tendermint/go-wire/README.md
+++ /dev/null
@@ -1,202 +0,0 @@
-# Wire encoding for Golang
-
-This software implements Go bindings for the Wire encoding protocol.
-The goal of the Wire encoding protocol is to be a simple language-agnostic encoding protocol for rapid prototyping of blockchain applications.
-
-This package also includes a compatible (and slower) JSON codec.
-
-### Supported types
-
-**Primary types**: `uvarint`, `varint`, `byte`, `uint[8,16,32,64]`, `int[8,16,32,64]`, `string`, and `time` types are supported
-
-**Arrays**: Arrays can hold items of any arbitrary type.  For example, byte-arrays and byte-array-arrays are supported.
-
-**Structs**: Struct fields are encoded by value (without the key name) in the order that they are declared in the struct.  In this way it is similar to Apache Avro.
-
-**Interfaces**: Interfaces are like union types where the value can be any non-interface type. The actual value is preceded by a single "type byte" that shows which concrete is encoded.
-
-**Pointers**: Pointers are like optional fields.  The first byte is 0x00 to denote a null pointer (e.g. no value), otherwise it is 0x01.
-
-### Unsupported types
-
-**Maps**: Maps are not supported because for most languages, key orders are nondeterministic.
-If you need to encode/decode maps of arbitrary key-value pairs, encode an array of {key,value} structs instead.
-
-**Floating points**: Floating point number types are discouraged because [of reasons](http://gafferongames.com/networking-for-game-programmers/floating-point-determinism/).  If you need to use them, use the field tag `wire:"unsafe"`.
-
-**Enums**: Enum types are not supported in all languages, and they're simple enough to model as integers anyways.
-
-### A struct example
-
-Struct types can be automatically encoded with reflection.  Unlike json-encoding, no field
-name or type information is encoded.  Field values are simply encoded in order.
-
-```go
-package main
-
-import (
-  "bytes"
-  "fmt"
-  "math"
-  "github.com/tendermint/go-wire"
-)
-
-type Foo struct {
-  MyString       string
-  MyUint32       uint32
-  myPrivateBytes []byte
-}
-
-func main() {
-
-  foo := Foo{"my string", math.MaxUint32, []byte("my private bytes")}
-
-  buf, n, err := new(bytes.Buffer), int(0), error(nil)
-  wire.WriteBinary(foo, buf, &n, &err)
-
-  fmt.Printf("%X\n", buf.Bytes())
-}
-```
-
-The above example prints:
-
-```
-01096D7920737472696E67FFFFFFFF, where
-
-0109                            is the varint encoding of the length of string "my string"
-    6D7920737472696E67          is the bytes of string "my string"
-                      FFFFFFFF  is the bytes for math.MaxUint32, a uint32
-```
-
-Note that the unexported "myPrivateBytes" isn't encoded.
-
-### An interface example
-
-Here's an example with interfaces.
-
-```go
-package main
-
-import (
-  "bytes"
-  "fmt"
-  "github.com/tendermint/go-wire"
-)
-
-type Animal interface{}
-type Dog struct{ Name string }
-type Cat struct{ Name string }
-type Cow struct{ Name string }
-
-var _ = wire.RegisterInterface(
-  struct{ Animal }{},
-  wire.ConcreteType{Dog{}, 0x01}, // type-byte of 0x01 for Dogs
-  wire.ConcreteType{Cat{}, 0x02}, // type-byte of 0x02 for Cats
-  wire.ConcreteType{Cow{}, 0x03}, // type-byte of 0x03 for Cows
-)
-
-func main() {
-
-  animals := []Animal{
-    Dog{"Snoopy"},
-    Cow{"Daisy"},
-  }
-
-  buf, n, err := new(bytes.Buffer), int(0), error(nil)
-  wire.WriteBinary(animals, buf, &n, &err)
-
-  fmt.Printf("%X\n", buf.Bytes())
-}
-```
-
-The above example prints:
-
-```
-0102010106536E6F6F70790301054461697379, where
-
-0102                                    is the varint encoding of the length of the array
-    01                                  is the type-byte for a Dog
-      0106                              is the varint encoding of the length of the Dog's name
-          536E6F6F7079                  is the Dog's name "Snoopy"
-                      03                is the type-byte for a Cow
-                        0105            is the varint encoding of the length of the Cow's name
-                            4461697379  is the Cow's name "Daisy"
-```
-
-### A pointer example
-
-Here's an example with pointers (and interfaces too).
-
-```go
-package main
-
-import (
-	"bytes"
-	"fmt"
-	"github.com/tendermint/go-wire"
-)
-
-type Animal interface{}
-type Dog struct{ Name string }
-type Cat struct{ Name string }
-type Cow struct{ Name string }
-
-var _ = wire.RegisterInterface(
-	struct{ Animal }{},
-	wire.ConcreteType{Dog{}, 0x01},  // type-byte of 0x01 for Dogs
-	wire.ConcreteType{&Dog{}, 0x02}, // type-byte of 0x02 for Dog pointers
-)
-
-type MyStruct struct {
-	Field1 Animal
-	Field2 *Dog
-	Field3 *Dog
-}
-
-func main() {
-
-	myStruct := MyStruct{
-		Field1: &Dog{"Snoopy"},
-		Field2: &Dog{"Smappy"},
-		Field3: (*Dog)(nil),
-	}
-
-	buf, n, err := new(bytes.Buffer), int(0), error(nil)
-	wire.WriteBinary(myStruct, buf, &n, &err)
-
-	fmt.Printf("%X\n", buf.Bytes())
-}
-```
-
-The above example prints:
-
-```
-020106536E6F6F7079010106536D6170707900, where
-
-02                                      is the type-byte for a Dog pointer for Field1
-  0106                                  is the varint encoding of the length of the Dog's name
-      536E6F6F7079                      is the Dog's name "Snoopy"
-                  01                    is a byte indicating a non-null pointer for Field2
-                    0106                is the varint encoding of the length of the Dog's name
-                        536D61707079    is the Dog's name "Smappy"
-                                    00  is a byte indicating a null pointer for Field3
-```
-
-Notice that in Field1, that the value is non-null is implied in the type-byte of 0x02.
-While Golang lets you have nil-pointers as interface values, this is a Golang-specific feature that is absent in other OOP languages
-such as Java.  So, Go-Wire does not support nil-pointers for interface values.  The following example would return an error:
-
-```go
-myStruct := MyStruct{
-  Field1: (*Dog)(nil),    // Error!
-  Field2: &Dog{"Smappy"}, // Ok!
-  Field3: (*Dog)(nil),    // Ok!
-}
-
-buf, n, err := new(bytes.Buffer), int(0), error(nil)
-wire.WriteBinary(myStruct, buf, &n, &err)
-fmt.Println(err)
-
-// Unexpected nil-pointer of type main.Dog for registered interface Animal.
-// For compatibility with other languages, nil-pointer interface values are forbidden.
-```
diff --git a/vendor/github.com/tendermint/go-wire/circle.yml b/vendor/github.com/tendermint/go-wire/circle.yml
deleted file mode 100644
index 23ac4bd9..00000000
--- a/vendor/github.com/tendermint/go-wire/circle.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-machine:
-  environment:
-    GOPATH: /home/ubuntu/.go_workspace
-    PROJECT_PARENT_PATH: "$GOPATH/src/github.com/$CIRCLE_PROJECT_USERNAME"
-    PROJECT_PATH: $GOPATH/src/github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME
-    GO15VENDOREXPERIMENT: 1
-  hosts:
-    circlehost: 127.0.0.1
-    localhost: 127.0.0.1
-
-dependencies:
-  override:
-    - mkdir -p "$PROJECT_PARENT_PATH"
-    - ln -sf "$HOME/$CIRCLE_PROJECT_REPONAME/" "$PROJECT_PATH"
-  post:
-    - go version
-
-test:
-  override:
-    - "go version"
-    - "cd $PROJECT_PATH && make get_vendor_deps && make test"
diff --git a/vendor/github.com/tendermint/go-wire/data/Makefile b/vendor/github.com/tendermint/go-wire/data/Makefile
deleted file mode 100644
index fb28a541..00000000
--- a/vendor/github.com/tendermint/go-wire/data/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-.PHONY: docs
-REPO:=github.com/tendermint/go-wire/data
-
-docs:
-	@go get github.com/davecheney/godoc2md
-	godoc2md $(REPO) > README.md
-
-test:
-	go test ./...
diff --git a/vendor/github.com/tendermint/go-wire/data/README.md b/vendor/github.com/tendermint/go-wire/data/README.md
deleted file mode 100644
index 81249932..00000000
--- a/vendor/github.com/tendermint/go-wire/data/README.md
+++ /dev/null
@@ -1,302 +0,0 @@
-
-
-# data
-`import "github.com/tendermint/go-wire/data"`
-
-* [Overview](#pkg-overview)
-* [Index](#pkg-index)
-
-## <a name="pkg-overview">Overview</a>
-Data is designed to provide a standard interface and helper functions to
-easily allow serialization and deserialization of your data structures
-in both binary and json representations.
-
-This is commonly needed for interpreting transactions or stored data in the
-abci app, as well as accepting json input in the light-client proxy. If we
-can standardize how we pass data around the app, we can also allow more
-extensions, like data storage that can interpret the meaning of the []byte
-passed in, and use that to index multiple fields for example.
-
-Serialization of data is pretty automatic using standard json and go-wire
-encoders.  The main issue is deserialization, especially when using interfaces
-where there are many possible concrete types.
-
-go-wire handles this by registering the types and providing a custom
-deserializer:
-
-
-	var _ = wire.RegisterInterface(
-	  struct{ PubKey }{},
-	  wire.ConcreteType{PubKeyEd25519{}, PubKeyTypeEd25519},
-	  wire.ConcreteType{PubKeySecp256k1{}, PubKeyTypeSecp256k1},
-	)
-	
-	func PubKeyFromBytes(pubKeyBytes []byte) (pubKey PubKey, err error) {
-	  err = wire.ReadBinaryBytes(pubKeyBytes, &pubKey)
-	  return
-	}
-	
-	func (pubKey PubKeyEd25519) Bytes() []byte {
-	  return wire.BinaryBytes(struct{ PubKey }{pubKey})
-	}
-
-This prepends a type-byte to the binary representation upon serialization and
-using that byte to switch between various representations on deserialization.
-go-wire also supports something similar in json, but it leads to kind of ugly
-mixed-types arrays, and requires using the go-wire json parser, which is
-limited relative to the standard library encoding/json library.
-
-In json, the typical idiom is to use a type string and message data:
-
-
-	{
-	  "type": "this part tells you how to interpret the message",
-	  "data": ...the actual message is here, in some kind of json...
-	}
-
-I took inspiration from two blog posts, that demonstrate how to use this
-to build (de)serialization in a go-wire like way.
-
-* <a href="http://eagain.net/articles/go-dynamic-json/">http://eagain.net/articles/go-dynamic-json/</a>
-* <a href="http://eagain.net/articles/go-json-kind/">http://eagain.net/articles/go-json-kind/</a>
-
-This package unifies these two in a single Mapper.
-
-You app needs to do three things to take full advantage of this:
-
-1. For every interface you wish to serialize, define a holder struct with some helper methods, like FooerS wraps Fooer in common_test.go
-2. In all structs that include this interface, include the wrapping struct instead.  Functionally, this also fulfills the interface, so except for setting it or casting it to a sub-type it works the same.
-3. Register the interface implementations as in the last init of common_test.go. If you are currently using go-wire, you should be doing this already
-
-The benefits here is you can now run any of the following methods, both for
-efficient storage in our go app, and a common format for rpc / humans.
-
-
-	orig := FooerS{foo}
-	
-	// read/write binary a la tendermint/go-wire
-	bparsed := FooerS{}
-	err := wire.ReadBinaryBytes(
-	  wire.BinaryBytes(orig), &bparsed)
-	
-	// read/write json a la encoding/json
-	jparsed := FooerS{}
-	j, err := json.MarshalIndent(orig, "", "\t")
-	err = json.Unmarshal(j, &jparsed)
-
-See <a href="https://github.com/tendermint/go-wire/data/blob/master/common_test.go">https://github.com/tendermint/go-wire/data/blob/master/common_test.go</a> to see
-how to set up your code to use this.
-
-
-
-
-## <a name="pkg-index">Index</a>
-* [Variables](#pkg-variables)
-* [type ByteEncoder](#ByteEncoder)
-* [type Bytes](#Bytes)
-  * [func (b Bytes) MarshalJSON() ([]byte, error)](#Bytes.MarshalJSON)
-  * [func (b *Bytes) UnmarshalJSON(data []byte) error](#Bytes.UnmarshalJSON)
-* [type JSONMapper](#JSONMapper)
-  * [func (m *JSONMapper) FromJSON(data []byte) (interface{}, error)](#JSONMapper.FromJSON)
-  * [func (m *JSONMapper) ToJSON(data interface{}) ([]byte, error)](#JSONMapper.ToJSON)
-* [type Mapper](#Mapper)
-  * [func NewMapper(base interface{}) Mapper](#NewMapper)
-  * [func (m Mapper) RegisterInterface(kind string, b byte, data interface{}) Mapper](#Mapper.RegisterInterface)
-
-
-#### <a name="pkg-files">Package files</a>
-[binary.go](/src/github.com/tendermint/go-wire/data/binary.go) [bytes.go](/src/github.com/tendermint/go-wire/data/bytes.go) [docs.go](/src/github.com/tendermint/go-wire/data/docs.go) [json.go](/src/github.com/tendermint/go-wire/data/json.go) [wrapper.go](/src/github.com/tendermint/go-wire/data/wrapper.go) 
-
-
-
-## <a name="pkg-variables">Variables</a>
-``` go
-var (
-    Encoder       ByteEncoder = hexEncoder{}
-    HexEncoder                = hexEncoder{}
-    B64Encoder                = base64Encoder{base64.URLEncoding}
-    RawB64Encoder             = base64Encoder{base64.RawURLEncoding}
-)
-```
-Encoder is a global setting for all byte encoding
-This is the default.  Please override in the main()/init()
-of your program to change how byte slices are presented
-
-
-
-
-## <a name="ByteEncoder">type</a> [ByteEncoder](/src/target/bytes.go?s=1436:1547#L44)
-``` go
-type ByteEncoder interface {
-    Marshal(bytes []byte) ([]byte, error)
-    Unmarshal(dst *[]byte, src []byte) error
-}
-```
-ByteEncoder handles both the marshalling and unmarshalling of
-an arbitrary byte slice.
-
-All Bytes use the global Encoder set in this package.
-If you want to use this encoding for byte arrays, you can just
-implement a simple custom marshaller for your byte array
-
-
-	type Dings [64]byte
-	
-	func (d Dings) MarshalJSON() ([]byte, error) {
-	  return data.Encoder.Marshal(d[:])
-	}
-	
-	func (d *Dings) UnmarshalJSON(data []byte) error {
-	  ref := (*d)[:]
-	  return data.Encoder.Unmarshal(&ref, data)
-	}
-
-
-
-
-
-
-
-
-
-
-## <a name="Bytes">type</a> [Bytes](/src/target/bytes.go?s=681:698#L16)
-``` go
-type Bytes []byte
-```
-Bytes is a special byte slice that allows us to control the
-serialization format per app.
-
-Thus, basecoin could use hex, another app base64, and a third
-app base58...
-
-
-
-
-
-
-
-
-
-
-### <a name="Bytes.MarshalJSON">func</a> (Bytes) [MarshalJSON](/src/target/bytes.go?s=700:744#L18)
-``` go
-func (b Bytes) MarshalJSON() ([]byte, error)
-```
-
-
-
-### <a name="Bytes.UnmarshalJSON">func</a> (\*Bytes) [UnmarshalJSON](/src/target/bytes.go?s=777:825#L22)
-``` go
-func (b *Bytes) UnmarshalJSON(data []byte) error
-```
-
-
-
-## <a name="JSONMapper">type</a> [JSONMapper](/src/target/json.go?s=80:178#L1)
-``` go
-type JSONMapper struct {
-    // contains filtered or unexported fields
-}
-```
-
-
-
-
-
-
-
-
-
-### <a name="JSONMapper.FromJSON">func</a> (\*JSONMapper) [FromJSON](/src/target/json.go?s=1202:1265#L41)
-``` go
-func (m *JSONMapper) FromJSON(data []byte) (interface{}, error)
-```
-FromJSON will deserialize the output of ToJSON for every registered
-implementation of the interface
-
-
-
-
-### <a name="JSONMapper.ToJSON">func</a> (\*JSONMapper) [ToJSON](/src/target/json.go?s=1814:1875#L67)
-``` go
-func (m *JSONMapper) ToJSON(data interface{}) ([]byte, error)
-```
-ToJson will serialize a registered implementation into a format like:
-
-
-	{
-	  "type": "foo",
-	  "data": {
-	    "name": "dings"
-	  }
-	}
-
-this allows us to properly deserialize with FromJSON
-
-
-
-
-## <a name="Mapper">type</a> [Mapper](/src/target/wrapper.go?s=485:535#L5)
-``` go
-type Mapper struct {
-    *JSONMapper
-    // contains filtered or unexported fields
-}
-```
-Mapper is the main entry point in the package.
-
-On init, you should call NewMapper() for each interface type you want
-to support flexible de-serialization, and then
-RegisterInterface() in the init() function for each implementation of these
-interfaces.
-
-Note that unlike go-wire, you can call RegisterInterface separately from
-different locations with each implementation, not all in one place.
-Just be careful not to use the same key or byte, of init will *panic*
-
-
-
-
-
-
-
-### <a name="NewMapper">func</a> [NewMapper](/src/target/wrapper.go?s=747:786#L17)
-``` go
-func NewMapper(base interface{}) Mapper
-```
-NewMapper creates a Mapper.
-
-If you have:
-
-
-	type Foo interface {....}
-	type FooS struct { Foo }
-
-then you should pass in FooS{} in NewMapper, and implementations of Foo
-in RegisterInterface
-
-
-
-
-
-### <a name="Mapper.RegisterInterface">func</a> (Mapper) [RegisterInterface](/src/target/wrapper.go?s=1184:1263#L30)
-``` go
-func (m Mapper) RegisterInterface(kind string, b byte, data interface{}) Mapper
-```
-RegisterInterface should be called once for each implementation of the
-interface that we wish to support.
-
-kind is the type string used in the json representation, while b is the
-type byte used in the go-wire representation. data is one instance of this
-concrete type, like Bar{}
-
-
-
-
-
-
-
-
-- - -
-Generated by [godoc2md](http://godoc.org/github.com/davecheney/godoc2md)
diff --git a/vendor/github.com/tendermint/go-wire/glide.lock b/vendor/github.com/tendermint/go-wire/glide.lock
deleted file mode 100644
index 71c81b93..00000000
--- a/vendor/github.com/tendermint/go-wire/glide.lock
+++ /dev/null
@@ -1,48 +0,0 @@
-hash: ef298394075ed9e51238956557635cfe6d592e74d3801b10faa6a6b0059216bc
-updated: 2017-05-15T09:15:54.260968491-04:00
-imports:
-- name: github.com/clipperhouse/typewriter
-  version: c1a48da378ebb7db1db9f35981b5cc24bf2e5b85
-- name: github.com/go-stack/stack
-  version: 100eb0c0a9c5b306ca2fb4f165df21d80ada4b82
-- name: github.com/mattn/go-colorable
-  version: ded68f7a9561c023e790de24279db7ebf473ea80
-- name: github.com/mattn/go-isatty
-  version: fc9e8d8ef48496124e79ae0df75490096eccf6fe
-- name: github.com/pkg/errors
-  version: ff09b135c25aae272398c51a07235b90a75aa4f0
-- name: github.com/tendermint/log15
-  version: ae0f3d6450da9eac7074b439c8e1c3cabf0d5ce6
-  subpackages:
-  - term
-- name: github.com/tendermint/tmlibs
-  version: 2f8551d3b614dd0c0c6c114c42ab25901cc41a52
-  subpackages:
-  - common
-- name: golang.org/x/crypto
-  version: c7af5bf2638a1164f2eb5467c39c6cffbd13a02e
-  subpackages:
-  - ripemd160
-- name: golang.org/x/sys
-  version: 9ccfe848b9db8435a24c424abbc07a921adf1df5
-  subpackages:
-  - unix
-- name: golang.org/x/tools
-  version: 144c6642b5d832d6c44a53dad6ee61665dd432ce
-  subpackages:
-  - go/ast/astutil
-  - imports
-testImports:
-- name: github.com/davecgh/go-spew
-  version: 04cdfd42973bb9c8589fd6a731800cf222fde1a9
-  subpackages:
-  - spew
-- name: github.com/pmezard/go-difflib
-  version: d8ed2627bdf02c080bf22230dbb337003b7aba2d
-  subpackages:
-  - difflib
-- name: github.com/stretchr/testify
-  version: 4d4bfba8f1d1027c4fdbe371823030df51419987
-  subpackages:
-  - assert
-  - require
diff --git a/vendor/github.com/tendermint/go-wire/glide.yaml b/vendor/github.com/tendermint/go-wire/glide.yaml
deleted file mode 100644
index 7ac23c3f..00000000
--- a/vendor/github.com/tendermint/go-wire/glide.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-package: github.com/tendermint/go-wire
-import:
-- package: github.com/clipperhouse/typewriter
-- package: github.com/pkg/errors
-- package: github.com/tendermint/tmlibs
-  subpackages:
-  - common
-- package: golang.org/x/crypto
-  subpackages:
-  - ripemd160
-testImport:
-- package: github.com/stretchr/testify
-  subpackages:
-  - assert
-  - require
diff --git a/vendor/github.com/tendermint/iavl/.gitignore b/vendor/github.com/tendermint/iavl/.gitignore
deleted file mode 100644
index 65dd13da..00000000
--- a/vendor/github.com/tendermint/iavl/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-vendor
-.glide
-
-# created in test code
-test.db
-
-# profiling data
-*\.test
-cpu*.out
-mem*.out
-cpu*.pdf
-mem*.pdf
diff --git a/vendor/github.com/tendermint/iavl/Makefile b/vendor/github.com/tendermint/iavl/Makefile
deleted file mode 100644
index 05458d0b..00000000
--- a/vendor/github.com/tendermint/iavl/Makefile
+++ /dev/null
@@ -1,56 +0,0 @@
-GOTOOLS := github.com/mitchellh/gox \
-           github.com/Masterminds/glide
-
-PDFFLAGS := -pdf --nodefraction=0.1
-
-all: get_vendor_deps test
-
-test:
-	go test -v --race `glide novendor`
-
-tools:
-	go get -u -v $(GOTOOLS)
-
-get_vendor_deps:
-	go get github.com/Masterminds/glide
-	glide install
-
-# bench is the basic tests that shouldn't crash an aws instance
-bench:
-	cd benchmarks && \
-		go test -bench=RandomBytes . && \
-		go test -bench=Small . && \
-		go test -bench=Medium . && \
-		go test -bench=BenchmarkMemKeySizes .
-
-# fullbench is extra tests needing lots of memory and to run locally
-fullbench:
-	cd benchmarks && \
-		go test -bench=RandomBytes . && \
-		go test -bench=Small . && \
-		go test -bench=Medium . && \
-		go test -timeout=30m -bench=Large . && \
-		go test -bench=Mem . && \
-		go test -timeout=60m -bench=LevelDB .
-
-
-# note that this just profiles the in-memory version, not persistence
-profile:
-	cd benchmarks && \
-		go test -bench=Mem -cpuprofile=cpu.out -memprofile=mem.out . && \
-		go tool pprof ${PDFFLAGS} benchmarks.test cpu.out > cpu.pdf && \
-		go tool pprof --alloc_space ${PDFFLAGS} benchmarks.test mem.out > mem_space.pdf && \
-		go tool pprof --alloc_objects ${PDFFLAGS} benchmarks.test mem.out > mem_obj.pdf
-
-explorecpu:
-	cd benchmarks && \
-		go tool pprof benchmarks.test cpu.out
-
-exploremem:
-	cd benchmarks && \
-		go tool pprof --alloc_objects benchmarks.test mem.out
-
-delve:
-	dlv test ./benchmarks -- -test.bench=.
-
-.PHONY: all test tools
diff --git a/vendor/github.com/tendermint/iavl/PERFORMANCE.md b/vendor/github.com/tendermint/iavl/PERFORMANCE.md
deleted file mode 100644
index b1acdd93..00000000
--- a/vendor/github.com/tendermint/iavl/PERFORMANCE.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# Performance
-
-After some discussion with Jae on the usability, it seems performance is a big concern.  If every write takes around 1ms, that puts a serious upper limit on the speed of the consensus engine (especially since with the check/tx dichotomy, we need at least two writes (to cache, only one to disk) and likely two or more queries to handle any transaction).
-
-As Jae notes: for CheckTx, a copy of IAVLTree doesn't need to be saved. During CheckTx it'll load inner nodes into the cache. The cache is shared w/ the AppendTx state IAVLTree, so during AppendTx we should save some time. There would only be 1 set of writes. Also, there's quite a bit of free time in between blocks as provided by Tendermint, during which CheckTx can run priming the cache, so hopefully this helps as well.
-
-Jae: That said, I'm not sure exactly what the tx throughput would be during normal running times. I'm hoping that we can have e.g. 3 second blocks w/ say over a hundred txs per sec per block w/ 1 million items. That will get us through for some time, but that time is limited.
-
-Ethan: I agree, and think this works now with goleveldb backing on most host machines.  For public chains, maybe it is desired to push 1000 tx every 3 sec to a block, with a db size of 1 billion items.  10x the throughput with 1000x the data.  That could be a long-term goal, and would scale to the cosmos and beyond.
-
-## Plan
-
-For any goal, we need some clear steps.
-
-1) Cleanup code, and write some more benchmark cases to capture "realistic" usage
-2) Run tests on various hardware to see the best performing backing stores
-3) Do profiling on the best performance to see if there are any easy performance gains
-4) (Possibly) Write another implementation of merkle.Tree to improve all the memory overhead, consider CPU cache, etc....
-5) (Possibly) Write another backend datastore to persist the tree in a more efficient way
-
-The rest of this document is the planned or completed actions for the above-listed steps.
-
-## Cleanup
-
-Done in branch `cleanup_deps`:
-  * Fixed up dependeny management (tmlibs/db etc in glide/vendor)
-  * Updated Makefile (test, bench, get_deps)
-  * Fixed broken code - `looper.go` and one benchmark didn't run
-
-Benchmarks should be parameterized on:
-  1) storage implementation
-  2) initial data size
-  3) length of keys
-  4) length of data
-  5) block size (frequency of copy/hash...)
-Thus, we would see the same benchmark run against memdb with 100K items, goleveldb with 100K, leveldb with 100K, memdb with 10K, goleveldb with 10K...
-
-Scenarios to run after db is set up.
-  * Pure query time (known/hits, vs. random/misses)
-  * Write timing (known/updates, vs. random/inserts)
-  * Delete timing (existing keys only)
-  * TMSP Usage:
-    * For each block size:
-      * 2x copy "last commit" -> check and real
-      * repeat for each tx:
-        * (50% update + 50% insert?)
-        * query + insert/update in check
-        * query + insert/update in real
-      * get hash
-      * save real
-      * real -> "last commit"
-
-
-## Benchmarks
-
-After writing the benchmarks, we can run them under various environments and store the results under benchmarks directory.  Some useful environments to test:
-
-  * Dev machines
-  * Digital ocean small/large machine
-  * Various AWS setups
-
-Please run the benchmark on more machines and add the result.  Just type: `make record` in the directory and wait a (long) while (with little other load on the machine).
-
-This will require also a quick setup script to install go and run tests in these environments.  Maybe some scripts even. Also, this will produce a lot of files and we may have to graph them to see something useful...
-
-But for starting, my laptop, and one digital ocean and one aws server should be sufficient. At least to find the winner, before profiling.
-
-
-## Profiling
-
-Once we figure out which current implementation looks fastest, let's profile it to make it even faster.  It is great to optimize the memdb code to really speed up the hashing and tree-building logic.  And then focus on the backend implementation to optimize the disk storage, which will be the next major pain point.
-
-Some guides:
-
-  * [Profiling benchmarks locally](https://medium.com/@hackintoshrao/daily-code-optimization-using-benchmarks-and-profiling-in-golang-gophercon-india-2016-talk-874c8b4dc3c5#.jmnd8w2qr)
-  * [On optimizing memory](https://signalfx.com/blog/a-pattern-for-optimizing-go-2/)
-  * [Profiling running programs](http://blog.ralch.com/tutorial/golang-performance-and-memory-analysis/)
-  * [Dave Chenny's profiler pkg](https://github.com/pkg/profile)
-
-Some ideas for speedups:
-
-  * [Speedup SHA256 100x on ARM](https://blog.minio.io/accelerating-sha256-by-100x-in-golang-on-arm-1517225f5ff4#.pybt7bb3w)
-  * [Faster SHA256 golang implementation](https://github.com/minio/sha256-simd)
-  * [Data structure alignment](http://stackoverflow.com/questions/39063530/optimising-datastructure-word-alignment-padding-in-golang)
-  * [Slice alignment](http://blog.chewxy.com/2016/07/25/on-the-memory-alignment-of-go-slice-values/)
-  * [Tool to analyze your structs](https://github.com/dominikh/go-structlayout)
-
-## Tree Re-implementation
-
-If we want to copy lots of objects, it becomes better to think of using memcpy on large (eg. 4-16KB) buffers than copying individual structs.  We also could allocate arrays of structs and align them to remove a lot of memory management and gc overhead. That means going down to some C-level coding...
-
-Some links for thought:
-
-  * [Array representation of a binary tree](http://www.cse.hut.fi/en/research/SVG/TRAKLA2/tutorials/heap_tutorial/taulukkona.html)
-  * [Memcpy buffer size timing](http://stackoverflow.com/questions/21038965/why-does-the-speed-of-memcpy-drop-dramatically-every-4kb)
-  * [Calling memcpy from go](https://github.com/jsgilmore/shm/blob/master/memcpy.go)
-  * [Unsafe docs](https://godoc.org/unsafe)
-  * [...and how to use it](https://copyninja.info/blog/workaround-gotypesystems.html)
-  * [Or maybe just plain copy...](https://godoc.org/builtin#copy)
-
-## Backend implementation
-
-Storing each link in the tree in leveldb treats each node as an isolated item.  Since we know some usage patterns (when a parent is hit, very likely one child will be hit), we could try to organize the memory and disk location of the nodes ourselves to make it more efficient.  Or course, this could be a long, slippery slope.
-
-Inspired by the [Array representation](http://www.cse.hut.fi/en/research/SVG/TRAKLA2/tutorials/heap_tutorial/taulukkona.html) link above, we could consider other layouts for the nodes. For example, rather than store them alone, or the entire tree in one big array, the nodes could be placed in groups of 15 based on the parent (parent and 3 generations of children).  Then we have 4 levels before jumping to another location.  Maybe we just store this larger chunk as one leveldb location, or really try to do the mmap ourselves...
-
-In any case, assuming around 100 bytes for one non-leaf node (3 sha hashes, plus prefix, plus other data), 15 nodes would be a little less than 2K, maybe even go one more level to 31 nodes and 3-4KB, where we could take best advantage of the memory/disk page size.
-
-Some links for thought:
-
-  * [Memory mapped files](https://github.com/edsrzf/mmap-go)
diff --git a/vendor/github.com/tendermint/iavl/POEM b/vendor/github.com/tendermint/iavl/POEM
deleted file mode 100644
index f361067a..00000000
--- a/vendor/github.com/tendermint/iavl/POEM
+++ /dev/null
@@ -1,29 +0,0 @@
-writing down, my checksum
-waiting for the, data to come
-no need to pray for integrity
-thats cuz I use, a merkle tree
-
-grab the root, with a quick hash run
-if the hash works out,
-it must have been done
-
-theres no need, for trust to arise
-thanks to the crypto
-now that I can merkleyes
-
-take that data, merklize
-ye, I merklize ...
-
-then the truth, begins to shine
-the inverse of a hash, you will never find
-and as I watch, the dataset grow
-producing a proof, is never slow
-
-Where do I find, the will to hash
-How do I teach it?
-It doesn't pay in cash
-Bitcoin, here, I've realized
-Thats what I need now,
-cuz real currencies merklize
-
--EB
diff --git a/vendor/github.com/tendermint/iavl/README.md b/vendor/github.com/tendermint/iavl/README.md
deleted file mode 100644
index cc5a0e5c..00000000
--- a/vendor/github.com/tendermint/iavl/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## IAVL+ Tree
-
-**Note: Requires Go 1.8+**
-
-A versioned, snapshottable (immutable) AVL+ tree for persistent data.
-
-The purpose of this data structure is to provide persistent storage for key-value pairs (say to store account balances) such that a deterministic merkle root hash can be computed.  The tree is balanced using a variant of the [AVL algortihm](http://en.wikipedia.org/wiki/AVL_tree) so all operations are O(log(n)).
-
-Nodes of this tree are immutable and indexed by their hash.  Thus any node serves as an immutable snapshot which lets us stage uncommitted transactions from the mempool cheaply, and we can instantly roll back to the last committed state to process transactions of a newly committed block (which may not be the same set of transactions as those from the mempool).
-
-In an AVL tree, the heights of the two child subtrees of any node differ by at most one.  Whenever this condition is violated upon an update, the tree is rebalanced by creating O(log(n)) new nodes that point to unmodified nodes of the old tree.  In the original AVL algorithm, inner nodes can also hold key-value pairs.  The AVL+ algorithm (note the plus) modifies the AVL algorithm to keep all values on leaf nodes, while only using branch-nodes to store keys.  This simplifies the algorithm while keeping the merkle hash trail short.
-
-In Ethereum, the analog is [Patricia tries](http://en.wikipedia.org/wiki/Radix_tree).  There are tradeoffs.  Keys do not need to be hashed prior to insertion in IAVL+ trees, so this provides faster iteration in the key space which may benefit some applications.  The logic is simpler to implement, requiring only two types of nodes -- inner nodes and leaf nodes.  On the other hand, while IAVL+ trees provide a deterministic merkle root hash, it depends on the order of transactions.  In practice this shouldn't be a problem, since you can efficiently encode the tree structure when serializing the tree contents.
diff --git a/vendor/github.com/tendermint/iavl/circle.yml b/vendor/github.com/tendermint/iavl/circle.yml
deleted file mode 100644
index 2c4b0230..00000000
--- a/vendor/github.com/tendermint/iavl/circle.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-machine:
-  environment:
-    GOPATH: /home/ubuntu/.go_workspace
-    REPO: $GOPATH/src/github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME
-  hosts:
-    circlehost: 127.0.0.1
-    localhost: 127.0.0.1
-
-checkout:
-  post:
-    - rm -rf $REPO
-    - mkdir -p $HOME/.go_workspace/src/github.com/$CIRCLE_PROJECT_USERNAME
-    - mv $HOME/$CIRCLE_PROJECT_REPONAME $REPO
-
-dependencies:
-  override:
-    - "cd $REPO && make get_vendor_deps"
-
-test:
-  override:
-    - "cd $REPO && make test"
diff --git a/vendor/github.com/tendermint/iavl/glide.lock b/vendor/github.com/tendermint/iavl/glide.lock
deleted file mode 100644
index 087781d7..00000000
--- a/vendor/github.com/tendermint/iavl/glide.lock
+++ /dev/null
@@ -1,74 +0,0 @@
-hash: d85321db3ba463c6bde8f76c65524d5bb8bcdbf43702d162b26b71a39d89a3b5
-updated: 2017-10-24T13:20:51.823688121+02:00
-imports:
-- name: github.com/go-kit/kit
-  version: d67bb4c202e3b91377d1079b110a6c9ce23ab2f8
-  subpackages:
-  - log
-  - log/level
-  - log/term
-- name: github.com/go-logfmt/logfmt
-  version: 390ab7935ee28ec6b286364bba9b4dd6410cb3d5
-- name: github.com/go-playground/locales
-  version: 1e5f1161c6416a5ff48840eb8724a394e48cc534
-  subpackages:
-  - currency
-- name: github.com/go-playground/universal-translator
-  version: 71201497bace774495daed26a3874fd339e0b538
-- name: github.com/go-stack/stack
-  version: 100eb0c0a9c5b306ca2fb4f165df21d80ada4b82
-- name: github.com/golang/snappy
-  version: 553a641470496b2327abcac10b36396bd98e45c9
-- name: github.com/jmhodges/levigo
-  version: c42d9e0ca023e2198120196f842701bb4c55d7b9
-- name: github.com/kr/logfmt
-  version: b84e30acd515aadc4b783ad4ff83aff3299bdfe0
-- name: github.com/pkg/errors
-  version: 645ef00459ed84a119197bfb8d8205042c6df63d
-- name: github.com/syndtr/goleveldb
-  version: 8c81ea47d4c41a385645e133e15510fc6a2a74b4
-  subpackages:
-  - leveldb
-  - leveldb/cache
-  - leveldb/comparer
-  - leveldb/errors
-  - leveldb/filter
-  - leveldb/iterator
-  - leveldb/journal
-  - leveldb/memdb
-  - leveldb/opt
-  - leveldb/storage
-  - leveldb/table
-  - leveldb/util
-- name: github.com/tendermint/go-wire
-  version: 99d2169a1e39c65983eacaa1da867d6f3218e1c9
-  subpackages:
-  - data
-- name: github.com/tendermint/tmlibs
-  version: d4c6a68e5871be2d3091f12627eaf3ee15b42ed2
-  subpackages:
-  - common
-  - db
-  - log
-  - merkle
-  - test
-- name: golang.org/x/crypto
-  version: c7af5bf2638a1164f2eb5467c39c6cffbd13a02e
-  subpackages:
-  - ripemd160
-- name: gopkg.in/go-playground/validator.v9
-  version: 6d8c18553ea1ac493d049edd6f102f52e618f085
-testImports:
-- name: github.com/davecgh/go-spew
-  version: 6d212800a42e8ab5c146b8ace3490ee17e5225f9
-  subpackages:
-  - spew
-- name: github.com/pmezard/go-difflib
-  version: d8ed2627bdf02c080bf22230dbb337003b7aba2d
-  subpackages:
-  - difflib
-- name: github.com/stretchr/testify
-  version: 69483b4bd14f5845b5a1e55bca19e954e827f1d0
-  subpackages:
-  - assert
-  - require
diff --git a/vendor/github.com/tendermint/iavl/glide.yaml b/vendor/github.com/tendermint/iavl/glide.yaml
deleted file mode 100644
index 49b74579..00000000
--- a/vendor/github.com/tendermint/iavl/glide.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-package: github.com/tendermint/iavl
-import:
-- package: github.com/tendermint/go-wire
-  version: develop
-- package: github.com/tendermint/tmlibs
-  version: develop
-  subpackages:
-  - common
-  - db
-  - merkle
-- package: golang.org/x/crypto
-  subpackages:
-  - ripemd160
-testImport:
-- package: github.com/stretchr/testify
-  version: ^1.1.4
-  subpackages:
-  - assert
-  - require
diff --git a/vendor/github.com/tendermint/merkleeyes/iavl/PERFORMANCE.md b/vendor/github.com/tendermint/merkleeyes/iavl/PERFORMANCE.md
deleted file mode 100644
index b1acdd93..00000000
--- a/vendor/github.com/tendermint/merkleeyes/iavl/PERFORMANCE.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# Performance
-
-After some discussion with Jae on the usability, it seems performance is a big concern.  If every write takes around 1ms, that puts a serious upper limit on the speed of the consensus engine (especially since with the check/tx dichotomy, we need at least two writes (to cache, only one to disk) and likely two or more queries to handle any transaction).
-
-As Jae notes: for CheckTx, a copy of IAVLTree doesn't need to be saved. During CheckTx it'll load inner nodes into the cache. The cache is shared w/ the AppendTx state IAVLTree, so during AppendTx we should save some time. There would only be 1 set of writes. Also, there's quite a bit of free time in between blocks as provided by Tendermint, during which CheckTx can run priming the cache, so hopefully this helps as well.
-
-Jae: That said, I'm not sure exactly what the tx throughput would be during normal running times. I'm hoping that we can have e.g. 3 second blocks w/ say over a hundred txs per sec per block w/ 1 million items. That will get us through for some time, but that time is limited.
-
-Ethan: I agree, and think this works now with goleveldb backing on most host machines.  For public chains, maybe it is desired to push 1000 tx every 3 sec to a block, with a db size of 1 billion items.  10x the throughput with 1000x the data.  That could be a long-term goal, and would scale to the cosmos and beyond.
-
-## Plan
-
-For any goal, we need some clear steps.
-
-1) Cleanup code, and write some more benchmark cases to capture "realistic" usage
-2) Run tests on various hardware to see the best performing backing stores
-3) Do profiling on the best performance to see if there are any easy performance gains
-4) (Possibly) Write another implementation of merkle.Tree to improve all the memory overhead, consider CPU cache, etc....
-5) (Possibly) Write another backend datastore to persist the tree in a more efficient way
-
-The rest of this document is the planned or completed actions for the above-listed steps.
-
-## Cleanup
-
-Done in branch `cleanup_deps`:
-  * Fixed up dependeny management (tmlibs/db etc in glide/vendor)
-  * Updated Makefile (test, bench, get_deps)
-  * Fixed broken code - `looper.go` and one benchmark didn't run
-
-Benchmarks should be parameterized on:
-  1) storage implementation
-  2) initial data size
-  3) length of keys
-  4) length of data
-  5) block size (frequency of copy/hash...)
-Thus, we would see the same benchmark run against memdb with 100K items, goleveldb with 100K, leveldb with 100K, memdb with 10K, goleveldb with 10K...
-
-Scenarios to run after db is set up.
-  * Pure query time (known/hits, vs. random/misses)
-  * Write timing (known/updates, vs. random/inserts)
-  * Delete timing (existing keys only)
-  * TMSP Usage:
-    * For each block size:
-      * 2x copy "last commit" -> check and real
-      * repeat for each tx:
-        * (50% update + 50% insert?)
-        * query + insert/update in check
-        * query + insert/update in real
-      * get hash
-      * save real
-      * real -> "last commit"
-
-
-## Benchmarks
-
-After writing the benchmarks, we can run them under various environments and store the results under benchmarks directory.  Some useful environments to test:
-
-  * Dev machines
-  * Digital ocean small/large machine
-  * Various AWS setups
-
-Please run the benchmark on more machines and add the result.  Just type: `make record` in the directory and wait a (long) while (with little other load on the machine).
-
-This will require also a quick setup script to install go and run tests in these environments.  Maybe some scripts even. Also, this will produce a lot of files and we may have to graph them to see something useful...
-
-But for starting, my laptop, and one digital ocean and one aws server should be sufficient. At least to find the winner, before profiling.
-
-
-## Profiling
-
-Once we figure out which current implementation looks fastest, let's profile it to make it even faster.  It is great to optimize the memdb code to really speed up the hashing and tree-building logic.  And then focus on the backend implementation to optimize the disk storage, which will be the next major pain point.
-
-Some guides:
-
-  * [Profiling benchmarks locally](https://medium.com/@hackintoshrao/daily-code-optimization-using-benchmarks-and-profiling-in-golang-gophercon-india-2016-talk-874c8b4dc3c5#.jmnd8w2qr)
-  * [On optimizing memory](https://signalfx.com/blog/a-pattern-for-optimizing-go-2/)
-  * [Profiling running programs](http://blog.ralch.com/tutorial/golang-performance-and-memory-analysis/)
-  * [Dave Chenny's profiler pkg](https://github.com/pkg/profile)
-
-Some ideas for speedups:
-
-  * [Speedup SHA256 100x on ARM](https://blog.minio.io/accelerating-sha256-by-100x-in-golang-on-arm-1517225f5ff4#.pybt7bb3w)
-  * [Faster SHA256 golang implementation](https://github.com/minio/sha256-simd)
-  * [Data structure alignment](http://stackoverflow.com/questions/39063530/optimising-datastructure-word-alignment-padding-in-golang)
-  * [Slice alignment](http://blog.chewxy.com/2016/07/25/on-the-memory-alignment-of-go-slice-values/)
-  * [Tool to analyze your structs](https://github.com/dominikh/go-structlayout)
-
-## Tree Re-implementation
-
-If we want to copy lots of objects, it becomes better to think of using memcpy on large (eg. 4-16KB) buffers than copying individual structs.  We also could allocate arrays of structs and align them to remove a lot of memory management and gc overhead. That means going down to some C-level coding...
-
-Some links for thought:
-
-  * [Array representation of a binary tree](http://www.cse.hut.fi/en/research/SVG/TRAKLA2/tutorials/heap_tutorial/taulukkona.html)
-  * [Memcpy buffer size timing](http://stackoverflow.com/questions/21038965/why-does-the-speed-of-memcpy-drop-dramatically-every-4kb)
-  * [Calling memcpy from go](https://github.com/jsgilmore/shm/blob/master/memcpy.go)
-  * [Unsafe docs](https://godoc.org/unsafe)
-  * [...and how to use it](https://copyninja.info/blog/workaround-gotypesystems.html)
-  * [Or maybe just plain copy...](https://godoc.org/builtin#copy)
-
-## Backend implementation
-
-Storing each link in the tree in leveldb treats each node as an isolated item.  Since we know some usage patterns (when a parent is hit, very likely one child will be hit), we could try to organize the memory and disk location of the nodes ourselves to make it more efficient.  Or course, this could be a long, slippery slope.
-
-Inspired by the [Array representation](http://www.cse.hut.fi/en/research/SVG/TRAKLA2/tutorials/heap_tutorial/taulukkona.html) link above, we could consider other layouts for the nodes. For example, rather than store them alone, or the entire tree in one big array, the nodes could be placed in groups of 15 based on the parent (parent and 3 generations of children).  Then we have 4 levels before jumping to another location.  Maybe we just store this larger chunk as one leveldb location, or really try to do the mmap ourselves...
-
-In any case, assuming around 100 bytes for one non-leaf node (3 sha hashes, plus prefix, plus other data), 15 nodes would be a little less than 2K, maybe even go one more level to 31 nodes and 3-4KB, where we could take best advantage of the memory/disk page size.
-
-Some links for thought:
-
-  * [Memory mapped files](https://github.com/edsrzf/mmap-go)
diff --git a/vendor/github.com/tendermint/merkleeyes/iavl/README.md b/vendor/github.com/tendermint/merkleeyes/iavl/README.md
deleted file mode 100644
index 835d0cf0..00000000
--- a/vendor/github.com/tendermint/merkleeyes/iavl/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## IAVL+ Tree
-
-A snapshottable (immutable) AVL+ tree for persistent data
-
-**Note** Please make sure you read the [caveat](https://github.com/tendermint/merkleeyes/blob/develop/iavl/iavl_tree.go#L34-L40) on `Copy`. If you have a backing DB and call `Save` to persist the state, all existing copies become potentially invalid and may panic if used. For safe coding, you must throw away all references upon save, and `Copy` again from the new, committed state.
-
-The purpose of this data structure is to provide persistent storage for key-value pairs (say to store account balances) such that a deterministic merkle root hash can be computed.  The tree is balanced using a variant of the [AVL algortihm](http://en.wikipedia.org/wiki/AVL_tree) so all operations are O(log(n)).
-
-Nodes of this tree are immutable and indexed by its hash.  Thus any node serves as an immutable snapshot which lets us stage uncommitted transactions from the mempool cheaply, and we can instantly roll back to the last committed state to process transactions of a newly committed block (which may not be the same set of transactions as those from the mempool).
-
-In an AVL tree, the heights of the two child subtrees of any node differ by at most one.  Whenever this condition is violated upon an update, the tree is rebalanced by creating O(log(n)) new nodes that point to unmodified nodes of the old tree.  In the original AVL algorithm, inner nodes can also hold key-value pairs.  The AVL+ algorithm (note the plus) modifies the AVL algorithm to keep all values on leaf nodes, while only using branch-nodes to store keys.  This simplifies the algorithm while keeping the merkle hash trail short.
-
-In Ethereum, the analog is [Patricia tries](http://en.wikipedia.org/wiki/Radix_tree).  There are tradeoffs.  Keys do not need to be hashed prior to insertion in IAVL+ trees, so this provides faster iteration in the key space which may benefit some applications.  The logic is simpler to implement, requiring only two types of nodes -- inner nodes and leaf nodes.  On the other hand, while IAVL+ trees provide a deterministic merkle root hash, it depends on the order of transactions.  In practice this shouldn't be a problem, since you can efficiently encode the tree structure when serializing the tree contents.
diff --git a/vendor/github.com/tendermint/merkleeyes/iavl/circle.yml b/vendor/github.com/tendermint/merkleeyes/iavl/circle.yml
deleted file mode 100644
index c3f31c58..00000000
--- a/vendor/github.com/tendermint/merkleeyes/iavl/circle.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-machine:
-  environment:
-    GO15VENDOREXPERIMENT: 1
-
-dependencies:
-  pre:
-    - make get_deps
-
-test:
-  override:
-    - make test
diff --git a/vendor/github.com/tendermint/tendermint/consensus/README.md b/vendor/github.com/tendermint/tendermint/consensus/README.md
deleted file mode 100644
index 182e30bf..00000000
--- a/vendor/github.com/tendermint/tendermint/consensus/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# The core consensus algorithm.
-
-* state.go - The state machine as detailed in the whitepaper
-* reactor.go - A reactor that connects the state machine to the gossip network
-
-# Go-routine summary
-
-The reactor runs 2 go-routines for each added peer: gossipDataRoutine and gossipVotesRoutine.
-
-The consensus state runs two persistent go-routines: timeoutRoutine and receiveRoutine.
-Go-routines are also started to trigger timeouts and to avoid blocking when the internalMsgQueue is really backed up.
-
-# Replay/WAL
-
-A write-ahead log is used to record all messages processed by the receiveRoutine,
-which amounts to all inputs to the consensus state machine:
-messages from peers, messages from ourselves, and timeouts.
-They can be played back deterministically at startup or using the replay console. 
diff --git a/vendor/github.com/tendermint/tendermint/p2p/CHANGELOG.md b/vendor/github.com/tendermint/tendermint/p2p/CHANGELOG.md
deleted file mode 100644
index cae2f4c9..00000000
--- a/vendor/github.com/tendermint/tendermint/p2p/CHANGELOG.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# Changelog
-
-## 0.5.0 (April 21, 2017)
-
-BREAKING CHANGES: 
-
-- Remove or unexport methods from FuzzedConnection: Active, Mode, ProbDropRW, ProbDropConn, ProbSleep, MaxDelayMilliseconds, Fuzz
-- switch.AddPeerWithConnection is unexported and replaced by switch.AddPeer
-- switch.DialPeerWithAddress takes a bool, setting the peer as persistent or not
-
-FEATURES:
-
-- Persistent peers: any peer considered a "seed" will be reconnected to when the connection is dropped
-
-
-IMPROVEMENTS:
-
-- Many more tests and comments
-- Refactor configurations for less dependence on go-config. Introduces new structs PeerConfig, MConnConfig, FuzzConnConfig
-- New methods on peer: CloseConn, HandshakeTimeout, IsPersistent, Addr, PubKey
-- NewNetAddress supports a testing mode where the address defaults to 0.0.0.0:0
-
-
-## 0.4.0 (March 6, 2017)
-
-BREAKING CHANGES: 
-
-- DialSeeds now takes an AddrBook and returns an error: `DialSeeds(*AddrBook, []string) error`
-- NewNetAddressString now returns an error: `NewNetAddressString(string) (*NetAddress, error)`
-
-FEATURES:
-
-- `NewNetAddressStrings([]string) ([]*NetAddress, error)`
-- `AddrBook.Save()`
-
-IMPROVEMENTS:
-
-- PexReactor responsible for starting and stopping the AddrBook
-
-BUG FIXES:
-
-- DialSeeds returns an error instead of panicking on bad addresses
-
-## 0.3.5 (January 12, 2017)
-
-FEATURES
-
-- Toggle strict routability in the AddrBook 
-
-BUG FIXES
-
-- Close filtered out connections
-- Fixes for MakeConnectedSwitches and Connect2Switches
-
-## 0.3.4 (August 10, 2016)
-
-FEATURES:
-
-- Optionally filter connections by address or public key
-
-## 0.3.3 (May 12, 2016)
-
-FEATURES:
-
-- FuzzConn
-
-## 0.3.2 (March 12, 2016)
-
-IMPROVEMENTS:
-
-- Memory optimizations
-
-## 0.3.1 ()
-
-FEATURES: 
-
-- Configurable parameters
-
diff --git a/vendor/github.com/tendermint/tendermint/p2p/Dockerfile b/vendor/github.com/tendermint/tendermint/p2p/Dockerfile
deleted file mode 100644
index 6c71b2f8..00000000
--- a/vendor/github.com/tendermint/tendermint/p2p/Dockerfile
+++ /dev/null
@@ -1,13 +0,0 @@
-FROM golang:latest
-
-RUN curl https://glide.sh/get | sh
-
-RUN mkdir -p /go/src/github.com/tendermint/tendermint/p2p
-WORKDIR /go/src/github.com/tendermint/tendermint/p2p
-
-COPY glide.yaml /go/src/github.com/tendermint/tendermint/p2p/
-COPY glide.lock /go/src/github.com/tendermint/tendermint/p2p/
-
-RUN glide install
-
-COPY . /go/src/github.com/tendermint/tendermint/p2p
diff --git a/vendor/github.com/tendermint/tendermint/p2p/README.md b/vendor/github.com/tendermint/tendermint/p2p/README.md
deleted file mode 100644
index d653b2ca..00000000
--- a/vendor/github.com/tendermint/tendermint/p2p/README.md
+++ /dev/null
@@ -1,122 +0,0 @@
-# `tendermint/tendermint/p2p`
-
-[![CircleCI](https://circleci.com/gh/tendermint/tendermint/p2p.svg?style=svg)](https://circleci.com/gh/tendermint/tendermint/p2p)
-
-`tendermint/tendermint/p2p` provides an abstraction around peer-to-peer communication.<br/>
-
-## MConnection
-
-`MConnection` is a multiplex connection:
-
-__multiplex__ *noun* a system or signal involving simultaneous transmission of
-several messages along a single channel of communication.
-
-Each `MConnection` handles message transmission on multiple abstract communication
-`Channel`s.  Each channel has a globally unique byte id.
-The byte id and the relative priorities of each `Channel` are configured upon
-initialization of the connection.
-
-The `MConnection` supports three packet types: Ping, Pong, and Msg.
-
-### Ping and Pong
-
-The ping and pong messages consist of writing a single byte to the connection; 0x1 and 0x2, respectively
-
-When we haven't received any messages on an `MConnection` in a time `pingTimeout`, we send a ping message.
-When a ping is received on the `MConnection`, a pong is sent in response.
-
-If a pong is not received in sufficient time, the peer's score should be decremented (TODO).
-
-### Msg
-
-Messages in channels are chopped into smaller msgPackets for multiplexing.
-
-```
-type msgPacket struct {
-	ChannelID byte
-	EOF       byte // 1 means message ends here.
-	Bytes     []byte
-}
-```
-
-The msgPacket is serialized using go-wire, and prefixed with a 0x3.
-The received `Bytes` of a sequential set of packets are appended together
-until a packet with `EOF=1` is received, at which point the complete serialized message 
-is returned for processing by the corresponding channels `onReceive` function.
-
-### Multiplexing
-
-Messages are sent from a single `sendRoutine`, which loops over a select statement that results in the sending
-of a ping, a pong, or a batch of data messages. The batch of data messages may include messages from multiple channels.
-Message bytes are queued for sending in their respective channel, with each channel holding one unsent message at a time.
-Messages are chosen for a batch one a time from the channel with the lowest ratio of recently sent bytes to channel priority.
-
-## Sending Messages
-
-There are two methods for sending messages:
-```go
-func (m MConnection) Send(chID byte, msg interface{}) bool {}
-func (m MConnection) TrySend(chID byte, msg interface{}) bool {}
-```
-
-`Send(chID, msg)` is a blocking call that waits until `msg` is successfully queued
-for the channel with the given id byte `chID`.  The message `msg` is serialized
-using the `tendermint/wire` submodule's `WriteBinary()` reflection routine.
-
-`TrySend(chID, msg)` is a nonblocking call that returns false if the channel's
-queue is full.
-
-`Send()` and `TrySend()` are also exposed for each `Peer`.
-
-## Peer
-
-Each peer has one `MConnection` instance, and includes other information such as whether the connection
-was outbound, whether the connection should be recreated if it closes, various identity information about the node, 
-and other higher level thread-safe data used by the reactors.
-
-## Switch/Reactor
-
-The `Switch` handles peer connections and exposes an API to receive incoming messages
-on `Reactors`.  Each `Reactor` is responsible for handling incoming messages of one
-or more `Channels`.  So while sending outgoing messages is typically performed on the peer,
-incoming messages are received on the reactor.
-
-```go
-// Declare a MyReactor reactor that handles messages on MyChannelID.
-type MyReactor struct{}
-
-func (reactor MyReactor) GetChannels() []*ChannelDescriptor {
-    return []*ChannelDescriptor{ChannelDescriptor{ID:MyChannelID, Priority: 1}}
-}
-
-func (reactor MyReactor) Receive(chID byte, peer *Peer, msgBytes []byte) {
-    r, n, err := bytes.NewBuffer(msgBytes), new(int64), new(error)
-    msgString := ReadString(r, n, err)
-    fmt.Println(msgString)
-}
-
-// Other Reactor methods omitted for brevity
-...
-
-switch := NewSwitch([]Reactor{MyReactor{}})
-
-...
-
-// Send a random message to all outbound connections
-for _, peer := range switch.Peers().List() {
-    if peer.IsOutbound() {
-        peer.Send(MyChannelID, "Here's a random message")
-    }
-}
-```
-
-### PexReactor/AddrBook
-
-A `PEXReactor` reactor implementation is provided to automate peer discovery.
-
-```go
-book := p2p.NewAddrBook(addrBookFilePath)
-pexReactor := p2p.NewPEXReactor(book)
-...
-switch := NewSwitch([]Reactor{pexReactor, myReactor, ...})
-```
diff --git a/vendor/github.com/tendermint/tendermint/rpc/core/README.md b/vendor/github.com/tendermint/tendermint/rpc/core/README.md
deleted file mode 100644
index 1ed2f849..00000000
--- a/vendor/github.com/tendermint/tendermint/rpc/core/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Tendermint RPC
-
-## Generate markdown for [Slate](https://github.com/tendermint/slate)
-
-We are using [Slate](https://github.com/tendermint/slate) to power our RPC
-documentation. If you are changing a comment, make sure to copy the resulting
-changes to the slate repo and make a PR
-[there](https://github.com/tendermint/slate) as well. For generating markdown
-use:
-
-```shell
-go get github.com/melekes/godoc2md
-
-godoc2md -template rpc/core/doc_template.txt github.com/tendermint/tendermint/rpc/core | grep -v -e "pipe.go" -e "routes.go" -e "dev.go" | sed 's$/src/target$https://github.com/tendermint/tendermint/tree/master/rpc/core$'
-```
diff --git a/vendor/github.com/tendermint/tendermint/rpc/core/doc_template.txt b/vendor/github.com/tendermint/tendermint/rpc/core/doc_template.txt
deleted file mode 100644
index 896d0c27..00000000
--- a/vendor/github.com/tendermint/tendermint/rpc/core/doc_template.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-{{with .PDoc}}
-{{comment_md .Doc}}
-{{example_html $ ""}}
-
-{{range .Funcs}}{{$name_html := html .Name}}## [{{$name_html}}]({{posLink_url $ .Decl}})
-{{comment_md .Doc}}{{end}}
-{{end}}
----
diff --git a/vendor/github.com/tendermint/tendermint/rpc/grpc/compile.sh b/vendor/github.com/tendermint/tendermint/rpc/grpc/compile.sh
deleted file mode 100644
index 2c4629c8..00000000
--- a/vendor/github.com/tendermint/tendermint/rpc/grpc/compile.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /bin/bash
-
-protoc --go_out=plugins=grpc:. -I $GOPATH/src/ -I . types.proto
diff --git a/vendor/github.com/tendermint/tendermint/rpc/grpc/types.proto b/vendor/github.com/tendermint/tendermint/rpc/grpc/types.proto
deleted file mode 100644
index 35462594..00000000
--- a/vendor/github.com/tendermint/tendermint/rpc/grpc/types.proto
+++ /dev/null
@@ -1,36 +0,0 @@
-syntax = "proto3";
-package core_grpc;
-
-import "github.com/tendermint/abci/types/types.proto";
-
-//----------------------------------------
-// Message types
-
-//----------------------------------------
-// Request types
-
-message RequestPing {
-}
-
-message RequestBroadcastTx {
-  bytes tx = 1;
-}
-
-//----------------------------------------
-// Response types
-
-message ResponsePing{
-}
-
-message ResponseBroadcastTx{
-  types.ResponseCheckTx check_tx = 1;
-  types.ResponseDeliverTx deliver_tx = 2;
-}
-
-//----------------------------------------
-// Service Definition
-
-service BroadcastAPI {
-  rpc Ping(RequestPing) returns (ResponsePing) ;
-  rpc BroadcastTx(RequestBroadcastTx) returns (ResponseBroadcastTx) ;
-}
diff --git a/vendor/github.com/tendermint/tmlibs/autofile/README.md b/vendor/github.com/tendermint/tmlibs/autofile/README.md
deleted file mode 100644
index 23799200..00000000
--- a/vendor/github.com/tendermint/tmlibs/autofile/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# go-autofile
diff --git a/vendor/github.com/tendermint/tmlibs/db/README.md b/vendor/github.com/tendermint/tmlibs/db/README.md
deleted file mode 100644
index ca5ab33f..00000000
--- a/vendor/github.com/tendermint/tmlibs/db/README.md
+++ /dev/null
@@ -1 +0,0 @@
-TODO: syndtr/goleveldb should be replaced with actual LevelDB instance
diff --git a/vendor/github.com/tendermint/tmlibs/flowrate/README.md b/vendor/github.com/tendermint/tmlibs/flowrate/README.md
deleted file mode 100644
index db428090..00000000
--- a/vendor/github.com/tendermint/tmlibs/flowrate/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Data Flow Rate Control
-======================
-
-To download and install this package run:
-
-go get github.com/mxk/go-flowrate/flowrate
-
-The documentation is available at:
-
-http://godoc.org/github.com/mxk/go-flowrate/flowrate
diff --git a/vendor/github.com/tendermint/tmlibs/merkle/README.md b/vendor/github.com/tendermint/tmlibs/merkle/README.md
deleted file mode 100644
index c4497836..00000000
--- a/vendor/github.com/tendermint/tmlibs/merkle/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Simple Merkle Tree
-
-For smaller static data structures that don't require immutable snapshots or mutability; 
-for instance the transactions and validation signatures of a block can be hashed using this simple merkle tree logic.
diff --git a/vendor/github.com/tendermint/tmlibs/pubsub/query/Makefile b/vendor/github.com/tendermint/tmlibs/pubsub/query/Makefile
deleted file mode 100644
index ca3ff5b5..00000000
--- a/vendor/github.com/tendermint/tmlibs/pubsub/query/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-gen_query_parser:
-	@go get github.com/pointlander/peg
-	peg -inline -switch query.peg
-
-fuzzy_test:
-	@go get github.com/dvyukov/go-fuzz/go-fuzz
-	@go get github.com/dvyukov/go-fuzz/go-fuzz-build
-	go-fuzz-build github.com/tendermint/tmlibs/pubsub/query/fuzz_test
-	go-fuzz -bin=./fuzz_test-fuzz.zip -workdir=./fuzz_test/output
-
-.PHONY: gen_query_parser fuzzy_test
diff --git a/vendor/github.com/tendermint/tmlibs/pubsub/query/query.peg b/vendor/github.com/tendermint/tmlibs/pubsub/query/query.peg
deleted file mode 100644
index 739892e4..00000000
--- a/vendor/github.com/tendermint/tmlibs/pubsub/query/query.peg
+++ /dev/null
@@ -1,33 +0,0 @@
-package query
-
-type QueryParser Peg {
-}
-
-e <- '\"' condition ( ' '+ and ' '+ condition )* '\"' !.
-
-condition <- tag ' '* (le ' '* (number / time / date)
-                      / ge ' '* (number / time / date)
-                      / l ' '* (number / time / date)
-                      / g ' '* (number / time / date)
-                      / equal ' '* (number / time / date / value)
-                      / contains ' '* value
-                      )
-
-tag <- < (![ \t\n\r\\()"'=><] .)+ >
-value <- < '\'' (!["'] .)* '\''>
-number <- < ('0'
-           / [1-9] digit* ('.' digit*)?) >
-digit <- [0-9]
-time <- "TIME " < year '-' month '-' day 'T' digit digit ':' digit digit ':' digit digit (('-' / '+') digit digit ':' digit digit / 'Z') >
-date <- "DATE " < year '-' month '-' day >
-year <- ('1' / '2') digit digit digit
-month <- ('0' / '1') digit
-day <- ('0' / '1' / '2' / '3') digit
-and <- "AND"
-
-equal <- "="
-contains <- "CONTAINS"
-le <- "<="
-ge <- ">="
-l <- "<"
-g <- ">"
diff --git a/vendor/github.com/tmthrgd/go-hex/.travis.yml b/vendor/github.com/tmthrgd/go-hex/.travis.yml
deleted file mode 100644
index 945559fe..00000000
--- a/vendor/github.com/tmthrgd/go-hex/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: go
-go:
-    - 1.8
-    - tip
-matrix:
-    fast_finish: true
-    allow_failures:
-        - go: tip
diff --git a/vendor/github.com/tmthrgd/go-hex/README.md b/vendor/github.com/tmthrgd/go-hex/README.md
deleted file mode 100644
index 565411fc..00000000
--- a/vendor/github.com/tmthrgd/go-hex/README.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# go-hex
-
-[![GoDoc](https://godoc.org/github.com/tmthrgd/go-hex?status.svg)](https://godoc.org/github.com/tmthrgd/go-hex)
-[![Build Status](https://travis-ci.org/tmthrgd/go-hex.svg?branch=master)](https://travis-ci.org/tmthrgd/go-hex)
-
-An efficient hexadecimal implementation for Golang.
-
-go-hex provides hex encoding and decoding using SSE/AVX instructions on x86-64.
-
-## Download
-
-```
-go get github.com/tmthrgd/go-hex
-```
-
-## Benchmark
-
-go-hex:
-```
-BenchmarkEncode/15-8     	100000000	        17.4 ns/op	 863.43 MB/s
-BenchmarkEncode/32-8     	100000000	        11.9 ns/op	2690.43 MB/s
-BenchmarkEncode/128-8    	100000000	        21.4 ns/op	5982.92 MB/s
-BenchmarkEncode/1k-8     	20000000	        88.5 ns/op	11572.80 MB/s
-BenchmarkEncode/16k-8    	 1000000	      1254 ns/op	13058.10 MB/s
-BenchmarkEncode/128k-8   	  100000	     12965 ns/op	10109.53 MB/s
-BenchmarkEncode/1M-8     	   10000	    119465 ns/op	8777.23 MB/s
-BenchmarkEncode/16M-8    	     500	   3530380 ns/op	4752.24 MB/s
-BenchmarkEncode/128M-8   	      50	  28001913 ns/op	4793.16 MB/s
-BenchmarkDecode/14-8    	100000000	        12.6 ns/op	1110.01 MB/s
-BenchmarkDecode/32-8     	100000000	        12.5 ns/op	2558.10 MB/s
-BenchmarkDecode/128-8    	50000000	        27.2 ns/op	4697.66 MB/s
-BenchmarkDecode/1k-8     	10000000	       168 ns/op	6093.43 MB/s
-BenchmarkDecode/16k-8    	  500000	      2543 ns/op	6442.09 MB/s
-BenchmarkDecode/128k-8   	  100000	     20339 ns/op	6444.24 MB/s
-BenchmarkDecode/1M-8     	   10000	    164313 ns/op	6381.57 MB/s
-BenchmarkDecode/16M-8    	     500	   3099822 ns/op	5412.31 MB/s
-BenchmarkDecode/128M-8   	      50	  24865822 ns/op	5397.68 MB/s
-```
-
-[encoding/hex](https://golang.org/pkg/encoding/hex/):
-```
-BenchmarkRefEncode/15-8  	50000000	        36.1 ns/op	 415.07 MB/s
-BenchmarkRefEncode/32-8  	20000000	        72.9 ns/op	 439.14 MB/s
-BenchmarkRefEncode/128-8 	 5000000	       289 ns/op	 441.54 MB/s
-BenchmarkRefEncode/1k-8  	 1000000	      2268 ns/op	 451.49 MB/s
-BenchmarkRefEncode/16k-8 	   30000	     39110 ns/op	 418.91 MB/s
-BenchmarkRefEncode/128k-8	    5000	    291260 ns/op	 450.02 MB/s
-BenchmarkRefEncode/1M-8  	    1000	   2277578 ns/op	 460.39 MB/s
-BenchmarkRefEncode/16M-8 	      30	  37087543 ns/op	 452.37 MB/s
-BenchmarkRefEncode/128M-8	       5	 293611713 ns/op	 457.13 MB/s
-BenchmarkRefDecode/14-8  	30000000	        53.7 ns/op	 260.49 MB/s
-BenchmarkRefDecode/32-8  	10000000	       128 ns/op	 248.44 MB/s
-BenchmarkRefDecode/128-8 	 3000000	       481 ns/op	 265.95 MB/s
-BenchmarkRefDecode/1k-8  	  300000	      4172 ns/op	 245.43 MB/s
-BenchmarkRefDecode/16k-8 	   10000	    111989 ns/op	 146.30 MB/s
-BenchmarkRefDecode/128k-8	    2000	    909077 ns/op	 144.18 MB/s
-BenchmarkRefDecode/1M-8  	     200	   7275779 ns/op	 144.12 MB/s
-BenchmarkRefDecode/16M-8 	      10	 116574839 ns/op	 143.92 MB/s
-BenchmarkRefDecode/128M-8	       2	 933871637 ns/op	 143.72 MB/s
-```
-
-[encoding/hex](https://golang.org/pkg/encoding/hex/) -> go-hex:
-```
-benchmark                  old ns/op     new ns/op     delta
-BenchmarkEncode/15-8       36.1          17.4          -51.80%
-BenchmarkEncode/32-8       72.9          11.9          -83.68%
-BenchmarkEncode/128-8      289           21.4          -92.60%
-BenchmarkEncode/1k-8       2268          88.5          -96.10%
-BenchmarkEncode/16k-8      39110         1254          -96.79%
-BenchmarkEncode/128k-8     291260        12965         -95.55%
-BenchmarkEncode/1M-8       2277578       119465        -94.75%
-BenchmarkEncode/16M-8      37087543      3530380       -90.48%
-BenchmarkEncode/128M-8     293611713     28001913      -90.46%
-BenchmarkDecode/14-8       53.7          12.6          -76.54%
-BenchmarkDecode/32-8       128           12.5          -90.23%
-BenchmarkDecode/128-8      481           27.2          -94.35%
-BenchmarkDecode/1k-8       4172          168           -95.97%
-BenchmarkDecode/16k-8      111989        2543          -97.73%
-BenchmarkDecode/128k-8     909077        20339         -97.76%
-BenchmarkDecode/1M-8       7275779       164313        -97.74%
-BenchmarkDecode/16M-8      116574839     3099822       -97.34%
-BenchmarkDecode/128M-8     933871637     24865822      -97.34%
-
-benchmark                  old MB/s     new MB/s     speedup
-BenchmarkEncode/15-8       415.07       863.43       2.08x
-BenchmarkEncode/32-8       439.14       2690.43      6.13x
-BenchmarkEncode/128-8      441.54       5982.92      13.55x
-BenchmarkEncode/1k-8       451.49       11572.80     25.63x
-BenchmarkEncode/16k-8      418.91       13058.10     31.17x
-BenchmarkEncode/128k-8     450.02       10109.53     22.46x
-BenchmarkEncode/1M-8       460.39       8777.23      19.06x
-BenchmarkEncode/16M-8      452.37       4752.24      10.51x
-BenchmarkEncode/128M-8     457.13       4793.16      10.49x
-BenchmarkDecode/14-8       260.49       1110.01      4.26x
-BenchmarkDecode/32-8       248.44       2558.10      10.30x
-BenchmarkDecode/128-8      265.95       4697.66      17.66x
-BenchmarkDecode/1k-8       245.43       6093.43      24.83x
-BenchmarkDecode/16k-8      146.30       6442.09      44.03x
-BenchmarkDecode/128k-8     144.18       6444.24      44.70x
-BenchmarkDecode/1M-8       144.12       6381.57      44.28x
-BenchmarkDecode/16M-8      143.92       5412.31      37.61x
-BenchmarkDecode/128M-8     143.72       5397.68      37.56x
-```
-
-## License
-
-Unless otherwise noted, the go-hex source files are distributed under the Modified BSD License
-found in the LICENSE file.
diff --git a/vendor/github.com/tommy351/gin-cors/.gitignore b/vendor/github.com/tommy351/gin-cors/.gitignore
deleted file mode 100644
index bf0824e5..00000000
--- a/vendor/github.com/tommy351/gin-cors/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.log
\ No newline at end of file
diff --git a/vendor/github.com/tommy351/gin-cors/.travis.yml b/vendor/github.com/tommy351/gin-cors/.travis.yml
deleted file mode 100644
index 0ca0e1d5..00000000
--- a/vendor/github.com/tommy351/gin-cors/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: go
-
-go:
-  - 1.3
-  - tip
-
-before_install:
-  - go get github.com/stretchr/testify/assert
-
-script:
-  - go test
\ No newline at end of file
diff --git a/vendor/github.com/tommy351/gin-cors/README.md b/vendor/github.com/tommy351/gin-cors/README.md
deleted file mode 100644
index e70b108f..00000000
--- a/vendor/github.com/tommy351/gin-cors/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# gin-cors
-
-[![Build Status](https://travis-ci.org/tommy351/gin-cors.svg?branch=master)](https://travis-ci.org/tommy351/gin-cors)
-
-CORS middleware for [Gin].
-
-## Installation
-
-``` bash
-$ go get github.com/tommy351/gin-cors
-```
-
-## Usage
-
-``` go
-import (
-    "github.com/gin-gonic/gin"
-    "github.com/tommy351/gin-cors"
-)
-
-func main(){
-    g := gin.New()
-    g.Use(cors.Middleware(cors.Options{}))
-}
-```
-
-[Gin]: http://gin-gonic.github.io/gin/
diff --git a/vendor/github.com/ugorji/go/codec/README.md b/vendor/github.com/ugorji/go/codec/README.md
deleted file mode 100644
index 50d65e55..00000000
--- a/vendor/github.com/ugorji/go/codec/README.md
+++ /dev/null
@@ -1,206 +0,0 @@
-# Codec
-
-High Performance, Feature-Rich Idiomatic Go codec/encoding library for
-binc, msgpack, cbor, json.
-
-Supported Serialization formats are:
-
-  - msgpack: https://github.com/msgpack/msgpack
-  - binc:    http://github.com/ugorji/binc
-  - cbor:    http://cbor.io http://tools.ietf.org/html/rfc7049
-  - json:    http://json.org http://tools.ietf.org/html/rfc7159
-  - simple: 
-
-To install:
-
-    go get github.com/ugorji/go/codec
-
-This package will carefully use 'unsafe' for performance reasons in specific places.
-You can build without unsafe use by passing the safe or appengine tag
-i.e. 'go install -tags=safe ...'. Note that unsafe is only supported for the last 3
-go sdk versions e.g. current go release is go 1.9, so we support unsafe use only from
-go 1.7+ . This is because supporting unsafe requires knowledge of implementation details.
-
-Online documentation: http://godoc.org/github.com/ugorji/go/codec  
-Detailed Usage/How-to Primer: http://ugorji.net/blog/go-codec-primer
-
-The idiomatic Go support is as seen in other encoding packages in
-the standard library (ie json, xml, gob, etc).
-
-Rich Feature Set includes:
-
-  - Simple but extremely powerful and feature-rich API
-  - Support for go1.4 and above, while selectively using newer APIs for later releases
-  - Excellent code coverage ( > 90% )
-  - Very High Performance.
-    Our extensive benchmarks show us outperforming Gob, Json, Bson, etc by 2-4X.
-  - Careful selected use of 'unsafe' for targeted performance gains.
-    100% mode exists where 'unsafe' is not used at all.
-  - Lock-free (sans mutex) concurrency for scaling to 100's of cores
-  - Coerce types where appropriate
-    e.g. decode an int in the stream into a float, decode numbers from formatted strings, etc
-  - Corner Cases: 
-    Overflows, nil maps/slices, nil values in streams are handled correctly
-  - Standard field renaming via tags
-  - Support for omitting empty fields during an encoding
-  - Encoding from any value and decoding into pointer to any value
-    (struct, slice, map, primitives, pointers, interface{}, etc)
-  - Extensions to support efficient encoding/decoding of any named types
-  - Support encoding.(Binary|Text)(M|Unm)arshaler interfaces
-  - Support IsZero() bool to determine if a value is a zero value.
-    Analogous to time.Time.IsZero() bool.
-  - Decoding without a schema (into a interface{}).
-    Includes Options to configure what specific map or slice type to use
-    when decoding an encoded list or map into a nil interface{}
-  - Mapping a non-interface type to an interface, so we can decode appropriately
-    into any interface type with a correctly configured non-interface value.
-  - Encode a struct as an array, and decode struct from an array in the data stream
-  - Option to encode struct keys as numbers (instead of strings)
-    (to support structured streams with fields encoded as numeric codes)
-  - Comprehensive support for anonymous fields
-  - Fast (no-reflection) encoding/decoding of common maps and slices
-  - Code-generation for faster performance.
-  - Support binary (e.g. messagepack, cbor) and text (e.g. json) formats
-  - Support indefinite-length formats to enable true streaming 
-    (for formats which support it e.g. json, cbor)
-  - Support canonical encoding, where a value is ALWAYS encoded as same sequence of bytes.
-    This mostly applies to maps, where iteration order is non-deterministic.
-  - NIL in data stream decoded as zero value
-  - Never silently skip data when decoding.
-    User decides whether to return an error or silently skip data when keys or indexes
-    in the data stream do not map to fields in the struct.
-  - Encode/Decode from/to chan types (for iterative streaming support)
-  - Drop-in replacement for encoding/json. `json:` key in struct tag supported.
-  - Provides a RPC Server and Client Codec for net/rpc communication protocol.
-  - Handle unique idiosyncrasies of codecs e.g. 
-    - For messagepack, configure how ambiguities in handling raw bytes are resolved 
-    - For messagepack, provide rpc server/client codec to support
-      msgpack-rpc protocol defined at:
-      https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md
-
-## Extension Support
-
-Users can register a function to handle the encoding or decoding of
-their custom types.
-
-There are no restrictions on what the custom type can be. Some examples:
-
-    type BisSet   []int
-    type BitSet64 uint64
-    type UUID     string
-    type MyStructWithUnexportedFields struct { a int; b bool; c []int; }
-    type GifImage struct { ... }
-
-As an illustration, MyStructWithUnexportedFields would normally be
-encoded as an empty map because it has no exported fields, while UUID
-would be encoded as a string. However, with extension support, you can
-encode any of these however you like.
-
-## Custom Encoding and Decoding
-
-This package maintains symmetry in the encoding and decoding halfs.
-We determine how to encode or decode by walking this decision tree
-
-  - is type a codec.Selfer?
-  - is there an extension registered for the type?
-  - is format binary, and is type a encoding.BinaryMarshaler and BinaryUnmarshaler?
-  - is format specifically json, and is type a encoding/json.Marshaler and Unmarshaler?
-  - is format text-based, and type an encoding.TextMarshaler?
-  - else we use a pair of functions based on the "kind" of the type e.g. map, slice, int64, etc
-
-This symmetry is important to reduce chances of issues happening because the
-encoding and decoding sides are out of sync e.g. decoded via very specific
-encoding.TextUnmarshaler but encoded via kind-specific generalized mode.
-
-Consequently, if a type only defines one-half of the symmetry
-(e.g. it implements UnmarshalJSON() but not MarshalJSON() ),
-then that type doesn't satisfy the check and we will continue walking down the
-decision tree.
-
-## RPC
-
-RPC Client and Server Codecs are implemented, so the codecs can be used
-with the standard net/rpc package.
-
-## Usage
-
-Typical usage model:
-
-    // create and configure Handle
-    var (
-      bh codec.BincHandle
-      mh codec.MsgpackHandle
-      ch codec.CborHandle
-    )
-
-    mh.MapType = reflect.TypeOf(map[string]interface{}(nil))
-
-    // configure extensions
-    // e.g. for msgpack, define functions and enable Time support for tag 1
-    // mh.SetExt(reflect.TypeOf(time.Time{}), 1, myExt)
-
-    // create and use decoder/encoder
-    var (
-      r io.Reader
-      w io.Writer
-      b []byte
-      h = &bh // or mh to use msgpack
-    )
-
-    dec = codec.NewDecoder(r, h)
-    dec = codec.NewDecoderBytes(b, h)
-    err = dec.Decode(&v)
-
-    enc = codec.NewEncoder(w, h)
-    enc = codec.NewEncoderBytes(&b, h)
-    err = enc.Encode(v)
-
-    //RPC Server
-    go func() {
-        for {
-            conn, err := listener.Accept()
-            rpcCodec := codec.GoRpc.ServerCodec(conn, h)
-            //OR rpcCodec := codec.MsgpackSpecRpc.ServerCodec(conn, h)
-            rpc.ServeCodec(rpcCodec)
-        }
-    }()
-
-    //RPC Communication (client side)
-    conn, err = net.Dial("tcp", "localhost:5555")
-    rpcCodec := codec.GoRpc.ClientCodec(conn, h)
-    //OR rpcCodec := codec.MsgpackSpecRpc.ClientCodec(conn, h)
-    client := rpc.NewClientWithCodec(rpcCodec)
-
-## Running Tests
-
-To run tests, use the following:
-
-    go test
-
-To run the full suite of tests, use the following:
-
-    go test -tags alltests -run Suite
-
-You can run the tag 'safe' to run tests or build in safe mode. e.g.
-
-    go test -tags safe -run Json
-    go test -tags "alltests safe" -run Suite
-
-## Running Benchmarks
-
-Please see http://github.com/ugorji/go-codec-bench .
-
-## Caveats
-
-Struct fields matching the following are ignored during encoding and decoding
-
-  - struct tag value set to -
-  - func, complex numbers, unsafe pointers
-  - unexported and not embedded
-  - unexported and embedded and not struct kind
-  - unexported and embedded pointers (from go1.10)
-
-Every other field in a struct will be encoded/decoded.
-
-Embedded fields are encoded as if they exist in the top-level struct,
-with some caveats. See Encode documentation.
diff --git a/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl b/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl
deleted file mode 100644
index 2023e05d..00000000
--- a/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl
+++ /dev/null
@@ -1,544 +0,0 @@
-// +build !notfastpath
-
-// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
-// Use of this source code is governed by a MIT license found in the LICENSE file.
-
-// Code generated from fast-path.go.tmpl - DO NOT EDIT.
-
-package codec
-
-// Fast path functions try to create a fast path encode or decode implementation
-// for common maps and slices.
-//
-// We define the functions and register then in this single file
-// so as not to pollute the encode.go and decode.go, and create a dependency in there.
-// This file can be omitted without causing a build failure.
-//
-// The advantage of fast paths is:
-//	  - Many calls bypass reflection altogether
-// 
-// Currently support
-//	  - slice of all builtin types,
-//	  - map of all builtin types to string or interface value
-//	  - symmetrical maps of all builtin types (e.g. str-str, uint8-uint8)
-// This should provide adequate "typical" implementations.
-// 
-// Note that fast track decode functions must handle values for which an address cannot be obtained.
-// For example: 
-//	 m2 := map[string]int{}
-//	 p2 := []interface{}{m2}
-//	 // decoding into p2 will bomb if fast track functions do not treat like unaddressable.
-// 
-
-import (
-	"reflect"
-	"sort"
-)
-
-const fastpathEnabled = true
-
-type fastpathT struct {}
-
-var fastpathTV fastpathT
-
-type fastpathE struct {
-	rtid uintptr
-	rt reflect.Type 
-	encfn func(*Encoder, *codecFnInfo, reflect.Value)
-	decfn func(*Decoder, *codecFnInfo, reflect.Value)
-}
-
-type fastpathA [{{ .FastpathLen }}]fastpathE
-
-func (x *fastpathA) index(rtid uintptr) int {
-	// use binary search to grab the index (adapted from sort/search.go)
-	h, i, j := 0, 0, {{ .FastpathLen }} // len(x)
-	for i < j {
-		h = i + (j-i)/2
-		if x[h].rtid < rtid {
-			i = h + 1
-		} else {
-			j = h
-		}
-	}
-	if i < {{ .FastpathLen }} && x[i].rtid == rtid {
-		return i
-	}
-	return -1
-}
-
-type fastpathAslice []fastpathE
-
-func (x fastpathAslice) Len() int { return len(x) }
-func (x fastpathAslice) Less(i, j int) bool { return x[i].rtid < x[j].rtid }
-func (x fastpathAslice) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
-
-var fastpathAV fastpathA
-
-// due to possible initialization loop error, make fastpath in an init()
-func init() {
-	i := 0
-	fn := func(v interface{},
-		fe func(*Encoder, *codecFnInfo, reflect.Value),
-		fd func(*Decoder, *codecFnInfo, reflect.Value)) (f fastpathE) {
-		xrt := reflect.TypeOf(v)
-		xptr := rt2id(xrt)
-		fastpathAV[i] = fastpathE{xptr, xrt, fe, fd}
-		i++
-		return
-	}
-	{{/* do not register []uint8 in fast-path */}}
-	{{range .Values}}{{if not .Primitive}}{{if not .MapKey }}{{if ne .Elem "uint8"}}
-	fn([]{{ .Elem }}(nil), (*Encoder).{{ .MethodNamePfx "fastpathEnc" false }}R, (*Decoder).{{ .MethodNamePfx "fastpathDec" false }}R){{end}}{{end}}{{end}}{{end}}
-	
-	{{range .Values}}{{if not .Primitive}}{{if .MapKey }}
-	fn(map[{{ .MapKey }}]{{ .Elem }}(nil), (*Encoder).{{ .MethodNamePfx "fastpathEnc" false }}R, (*Decoder).{{ .MethodNamePfx "fastpathDec" false }}R){{end}}{{end}}{{end}}
-	
-	sort.Sort(fastpathAslice(fastpathAV[:]))
-}
-
-// -- encode
-
-// -- -- fast path type switch
-func fastpathEncodeTypeSwitch(iv interface{}, e *Encoder) bool {
-	switch v := iv.(type) {
-
-{{range .Values}}{{if not .Primitive}}{{if not .MapKey }}{{if ne .Elem "uint8"}}
-	case []{{ .Elem }}:
-		fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, e)
-	case *[]{{ .Elem }}:
-		fastpathTV.{{ .MethodNamePfx "Enc" false }}V(*v, e){{/*
-*/}}{{end}}{{end}}{{end}}{{end}}
-
-{{range .Values}}{{if not .Primitive}}{{if .MapKey }}
-	case map[{{ .MapKey }}]{{ .Elem }}:
-		fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, e)
-	case *map[{{ .MapKey }}]{{ .Elem }}:
-		fastpathTV.{{ .MethodNamePfx "Enc" false }}V(*v, e){{/*
-*/}}{{end}}{{end}}{{end}}
-
-	default:
-        _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4
-		return false
-	}
-	return true
-}
-
-{{/*
-**** removing this block, as they are never called directly ****
-
-
-
-**** removing this block, as they are never called directly ****
-
-
-
-func fastpathEncodeTypeSwitchSlice(iv interface{}, e *Encoder) bool {
-	switch v := iv.(type) {
-{{range .Values}}{{if not .Primitive}}{{if not .MapKey }}
-	case []{{ .Elem }}:
-		fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, e)
-	case *[]{{ .Elem }}:
-		fastpathTV.{{ .MethodNamePfx "Enc" false }}V(*v, e)
-{{end}}{{end}}{{end}}
-	default:
-        _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4
-		return false
-	}
-	return true
-}
-
-func fastpathEncodeTypeSwitchMap(iv interface{}, e *Encoder) bool {
-	switch v := iv.(type) {
-{{range .Values}}{{if not .Primitive}}{{if .MapKey }}
-	case map[{{ .MapKey }}]{{ .Elem }}:
-		fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, e)
-	case *map[{{ .MapKey }}]{{ .Elem }}:
-		fastpathTV.{{ .MethodNamePfx "Enc" false }}V(*v, e)
-{{end}}{{end}}{{end}}
-	default:
-        _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4
-		return false
-	}
-	return true
-}
-
-
-
-**** removing this block, as they are never called directly ****
-
-
-
-**** removing this block, as they are never called directly ****
-*/}}
-
-// -- -- fast path functions
-{{range .Values}}{{if not .Primitive}}{{if not .MapKey }} 
-func (e *Encoder) {{ .MethodNamePfx "fastpathEnc" false }}R(f *codecFnInfo, rv reflect.Value) {
-	if f.ti.mbs {
-		fastpathTV.{{ .MethodNamePfx "EncAsMap" false }}V(rv2i(rv).([]{{ .Elem }}), e)
-	} else {
-		fastpathTV.{{ .MethodNamePfx "Enc" false }}V(rv2i(rv).([]{{ .Elem }}), e)
-	}
-}
-func (_ fastpathT) {{ .MethodNamePfx "Enc" false }}V(v []{{ .Elem }}, e *Encoder) {
-	if v == nil { e.e.EncodeNil(); return }
-	ee, esep := e.e, e.hh.hasElemSeparators()
-	ee.WriteArrayStart(len(v))
-	if esep {
-		for _, v2 := range v {
-			ee.WriteArrayElem()
-			{{ encmd .Elem "v2"}}
-		}
-	} else {
-		for _, v2 := range v {
-			{{ encmd .Elem "v2"}}
-		}
-	} {{/*
-	for _, v2 := range v {
-		if esep { ee.WriteArrayElem() }
-		{{ encmd .Elem "v2"}}
-	} */}}
-	ee.WriteArrayEnd()
-}
-func (_ fastpathT) {{ .MethodNamePfx "EncAsMap" false }}V(v []{{ .Elem }}, e *Encoder) {
-	ee, esep := e.e, e.hh.hasElemSeparators()
-	if len(v)%2 == 1 {
-		e.errorf("mapBySlice requires even slice length, but got %v", len(v))
-		return
-	}
-	ee.WriteMapStart(len(v) / 2)
-	if esep {
-		for j, v2 := range v {
-			if j%2 == 0 {
-				ee.WriteMapElemKey()
-			} else {
-				ee.WriteMapElemValue()
-			}
-			{{ encmd .Elem "v2"}}
-		}
-	} else {
-		for _, v2 := range v {
-			{{ encmd .Elem "v2"}}
-		}
-	} {{/*
-	for j, v2 := range v {
-		if esep {
-			if j%2 == 0 {
-				ee.WriteMapElemKey()
-			} else {
-				ee.WriteMapElemValue()
-			}
-		}
-		{{ encmd .Elem "v2"}}
-	} */}}
-	ee.WriteMapEnd()
-}
-{{end}}{{end}}{{end}}
-
-{{range .Values}}{{if not .Primitive}}{{if .MapKey }}
-func (e *Encoder) {{ .MethodNamePfx "fastpathEnc" false }}R(f *codecFnInfo, rv reflect.Value) {
-	fastpathTV.{{ .MethodNamePfx "Enc" false }}V(rv2i(rv).(map[{{ .MapKey }}]{{ .Elem }}), e)
-}
-func (_ fastpathT) {{ .MethodNamePfx "Enc" false }}V(v map[{{ .MapKey }}]{{ .Elem }}, e *Encoder) {
-	if v == nil { e.e.EncodeNil(); return }
-	ee, esep := e.e, e.hh.hasElemSeparators() 
-	ee.WriteMapStart(len(v))
-	if e.h.Canonical {
-		{{if eq .MapKey "interface{}"}}{{/* out of band 
-		*/}}var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
-		e2 := NewEncoderBytes(&mksv, e.hh)
-		v2 := make([]bytesI, len(v))
-		var i, l int
-		var vp *bytesI {{/* put loop variables outside. seems currently needed for better perf */}}
-		for k2, _ := range v {
-			l = len(mksv)
-			e2.MustEncode(k2)
-			vp = &v2[i]
-			vp.v = mksv[l:]
-			vp.i = k2 
-			i++
-		}
-		sort.Sort(bytesISlice(v2))
-		if esep {
-			for j := range v2 {
-				ee.WriteMapElemKey()
-				e.asis(v2[j].v)
-				ee.WriteMapElemValue()
-				e.encode(v[v2[j].i])
-			}
-		} else {
-			for j := range v2 {
-				e.asis(v2[j].v)
-				e.encode(v[v2[j].i])
-			}
-		} {{/*
-		for j := range v2 {
-			if esep { ee.WriteMapElemKey() }
-			e.asis(v2[j].v)
-			if esep { ee.WriteMapElemValue() }
-			e.encode(v[v2[j].i])
-		} */}} {{else}}{{ $x := sorttype .MapKey true}}v2 := make([]{{ $x }}, len(v))
-		var i int 
-		for k, _ := range v {
-			v2[i] = {{ $x }}(k)
-			i++
-		}
-		sort.Sort({{ sorttype .MapKey false}}(v2))
-		if esep {
-			for _, k2 := range v2 {
-				ee.WriteMapElemKey()
-				{{if eq .MapKey "string"}}ee.EncodeString(cUTF8, k2){{else}}{{ $y := printf "%s(k2)" .MapKey }}{{ encmd .MapKey $y }}{{end}}
-				ee.WriteMapElemValue()
-				{{ $y := printf "v[%s(k2)]" .MapKey }}{{ encmd .Elem $y }}
-			} 
-		} else {
-			for _, k2 := range v2 {
-				{{if eq .MapKey "string"}}ee.EncodeString(cUTF8, k2){{else}}{{ $y := printf "%s(k2)" .MapKey }}{{ encmd .MapKey $y }}{{end}}
-				{{ $y := printf "v[%s(k2)]" .MapKey }}{{ encmd .Elem $y }}
-			} 
-		} {{/*
-		for _, k2 := range v2 {
-			if esep { ee.WriteMapElemKey() }
-			{{if eq .MapKey "string"}}ee.EncodeString(cUTF8, k2){{else}}{{ $y := printf "%s(k2)" .MapKey }}{{ encmd .MapKey $y }}{{end}}
-			if esep { ee.WriteMapElemValue() }
-			{{ $y := printf "v[%s(k2)]" .MapKey }}{{ encmd .Elem $y }}
-		} */}} {{end}}
-	} else {
-		if esep {
-			for k2, v2 := range v {
-				ee.WriteMapElemKey()
-				{{if eq .MapKey "string"}}ee.EncodeString(cUTF8, k2){{else}}{{ encmd .MapKey "k2"}}{{end}}
-				ee.WriteMapElemValue()
-				{{ encmd .Elem "v2"}}
-			}
-		} else {
-			for k2, v2 := range v {
-				{{if eq .MapKey "string"}}ee.EncodeString(cUTF8, k2){{else}}{{ encmd .MapKey "k2"}}{{end}}
-				{{ encmd .Elem "v2"}}
-			}
-		} {{/*
-		for k2, v2 := range v {
-			if esep { ee.WriteMapElemKey() }
-			{{if eq .MapKey "string"}}ee.EncodeString(cUTF8, k2){{else}}{{ encmd .MapKey "k2"}}{{end}}
-			if esep { ee.WriteMapElemValue() }
-			{{ encmd .Elem "v2"}}
-		} */}}
-	}
-	ee.WriteMapEnd()
-}
-{{end}}{{end}}{{end}}
-
-// -- decode
-
-// -- -- fast path type switch
-func fastpathDecodeTypeSwitch(iv interface{}, d *Decoder) bool {
-     var changed bool
-	switch v := iv.(type) {
-{{range .Values}}{{if not .Primitive}}{{if not .MapKey }}{{if ne .Elem "uint8"}}
-	case []{{ .Elem }}:
-        var v2 []{{ .Elem }}
-		v2, changed = fastpathTV.{{ .MethodNamePfx "Dec" false }}V(v, false, d)
-        if changed && len(v) > 0 && len(v2) > 0 && !(len(v2) == len(v) && &v2[0] == &v[0]) {
-			copy(v, v2)
-		}
-	case *[]{{ .Elem }}:
-        var v2 []{{ .Elem }}
-		v2, changed = fastpathTV.{{ .MethodNamePfx "Dec" false }}V(*v, true, d)
-        if changed {
-			*v = v2 
-		}{{/*
-*/}}{{end}}{{end}}{{end}}{{end}}
-{{range .Values}}{{if not .Primitive}}{{if .MapKey }}{{/*
-// maps only change if nil, and in that case, there's no point copying
-*/}}
-	case map[{{ .MapKey }}]{{ .Elem }}:
-		fastpathTV.{{ .MethodNamePfx "Dec" false }}V(v, false, d)
-	case *map[{{ .MapKey }}]{{ .Elem }}:
-         var v2 map[{{ .MapKey }}]{{ .Elem }}
-		v2, changed = fastpathTV.{{ .MethodNamePfx "Dec" false }}V(*v, true, d)
-        if changed {
-			*v = v2 
-		}{{/*
-*/}}{{end}}{{end}}{{end}}
-	default:
-        _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4
-		return false
-	}
-	return true
-}
-
-func fastpathDecodeSetZeroTypeSwitch(iv interface{}) bool {
-	switch v := iv.(type) {
-{{range .Values}}{{if not .Primitive}}{{if not .MapKey }}
-	case *[]{{ .Elem }}: 
-		*v = nil {{/*
-*/}}{{end}}{{end}}{{end}}
-{{range .Values}}{{if not .Primitive}}{{if .MapKey }}
-	case *map[{{ .MapKey }}]{{ .Elem }}: 
-		*v = nil {{/*
-*/}}{{end}}{{end}}{{end}}
-	default:
-        _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4
-		return false
-	}
-	return true
-}
-
-// -- -- fast path functions
-{{range .Values}}{{if not .Primitive}}{{if not .MapKey }}
-{{/*
-Slices can change if they 
-- did not come from an array
-- are addressable (from a ptr)
-- are settable (e.g. contained in an interface{})
-*/}}
-func (d *Decoder) {{ .MethodNamePfx "fastpathDec" false }}R(f *codecFnInfo, rv reflect.Value) {
-	if array := f.seq == seqTypeArray; !array && rv.Kind() == reflect.Ptr {
-		vp := rv2i(rv).(*[]{{ .Elem }})
-		v, changed := fastpathTV.{{ .MethodNamePfx "Dec" false }}V(*vp, !array, d)
-        if changed { *vp = v }
-	} else {
-		v := rv2i(rv).([]{{ .Elem }})
-        v2, changed := fastpathTV.{{ .MethodNamePfx "Dec" false }}V(v, !array, d)
-        if changed && len(v) > 0 && len(v2) > 0 && !(len(v2) == len(v) && &v2[0] == &v[0]) {
-           copy(v, v2)
-        }
-	}
-}
-func (f fastpathT) {{ .MethodNamePfx "Dec" false }}X(vp *[]{{ .Elem }}, d *Decoder) {
-	v, changed := f.{{ .MethodNamePfx "Dec" false }}V(*vp, true, d)
-    if changed { *vp = v }
-}
-func (_ fastpathT) {{ .MethodNamePfx "Dec" false }}V(v []{{ .Elem }}, canChange bool, d *Decoder) (_ []{{ .Elem }}, changed bool) {
-	dd := d.d{{/*
-	    // if dd.isContainerType(valueTypeNil) { dd.TryDecodeAsNil()
-    */}}
-	slh, containerLenS := d.decSliceHelperStart()
-	if containerLenS == 0 {
-		if canChange {
-			if v == nil { v = []{{ .Elem }}{} } else if len(v) != 0 { v = v[:0] }
-			changed = true
-		}
-		slh.End()
-		return v, changed
-	}
-	hasLen := containerLenS > 0
-	var xlen int 
-	if hasLen && canChange {
-		if containerLenS > cap(v) {
-			xlen = decInferLen(containerLenS, d.h.MaxInitLen, {{ .Size }})
-			if xlen <= cap(v) {
-				v = v[:xlen]
-			} else {
-				v = make([]{{ .Elem }}, xlen)
-			}
-			changed = true 
-		} else if containerLenS != len(v) {
-			v = v[:containerLenS]
-			changed = true
-		}
-	}
-	j := 0
-	for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
-		if j == 0 && len(v) == 0 && canChange {
-			if hasLen {
-				xlen = decInferLen(containerLenS, d.h.MaxInitLen, {{ .Size }})
-			} else {
-				xlen = 8
-			}
-			v = make([]{{ .Elem }}, xlen)
-			changed = true 
-		}
-		// if indefinite, etc, then expand the slice if necessary
-		var decodeIntoBlank bool
-		if j >= len(v) {
-			if canChange {
-				v = append(v, {{ zerocmd .Elem }})
-				changed = true
-			} else {
-				d.arrayCannotExpand(len(v), j+1)
-				decodeIntoBlank = true
-			}
-		} 
-		slh.ElemContainerState(j)
-		if decodeIntoBlank {
-			d.swallow()
-		} else if dd.TryDecodeAsNil() {
-			v[j] = {{ zerocmd .Elem }}
-		} else {
-			{{ if eq .Elem "interface{}" }}d.decode(&v[j]){{ else }}v[j] = {{ decmd .Elem }}{{ end }}
-		}
-	}
-	if canChange {
-		if j < len(v) {
-			v = v[:j]
-			changed = true
-		} else if j == 0 && v == nil {
-			v = make([]{{ .Elem }}, 0)
-			changed = true
-		}
-	}
-	slh.End()
-	return v, changed 
-}
-{{end}}{{end}}{{end}}
-
-{{range .Values}}{{if not .Primitive}}{{if .MapKey }}
-{{/*
-Maps can change if they are
-- addressable (from a ptr)
-- settable (e.g. contained in an interface{})
-*/}}
-func (d *Decoder) {{ .MethodNamePfx "fastpathDec" false }}R(f *codecFnInfo, rv reflect.Value) {
-	if rv.Kind() == reflect.Ptr {
-		vp := rv2i(rv).(*map[{{ .MapKey }}]{{ .Elem }})
-		v, changed := fastpathTV.{{ .MethodNamePfx "Dec" false }}V(*vp, true, d);
-		if changed { *vp = v }
-	} else {
-	    fastpathTV.{{ .MethodNamePfx "Dec" false }}V(rv2i(rv).(map[{{ .MapKey }}]{{ .Elem }}), false, d)
-    }
-}
-func (f fastpathT) {{ .MethodNamePfx "Dec" false }}X(vp *map[{{ .MapKey }}]{{ .Elem }}, d *Decoder) {
-	v, changed := f.{{ .MethodNamePfx "Dec" false }}V(*vp, true, d)
-	if changed { *vp = v }
-}
-func (_ fastpathT) {{ .MethodNamePfx "Dec" false }}V(v map[{{ .MapKey }}]{{ .Elem }}, canChange bool, 
-	d *Decoder) (_ map[{{ .MapKey }}]{{ .Elem }}, changed bool) {
-	dd, esep := d.d, d.hh.hasElemSeparators(){{/*
-	    // if dd.isContainerType(valueTypeNil) {dd.TryDecodeAsNil()
-    */}}
-	containerLen := dd.ReadMapStart()
-	if canChange && v == nil {
-		xlen := decInferLen(containerLen, d.h.MaxInitLen, {{ .Size }})
-		v = make(map[{{ .MapKey }}]{{ .Elem }}, xlen)
-		changed = true
-	}
-	if containerLen == 0 {
-		dd.ReadMapEnd()
-		return v, changed
-	}
-	{{ if eq .Elem "interface{}" }}mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
-    {{end}}var mk {{ .MapKey }}
-	var mv {{ .Elem }}
-	hasLen := containerLen > 0
-	for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ {
-		if esep { dd.ReadMapElemKey() }
-		{{ if eq .MapKey "interface{}" }}mk = nil 
-		d.decode(&mk)
-		if bv, bok := mk.([]byte); bok {
-			mk = d.string(bv) {{/* // maps cannot have []byte as key. switch to string. */}}
-		}{{ else }}mk = {{ decmd .MapKey }}{{ end }}
-		if esep { dd.ReadMapElemValue() }
-		if dd.TryDecodeAsNil() {
-			if v == nil {} else if d.h.DeleteOnNilMapValue { delete(v, mk) } else { v[mk] = {{ zerocmd .Elem }} }
-			continue 
-		}
-		{{ if eq .Elem "interface{}" }}if mapGet { mv = v[mk] } else { mv = nil }
-		d.decode(&mv){{ else }}mv = {{ decmd .Elem }}{{ end }}
-		if v != nil { v[mk] = mv }
-	}
-	dd.ReadMapEnd()
-	return v, changed
-}
-{{end}}{{end}}{{end}}
diff --git a/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl
deleted file mode 100644
index fbe802ed..00000000
--- a/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl
+++ /dev/null
@@ -1,77 +0,0 @@
-{{var "v"}} := {{if not isArray}}*{{end}}{{ .Varname }}
-{{var "h"}}, {{var "l"}} := z.DecSliceHelperStart() {{/* // helper, containerLenS */}}{{if not isArray}}
-var {{var "c"}} bool {{/* // changed */}}
-_ = {{var "c"}}{{end}}
-if {{var "l"}} == 0 {
-	{{if isSlice }}if {{var "v"}} == nil {
-		{{var "v"}} = []{{ .Typ }}{}
-		{{var "c"}} = true
-	} else if len({{var "v"}}) != 0 {
-		{{var "v"}} = {{var "v"}}[:0]
-		{{var "c"}} = true
-	} {{end}} {{if isChan }}if {{var "v"}} == nil {
-		{{var "v"}} = make({{ .CTyp }}, 0)
-		{{var "c"}} = true
-	} {{end}}
-} else {
-	{{var "hl"}} := {{var "l"}} > 0
-	var {{var "rl"}} int; _ =  {{var "rl"}}
-	{{if isSlice }} if {{var "hl"}} {
-	if {{var "l"}} > cap({{var "v"}}) {
-		{{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }})
-		if {{var "rl"}} <= cap({{var "v"}}) {
-			{{var "v"}} = {{var "v"}}[:{{var "rl"}}]
-		} else {
-			{{var "v"}} = make([]{{ .Typ }}, {{var "rl"}})
-		}
-		{{var "c"}} = true
-	} else if {{var "l"}} != len({{var "v"}}) {
-		{{var "v"}} = {{var "v"}}[:{{var "l"}}]
-		{{var "c"}} = true
-	}
-	} {{end}}
-	var {{var "j"}} int 
-    // var {{var "dn"}} bool 
-	for ; ({{var "hl"}} && {{var "j"}} < {{var "l"}}) || !({{var "hl"}} || r.CheckBreak()); {{var "j"}}++ {
-		{{if not isArray}} if {{var "j"}} == 0 && len({{var "v"}}) == 0 {
-			if {{var "hl"}} {
-				{{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }})
-			} else {
-				{{var "rl"}} = 8
-			}
-			{{var "v"}} = make([]{{ .Typ }}, {{var "rl"}})
-			{{var "c"}} = true 
-		}{{end}}
-		{{var "h"}}.ElemContainerState({{var "j"}})
-        {{/* {{var "dn"}} = r.TryDecodeAsNil() */}}
-        {{if isChan}}{{ $x := printf "%[1]vv%[2]v" .TempVar .Rand }}var {{var $x}} {{ .Typ }}
-		{{ decLineVar $x }}
-		{{var "v"}} <- {{ $x }}
-        {{else}}
-		// if indefinite, etc, then expand the slice if necessary
-		var {{var "db"}} bool
-		if {{var "j"}} >= len({{var "v"}}) {
-			{{if isSlice }} {{var "v"}} = append({{var "v"}}, {{ zero }}); {{var "c"}} = true
-			{{else}} z.DecArrayCannotExpand(len(v), {{var "j"}}+1); {{var "db"}} = true
-			{{end}}
-		}
-		if {{var "db"}} {
-			z.DecSwallow()
-		} else {
-			{{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }}
-		}
-        {{end}}
-	}
-	{{if isSlice}} if {{var "j"}} < len({{var "v"}}) {
-		{{var "v"}} = {{var "v"}}[:{{var "j"}}]
-		{{var "c"}} = true
-	} else if {{var "j"}} == 0 && {{var "v"}} == nil {
-		{{var "v"}} = make([]{{ .Typ }}, 0)
-		{{var "c"}} = true
-	} {{end}}
-}
-{{var "h"}}.End()
-{{if not isArray }}if {{var "c"}} { 
-	*{{ .Varname }} = {{var "v"}}
-}{{end}}
-
diff --git a/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl
deleted file mode 100644
index 8323b549..00000000
--- a/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl
+++ /dev/null
@@ -1,42 +0,0 @@
-{{var "v"}} := *{{ .Varname }}
-{{var "l"}} := r.ReadMapStart()
-{{var "bh"}} := z.DecBasicHandle()
-if {{var "v"}} == nil {
-	{{var "rl"}} := z.DecInferLen({{var "l"}}, {{var "bh"}}.MaxInitLen, {{ .Size }})
-	{{var "v"}} = make(map[{{ .KTyp }}]{{ .Typ }}, {{var "rl"}})
-	*{{ .Varname }} = {{var "v"}}
-}
-var {{var "mk"}} {{ .KTyp }}
-var {{var "mv"}} {{ .Typ }}
-var {{var "mg"}}, {{var "mdn"}} {{if decElemKindPtr}}, {{var "ms"}}, {{var "mok"}}{{end}} bool
-if {{var "bh"}}.MapValueReset {
-	{{if decElemKindPtr}}{{var "mg"}} = true
-	{{else if decElemKindIntf}}if !{{var "bh"}}.InterfaceReset { {{var "mg"}} = true }
-	{{else if not decElemKindImmutable}}{{var "mg"}} = true
-	{{end}} }
-if {{var "l"}} != 0 {
-{{var "hl"}} := {{var "l"}} > 0 
-	for {{var "j"}} := 0; ({{var "hl"}} && {{var "j"}} < {{var "l"}}) || !({{var "hl"}} || r.CheckBreak()); {{var "j"}}++ {
-	r.ReadMapElemKey() {{/* z.DecSendContainerState(codecSelfer_containerMapKey{{ .Sfx }}) */}}
-	{{ $x := printf "%vmk%v" .TempVar .Rand }}{{ decLineVarK $x }}
-{{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */}}if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} {
-		{{var "mk"}} = string({{var "bv"}})
-	}{{ end }}{{if decElemKindPtr}}
-	{{var "ms"}} = true{{end}}
-	if {{var "mg"}} {
-		{{if decElemKindPtr}}{{var "mv"}}, {{var "mok"}} = {{var "v"}}[{{var "mk"}}] 
-		if {{var "mok"}} {
-			{{var "ms"}} = false
-		} {{else}}{{var "mv"}} = {{var "v"}}[{{var "mk"}}] {{end}}
-	} {{if not decElemKindImmutable}}else { {{var "mv"}} = {{decElemZero}} }{{end}}
-	r.ReadMapElemValue() {{/* z.DecSendContainerState(codecSelfer_containerMapValue{{ .Sfx }}) */}}
-	{{var "mdn"}} = false
-	{{ $x := printf "%vmv%v" .TempVar .Rand }}{{ $y := printf "%vmdn%v" .TempVar .Rand }}{{ decLineVar $x $y }}
-	if {{var "mdn"}} {
-		if {{ var "bh" }}.DeleteOnNilMapValue { delete({{var "v"}}, {{var "mk"}}) } else { {{var "v"}}[{{var "mk"}}] = {{decElemZero}} }
-	} else if {{if decElemKindPtr}} {{var "ms"}} && {{end}} {{var "v"}} != nil {
-		{{var "v"}}[{{var "mk"}}] = {{var "mv"}}
-	}
-}
-} // else len==0: TODO: Should we clear map entries?
-r.ReadMapEnd() {{/* z.DecSendContainerState(codecSelfer_containerMapEnd{{ .Sfx }}) */}}
diff --git a/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl
deleted file mode 100644
index 6aeb8565..00000000
--- a/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl
+++ /dev/null
@@ -1,302 +0,0 @@
-/* // +build ignore */
-
-// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
-// Use of this source code is governed by a MIT license found in the LICENSE file.
-
-// Code generated from gen-helper.go.tmpl - DO NOT EDIT.
-
-package codec
-
-import (
-	"encoding"
-	"reflect"
-)
-
-// GenVersion is the current version of codecgen.
-const GenVersion = {{ .Version }} 
-
-// This file is used to generate helper code for codecgen. 
-// The values here i.e. genHelper(En|De)coder are not to be used directly by 
-// library users. They WILL change continuously and without notice.
-//
-// To help enforce this, we create an unexported type with exported members.
-// The only way to get the type is via the one exported type that we control (somewhat).
-//
-// When static codecs are created for types, they will use this value
-// to perform encoding or decoding of primitives or known slice or map types.
-
-// GenHelperEncoder is exported so that it can be used externally by codecgen.
-//
-// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE.
-func GenHelperEncoder(e *Encoder) (ge genHelperEncoder, ee genHelperEncDriver) {
-	ge = genHelperEncoder{e: e}
-	ee = genHelperEncDriver{encDriver: e.e}
-	return 
-}
-
-// GenHelperDecoder is exported so that it can be used externally by codecgen.
-//
-// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE.
-func GenHelperDecoder(d *Decoder) (gd genHelperDecoder, dd genHelperDecDriver) {
-	gd = genHelperDecoder{d: d}
-	dd = genHelperDecDriver{decDriver: d.d}
-	return
-}
-
-type genHelperEncDriver struct {
-	encDriver
-}
-
-func (x genHelperEncDriver) EncodeBuiltin(rt uintptr, v interface{}) {}
-func (x genHelperEncDriver) EncStructFieldKey(keyType valueType, s string) {
-	encStructFieldKey(x.encDriver, keyType, s)
-}
-func (x genHelperEncDriver) EncodeSymbol(s string) {
-	x.encDriver.EncodeString(cUTF8, s)
-}
-
-type genHelperDecDriver struct {
-	decDriver
-	C checkOverflow
-}
-
-func (x genHelperDecDriver) DecodeBuiltin(rt uintptr, v interface{}) {}
-func (x genHelperDecDriver) DecStructFieldKey(keyType valueType, buf *[decScratchByteArrayLen]byte) []byte {
-	return decStructFieldKey(x.decDriver, keyType, buf)
-}
-func (x genHelperDecDriver) DecodeInt(bitsize uint8) (i int64) {
-	return x.C.IntV(x.decDriver.DecodeInt64(), bitsize)
-}
-func (x genHelperDecDriver) DecodeUint(bitsize uint8) (ui uint64) {
-	return x.C.UintV(x.decDriver.DecodeUint64(), bitsize)
-}
-func (x genHelperDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) {
-	f = x.DecodeFloat64()
-	if chkOverflow32 && chkOvf.Float32(f) {
-		panicv.errorf("float32 overflow: %v", f)
-	}
-	return
-}
-func (x genHelperDecDriver) DecodeFloat32As64() (f float64) {
-	f = x.DecodeFloat64()
-	if chkOvf.Float32(f) {
-		panicv.errorf("float32 overflow: %v", f)
-	}
-	return
-}
-
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-type genHelperEncoder struct {
-	M must
-	e *Encoder
-	F fastpathT 
-}
-
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-type genHelperDecoder struct {
-	C checkOverflow
-	d *Decoder
-	F fastpathT 
-}
-
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) EncBasicHandle() *BasicHandle {
-	return f.e.h
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) EncBinary() bool {
-	return f.e.be // f.e.hh.isBinaryEncoding()
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) IsJSONHandle() bool {
-	return f.e.js
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) EncFallback(iv interface{}) {
-	// println(">>>>>>>>> EncFallback")
-	// f.e.encodeI(iv, false, false)
-	f.e.encodeValue(reflect.ValueOf(iv), nil, false)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) EncTextMarshal(iv encoding.TextMarshaler) {
-	bs, fnerr := iv.MarshalText()
-	f.e.marshal(bs, fnerr, false, cUTF8)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) EncJSONMarshal(iv jsonMarshaler) {
-	bs, fnerr := iv.MarshalJSON()
-	f.e.marshal(bs, fnerr, true, cUTF8)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) EncBinaryMarshal(iv encoding.BinaryMarshaler) {
-	bs, fnerr := iv.MarshalBinary()
-	f.e.marshal(bs, fnerr, false, cRAW)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) EncRaw(iv Raw) { f.e.rawBytes(iv) }
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-//
-// Deprecated: builtin no longer supported - so we make this method a no-op, 
-// but leave in-place so that old generated files continue to work without regeneration.
-func (f genHelperEncoder) TimeRtidIfBinc() (v uintptr) { return }
-// func (f genHelperEncoder) TimeRtidIfBinc() uintptr {
-// 	if _, ok := f.e.hh.(*BincHandle); ok {
-// 		return timeTypId
-// 	}
-// }
-
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) I2Rtid(v interface{}) uintptr {
-	return i2rtid(v)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) Extension(rtid uintptr) (xfn *extTypeTagFn) {
-	return f.e.h.getExt(rtid)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperEncoder) EncExtension(v interface{}, xfFn *extTypeTagFn) {
-	f.e.e.EncodeExt(v, xfFn.tag, xfFn.ext, f.e)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-//
-// Deprecated: No longer used,
-// but leave in-place so that old generated files continue to work without regeneration.
-func (f genHelperEncoder) HasExtensions() bool {
-	return len(f.e.h.extHandle) != 0
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-//
-// Deprecated: No longer used,
-// but leave in-place so that old generated files continue to work without regeneration.
-func (f genHelperEncoder) EncExt(v interface{}) (r bool) {
-	if xfFn := f.e.h.getExt(i2rtid(v)); xfFn != nil {
-		f.e.e.EncodeExt(v, xfFn.tag, xfFn.ext, f.e)
-		return true
-	}
-	return false 
-}
-
-// ---------------- DECODER FOLLOWS -----------------
-
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecBasicHandle() *BasicHandle {
-	return f.d.h
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecBinary() bool {
-     return f.d.be // f.d.hh.isBinaryEncoding()
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecSwallow() { f.d.swallow() }
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecScratchBuffer() []byte {
-	return f.d.b[:]
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecScratchArrayBuffer() *[decScratchByteArrayLen]byte {
-	return &f.d.b
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecFallback(iv interface{}, chkPtr bool) {
-	// println(">>>>>>>>> DecFallback")
-	rv := reflect.ValueOf(iv)
-	if chkPtr {
-		rv = f.d.ensureDecodeable(rv)
-	}
-	f.d.decodeValue(rv, nil, false)
-	// f.d.decodeValueFallback(rv)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecSliceHelperStart() (decSliceHelper, int) {
-	return f.d.decSliceHelperStart()
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecStructFieldNotFound(index int, name string) {
-	f.d.structFieldNotFound(index, name)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecArrayCannotExpand(sliceLen, streamLen int) {
-	f.d.arrayCannotExpand(sliceLen, streamLen)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecTextUnmarshal(tm encoding.TextUnmarshaler) {
-	fnerr := tm.UnmarshalText(f.d.d.DecodeStringAsBytes())
-	if fnerr != nil {
-		panic(fnerr)
-	}
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) {
-	// bs := f.dd.DecodeStringAsBytes()
-	// grab the bytes to be read, as UnmarshalJSON needs the full JSON so as to unmarshal it itself.
-	fnerr := tm.UnmarshalJSON(f.d.nextValueBytes())
-	if fnerr != nil {
-		panic(fnerr)
-	}
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecBinaryUnmarshal(bm encoding.BinaryUnmarshaler) {
-	fnerr := bm.UnmarshalBinary(f.d.d.DecodeBytes(nil, true))
-	if fnerr != nil {
-		panic(fnerr)
-	}
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecRaw() []byte {	return f.d.rawBytes() }
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-//
-// Deprecated: builtin no longer supported - so we make this method a no-op, 
-// but leave in-place so that old generated files continue to work without regeneration.
-func (f genHelperDecoder) TimeRtidIfBinc() (v uintptr) { return }
-// func (f genHelperDecoder) TimeRtidIfBinc() uintptr {
-// 	// Note: builtin is no longer supported - so make this a no-op
-// 	if _, ok := f.d.hh.(*BincHandle); ok {
-// 		return timeTypId
-// 	}
-// 	return 0
-// }
-
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) IsJSONHandle() bool {
-	return f.d.js 
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) I2Rtid(v interface{}) uintptr {
-	return i2rtid(v)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) Extension(rtid uintptr) (xfn *extTypeTagFn) {
-	return f.d.h.getExt(rtid)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecExtension(v interface{}, xfFn *extTypeTagFn) {
-	f.d.d.DecodeExt(v, xfFn.tag, xfFn.ext)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-//
-// Deprecated: No longer used,
-// but leave in-place so that old generated files continue to work without regeneration.
-func (f genHelperDecoder) HasExtensions() bool {
-	return len(f.d.h.extHandle) != 0
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-//
-// Deprecated: No longer used,
-// but leave in-place so that old generated files continue to work without regeneration.
-func (f genHelperDecoder) DecExt(v interface{}) (r bool) {
-	if xfFn := f.d.h.getExt(i2rtid(v)); xfFn != nil {
-		f.d.d.DecodeExt(v, xfFn.tag, xfFn.ext)
-		return true
-	}
-	return false 
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int) {
-	return decInferLen(clen, maxlen, unit)
-}
-// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
-//
-// Deprecated: no longer used, 
-// but leave in-place so that old generated files continue to work without regeneration.
-func (f genHelperDecoder) StringView(v []byte) string { return stringView(v) }
-
diff --git a/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl b/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl
deleted file mode 100644
index 90d758ce..00000000
--- a/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
-// Use of this source code is governed by a MIT license found in the LICENSE file.
-
-// Code generated from mammoth-test.go.tmpl - DO NOT EDIT.
-
-package codec
-
-import "testing"
-import "fmt"
-import "reflect"
-
-// TestMammoth has all the different paths optimized in fast-path
-// It has all the primitives, slices and maps.
-// 
-// For each of those types, it has a pointer and a non-pointer field.
-
-func init() { _ = fmt.Printf } // so we can include fmt as needed
-
-type TestMammoth struct {
-
-{{range .Values }}{{if .Primitive }}{{/*
-*/}}{{ .MethodNamePfx "F" true }} {{ .Primitive }}
-{{ .MethodNamePfx "Fptr" true }} *{{ .Primitive }}
-{{end}}{{end}}
-
-{{range .Values }}{{if not .Primitive }}{{if not .MapKey }}{{/*
-*/}}{{ .MethodNamePfx "F" false }} []{{ .Elem }}
-{{ .MethodNamePfx "Fptr" false }} *[]{{ .Elem }}
-{{end}}{{end}}{{end}}
-
-{{range .Values }}{{if not .Primitive }}{{if .MapKey }}{{/*
-*/}}{{ .MethodNamePfx "F" false }} map[{{ .MapKey }}]{{ .Elem }}
-{{ .MethodNamePfx "Fptr" false }} *map[{{ .MapKey }}]{{ .Elem }}
-{{end}}{{end}}{{end}}
-
-}
-
-{{range .Values }}{{if not .Primitive }}{{if not .MapKey }}{{/*
-*/}} type {{ .MethodNamePfx "typMbs" false }} []{{ .Elem }}
-func (_ {{ .MethodNamePfx "typMbs" false }}) MapBySlice() { }
-{{end}}{{end}}{{end}}
-
-{{range .Values }}{{if not .Primitive }}{{if .MapKey }}{{/*
-*/}} type {{ .MethodNamePfx "typMap" false }} map[{{ .MapKey }}]{{ .Elem }}
-{{end}}{{end}}{{end}}
-
-func doTestMammothSlices(t *testing.T, h Handle) {
-{{range $i, $e := .Values }}{{if not .Primitive }}{{if not .MapKey }}{{/*
-*/}}
-    var v{{$i}}va [8]{{ .Elem }}
-    for _, v := range [][]{{ .Elem }}{ nil, {}, { {{ nonzerocmd .Elem }}, {{ zerocmd .Elem }}, {{ zerocmd .Elem }}, {{ nonzerocmd .Elem }} } } { {{/*
-    // fmt.Printf(">>>> running mammoth slice v{{$i}}: %v\n", v)
-    //   - encode value to some []byte
-    //   - decode into a length-wise-equal []byte
-    //   - check if equal to initial slice
-    //   - encode ptr to the value
-    //   - check if encode bytes are same
-    //   - decode into ptrs to: nil, then 1-elem slice, equal-length, then large len slice
-    //   - decode into non-addressable slice of equal length, then larger len 
-    //   - for each decode, compare elem-by-elem to the original slice
-    //   - 
-    //   - rinse and repeat for a MapBySlice version
-    //   - 
-    */}}
-    var v{{$i}}v1, v{{$i}}v2 []{{ .Elem }}
-	v{{$i}}v1 = v
-	bs{{$i}} := testMarshalErr(v{{$i}}v1, h, t, "enc-slice-v{{$i}}")
-	if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make([]{{ .Elem }}, len(v)) }
-	testUnmarshalErr(v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}")
-	if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make([]{{ .Elem }}, len(v)) }
-	testUnmarshalErr(reflect.ValueOf(v{{$i}}v2), bs{{$i}}, h, t, "dec-slice-v{{$i}}-noaddr") // non-addressable value
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-noaddr")
-	// ...
-	bs{{$i}} = testMarshalErr(&v{{$i}}v1, h, t, "enc-slice-v{{$i}}-p")
-	v{{$i}}v2 = nil
-	testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-p")
-	v{{$i}}va = [8]{{ .Elem }}{} // clear the array
-	v{{$i}}v2 = v{{$i}}va[:1:1]
-	testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-1")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-p-1")
-	v{{$i}}va = [8]{{ .Elem }}{} // clear the array
-	v{{$i}}v2 = v{{$i}}va[:len(v{{$i}}v1):len(v{{$i}}v1)]
-	testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-len")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-p-len")
-	v{{$i}}va = [8]{{ .Elem }}{} // clear the array
-	v{{$i}}v2 = v{{$i}}va[:]
-	testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-cap")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-p-cap")
-	if len(v{{$i}}v1) > 1 {
-	v{{$i}}va = [8]{{ .Elem }}{} // clear the array
-	testUnmarshalErr((&v{{$i}}va)[:len(v{{$i}}v1)], bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-len-noaddr")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}va[:len(v{{$i}}v1)], t, "equal-slice-v{{$i}}-p-len-noaddr")
-	v{{$i}}va = [8]{{ .Elem }}{} // clear the array
-	testUnmarshalErr((&v{{$i}}va)[:], bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-cap-noaddr")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}va[:len(v{{$i}}v1)], t, "equal-slice-v{{$i}}-p-cap-noaddr")
-    }
-    // ...
-    var v{{$i}}v3, v{{$i}}v4 {{ .MethodNamePfx "typMbs" false }}
-	v{{$i}}v2 = nil
-    if v != nil { v{{$i}}v2 = make([]{{ .Elem }}, len(v)) }
-    v{{$i}}v3 = {{ .MethodNamePfx "typMbs" false }}(v{{$i}}v1)
-    v{{$i}}v4 = {{ .MethodNamePfx "typMbs" false }}(v{{$i}}v2)
-    bs{{$i}} = testMarshalErr(v{{$i}}v3, h, t, "enc-slice-v{{$i}}-custom")
-    testUnmarshalErr(v{{$i}}v4, bs{{$i}}, h, t, "dec-slice-v{{$i}}-custom")
-    testDeepEqualErr(v{{$i}}v3, v{{$i}}v4, t, "equal-slice-v{{$i}}-custom")
-    bs{{$i}} = testMarshalErr(&v{{$i}}v3, h, t, "enc-slice-v{{$i}}-custom-p")
-    v{{$i}}v2 = nil
-    v{{$i}}v4 = {{ .MethodNamePfx "typMbs" false }}(v{{$i}}v2)
-    testUnmarshalErr(&v{{$i}}v4, bs{{$i}}, h, t, "dec-slice-v{{$i}}-custom-p")
-    testDeepEqualErr(v{{$i}}v3, v{{$i}}v4, t, "equal-slice-v{{$i}}-custom-p")
-    }
-{{end}}{{end}}{{end}}
-}
-
-func doTestMammothMaps(t *testing.T, h Handle) {
-{{range $i, $e := .Values }}{{if not .Primitive }}{{if .MapKey }}{{/*
-*/}}
-    for _, v := range []map[{{ .MapKey }}]{{ .Elem }}{ nil, {}, { {{ nonzerocmd .MapKey }}:{{ zerocmd .Elem }} {{if ne "bool" .MapKey}}, {{ nonzerocmd .MapKey }}:{{ nonzerocmd .Elem }} {{end}} } } {
-    // fmt.Printf(">>>> running mammoth map v{{$i}}: %v\n", v)
-    var v{{$i}}v1, v{{$i}}v2 map[{{ .MapKey }}]{{ .Elem }}
-	v{{$i}}v1 = v
-	bs{{$i}} := testMarshalErr(v{{$i}}v1, h, t, "enc-map-v{{$i}}")
-	if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map
-	testUnmarshalErr(v{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-map-v{{$i}}")
-	if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map
-	testUnmarshalErr(reflect.ValueOf(v{{$i}}v2), bs{{$i}}, h, t, "dec-map-v{{$i}}-noaddr") // decode into non-addressable map value
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-map-v{{$i}}-noaddr")
-	if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map
-	testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-len")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-map-v{{$i}}-p-len")
-	bs{{$i}} = testMarshalErr(&v{{$i}}v1, h, t, "enc-map-v{{$i}}-p")
-	v{{$i}}v2 = nil
-	testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-nil")
-	testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-map-v{{$i}}-p-nil")
-    // ...
-	if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map
-    var v{{$i}}v3, v{{$i}}v4 {{ .MethodNamePfx "typMap" false }}
-	v{{$i}}v3 = {{ .MethodNamePfx "typMap" false }}(v{{$i}}v1)
-	v{{$i}}v4 = {{ .MethodNamePfx "typMap" false }}(v{{$i}}v2)
-    bs{{$i}} = testMarshalErr(v{{$i}}v3, h, t, "enc-map-v{{$i}}-custom")
-	testUnmarshalErr(v{{$i}}v4, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-len")
-	testDeepEqualErr(v{{$i}}v3, v{{$i}}v4, t, "equal-map-v{{$i}}-p-len")
-    }
-{{end}}{{end}}{{end}}
-
-}
-
-func doTestMammothMapsAndSlices(t *testing.T, h Handle) {
-     doTestMammothSlices(t, h)
-     doTestMammothMaps(t, h)
-}
diff --git a/vendor/github.com/ugorji/go/codec/mammoth2-test.go.tmpl b/vendor/github.com/ugorji/go/codec/mammoth2-test.go.tmpl
deleted file mode 100644
index 7cdf8f5d..00000000
--- a/vendor/github.com/ugorji/go/codec/mammoth2-test.go.tmpl
+++ /dev/null
@@ -1,94 +0,0 @@
-// +build !notfastpath
-
-// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
-// Use of this source code is governed by a MIT license found in the LICENSE file.
-
-// Code generated from mammoth2-test.go.tmpl - DO NOT EDIT.
-
-package codec
-
-// Increase codecoverage by covering all the codecgen paths, in fast-path and gen-helper.go....
-//
-// Add:
-// - test file for creating a mammoth generated file as _mammoth_generated.go
-//   - generate a second mammoth files in a different file: mammoth2_generated_test.go
-//     - mammoth-test.go.tmpl will do this
-//   - run codecgen on it, into mammoth2_codecgen_generated_test.go (no build tags)
-//   - as part of TestMammoth, run it also
-//   - this will cover all the codecgen, gen-helper, etc in one full run
-//   - check in mammoth* files into github also
-// - then
-//
-// Now, add some types:
-//  - some that implement BinaryMarshal, TextMarshal, JSONMarshal, and one that implements none of it
-//  - create a wrapper type that includes TestMammoth2, with it in slices, and maps, and the custom types
-//  - this wrapper object is what we work encode/decode (so that the codecgen methods are called)
-
-
-// import "encoding/binary"
-import "fmt"
-
-type TestMammoth2 struct {
-
-{{range .Values }}{{if .Primitive }}{{/*
-*/}}{{ .MethodNamePfx "F" true }} {{ .Primitive }}
-{{ .MethodNamePfx "Fptr" true }} *{{ .Primitive }}
-{{end}}{{end}}
-
-{{range .Values }}{{if not .Primitive }}{{if not .MapKey }}{{/*
-*/}}{{ .MethodNamePfx "F" false }} []{{ .Elem }}
-{{ .MethodNamePfx "Fptr" false }} *[]{{ .Elem }}
-{{end}}{{end}}{{end}}
-
-{{range .Values }}{{if not .Primitive }}{{if .MapKey }}{{/*
-*/}}{{ .MethodNamePfx "F" false }} map[{{ .MapKey }}]{{ .Elem }}
-{{ .MethodNamePfx "Fptr" false }} *map[{{ .MapKey }}]{{ .Elem }}
-{{end}}{{end}}{{end}}
-
-}
-
-// -----------
-
-type testMammoth2Binary uint64
-func (x testMammoth2Binary) MarshalBinary() (data []byte, err error) {
-data = make([]byte, 8)
-bigen.PutUint64(data, uint64(x))
-return
-}
-func (x *testMammoth2Binary) UnmarshalBinary(data []byte) (err error) {
-*x = testMammoth2Binary(bigen.Uint64(data))
-return
-}
-
-type testMammoth2Text uint64
-func (x testMammoth2Text) MarshalText() (data []byte, err error) {
-data = []byte(fmt.Sprintf("%b", uint64(x)))
-return
-}
-func (x *testMammoth2Text) UnmarshalText(data []byte) (err error) {
-_, err = fmt.Sscanf(string(data), "%b", (*uint64)(x))
-return
-}
-
-type testMammoth2Json uint64
-func (x testMammoth2Json) MarshalJSON() (data []byte, err error) {
-data = []byte(fmt.Sprintf("%v", uint64(x)))
-return
-}
-func (x *testMammoth2Json) UnmarshalJSON(data []byte) (err error) {
-_, err = fmt.Sscanf(string(data), "%v", (*uint64)(x))
-return
-}
-
-type testMammoth2Basic [4]uint64
-
-type TestMammoth2Wrapper struct {
-  V TestMammoth2
-  T testMammoth2Text
-  B testMammoth2Binary
-  J testMammoth2Json
-  C testMammoth2Basic
-  M map[testMammoth2Basic]TestMammoth2
-  L []TestMammoth2
-  A [4]int64
-}
diff --git a/vendor/github.com/ugorji/go/codec/test-cbor-goldens.json b/vendor/github.com/ugorji/go/codec/test-cbor-goldens.json
deleted file mode 100644
index 90285867..00000000
--- a/vendor/github.com/ugorji/go/codec/test-cbor-goldens.json
+++ /dev/null
@@ -1,639 +0,0 @@
-[
-  {
-    "cbor": "AA==",
-    "hex": "00",
-    "roundtrip": true,
-    "decoded": 0
-  },
-  {
-    "cbor": "AQ==",
-    "hex": "01",
-    "roundtrip": true,
-    "decoded": 1
-  },
-  {
-    "cbor": "Cg==",
-    "hex": "0a",
-    "roundtrip": true,
-    "decoded": 10
-  },
-  {
-    "cbor": "Fw==",
-    "hex": "17",
-    "roundtrip": true,
-    "decoded": 23
-  },
-  {
-    "cbor": "GBg=",
-    "hex": "1818",
-    "roundtrip": true,
-    "decoded": 24
-  },
-  {
-    "cbor": "GBk=",
-    "hex": "1819",
-    "roundtrip": true,
-    "decoded": 25
-  },
-  {
-    "cbor": "GGQ=",
-    "hex": "1864",
-    "roundtrip": true,
-    "decoded": 100
-  },
-  {
-    "cbor": "GQPo",
-    "hex": "1903e8",
-    "roundtrip": true,
-    "decoded": 1000
-  },
-  {
-    "cbor": "GgAPQkA=",
-    "hex": "1a000f4240",
-    "roundtrip": true,
-    "decoded": 1000000
-  },
-  {
-    "cbor": "GwAAAOjUpRAA",
-    "hex": "1b000000e8d4a51000",
-    "roundtrip": true,
-    "decoded": 1000000000000
-  },
-  {
-    "cbor": "G///////////",
-    "hex": "1bffffffffffffffff",
-    "roundtrip": true,
-    "decoded": 18446744073709551615
-  },
-  {
-    "cbor": "wkkBAAAAAAAAAAA=",
-    "hex": "c249010000000000000000",
-    "roundtrip": true,
-    "decoded": 18446744073709551616
-  },
-  {
-    "cbor": "O///////////",
-    "hex": "3bffffffffffffffff",
-    "roundtrip": true,
-    "decoded": -18446744073709551616,
-    "skip": true
-  },
-  {
-    "cbor": "w0kBAAAAAAAAAAA=",
-    "hex": "c349010000000000000000",
-    "roundtrip": true,
-    "decoded": -18446744073709551617
-  },
-  {
-    "cbor": "IA==",
-    "hex": "20",
-    "roundtrip": true,
-    "decoded": -1
-  },
-  {
-    "cbor": "KQ==",
-    "hex": "29",
-    "roundtrip": true,
-    "decoded": -10
-  },
-  {
-    "cbor": "OGM=",
-    "hex": "3863",
-    "roundtrip": true,
-    "decoded": -100
-  },
-  {
-    "cbor": "OQPn",
-    "hex": "3903e7",
-    "roundtrip": true,
-    "decoded": -1000
-  },
-  {
-    "cbor": "+QAA",
-    "hex": "f90000",
-    "roundtrip": true,
-    "decoded": 0.0
-  },
-  {
-    "cbor": "+YAA",
-    "hex": "f98000",
-    "roundtrip": true,
-    "decoded": -0.0
-  },
-  {
-    "cbor": "+TwA",
-    "hex": "f93c00",
-    "roundtrip": true,
-    "decoded": 1.0
-  },
-  {
-    "cbor": "+z/xmZmZmZma",
-    "hex": "fb3ff199999999999a",
-    "roundtrip": true,
-    "decoded": 1.1
-  },
-  {
-    "cbor": "+T4A",
-    "hex": "f93e00",
-    "roundtrip": true,
-    "decoded": 1.5
-  },
-  {
-    "cbor": "+Xv/",
-    "hex": "f97bff",
-    "roundtrip": true,
-    "decoded": 65504.0
-  },
-  {
-    "cbor": "+kfDUAA=",
-    "hex": "fa47c35000",
-    "roundtrip": true,
-    "decoded": 100000.0
-  },
-  {
-    "cbor": "+n9///8=",
-    "hex": "fa7f7fffff",
-    "roundtrip": true,
-    "decoded": 3.4028234663852886e+38
-  },
-  {
-    "cbor": "+3435DyIAHWc",
-    "hex": "fb7e37e43c8800759c",
-    "roundtrip": true,
-    "decoded": 1.0e+300
-  },
-  {
-    "cbor": "+QAB",
-    "hex": "f90001",
-    "roundtrip": true,
-    "decoded": 5.960464477539063e-08
-  },
-  {
-    "cbor": "+QQA",
-    "hex": "f90400",
-    "roundtrip": true,
-    "decoded": 6.103515625e-05
-  },
-  {
-    "cbor": "+cQA",
-    "hex": "f9c400",
-    "roundtrip": true,
-    "decoded": -4.0
-  },
-  {
-    "cbor": "+8AQZmZmZmZm",
-    "hex": "fbc010666666666666",
-    "roundtrip": true,
-    "decoded": -4.1
-  },
-  {
-    "cbor": "+XwA",
-    "hex": "f97c00",
-    "roundtrip": true,
-    "diagnostic": "Infinity"
-  },
-  {
-    "cbor": "+X4A",
-    "hex": "f97e00",
-    "roundtrip": true,
-    "diagnostic": "NaN"
-  },
-  {
-    "cbor": "+fwA",
-    "hex": "f9fc00",
-    "roundtrip": true,
-    "diagnostic": "-Infinity"
-  },
-  {
-    "cbor": "+n+AAAA=",
-    "hex": "fa7f800000",
-    "roundtrip": false,
-    "diagnostic": "Infinity"
-  },
-  {
-    "cbor": "+n/AAAA=",
-    "hex": "fa7fc00000",
-    "roundtrip": false,
-    "diagnostic": "NaN"
-  },
-  {
-    "cbor": "+v+AAAA=",
-    "hex": "faff800000",
-    "roundtrip": false,
-    "diagnostic": "-Infinity"
-  },
-  {
-    "cbor": "+3/wAAAAAAAA",
-    "hex": "fb7ff0000000000000",
-    "roundtrip": false,
-    "diagnostic": "Infinity"
-  },
-  {
-    "cbor": "+3/4AAAAAAAA",
-    "hex": "fb7ff8000000000000",
-    "roundtrip": false,
-    "diagnostic": "NaN"
-  },
-  {
-    "cbor": "+//wAAAAAAAA",
-    "hex": "fbfff0000000000000",
-    "roundtrip": false,
-    "diagnostic": "-Infinity"
-  },
-  {
-    "cbor": "9A==",
-    "hex": "f4",
-    "roundtrip": true,
-    "decoded": false
-  },
-  {
-    "cbor": "9Q==",
-    "hex": "f5",
-    "roundtrip": true,
-    "decoded": true
-  },
-  {
-    "cbor": "9g==",
-    "hex": "f6",
-    "roundtrip": true,
-    "decoded": null
-  },
-  {
-    "cbor": "9w==",
-    "hex": "f7",
-    "roundtrip": true,
-    "diagnostic": "undefined"
-  },
-  {
-    "cbor": "8A==",
-    "hex": "f0",
-    "roundtrip": true,
-    "diagnostic": "simple(16)"
-  },
-  {
-    "cbor": "+Bg=",
-    "hex": "f818",
-    "roundtrip": true,
-    "diagnostic": "simple(24)"
-  },
-  {
-    "cbor": "+P8=",
-    "hex": "f8ff",
-    "roundtrip": true,
-    "diagnostic": "simple(255)"
-  },
-  {
-    "cbor": "wHQyMDEzLTAzLTIxVDIwOjA0OjAwWg==",
-    "hex": "c074323031332d30332d32315432303a30343a30305a",
-    "roundtrip": true,
-    "diagnostic": "0(\"2013-03-21T20:04:00Z\")"
-  },
-  {
-    "cbor": "wRpRS2ew",
-    "hex": "c11a514b67b0",
-    "roundtrip": true,
-    "diagnostic": "1(1363896240)"
-  },
-  {
-    "cbor": "wftB1FLZ7CAAAA==",
-    "hex": "c1fb41d452d9ec200000",
-    "roundtrip": true,
-    "diagnostic": "1(1363896240.5)"
-  },
-  {
-    "cbor": "10QBAgME",
-    "hex": "d74401020304",
-    "roundtrip": true,
-    "diagnostic": "23(h'01020304')"
-  },
-  {
-    "cbor": "2BhFZElFVEY=",
-    "hex": "d818456449455446",
-    "roundtrip": true,
-    "diagnostic": "24(h'6449455446')"
-  },
-  {
-    "cbor": "2CB2aHR0cDovL3d3dy5leGFtcGxlLmNvbQ==",
-    "hex": "d82076687474703a2f2f7777772e6578616d706c652e636f6d",
-    "roundtrip": true,
-    "diagnostic": "32(\"http://www.example.com\")"
-  },
-  {
-    "cbor": "QA==",
-    "hex": "40",
-    "roundtrip": true,
-    "diagnostic": "h''"
-  },
-  {
-    "cbor": "RAECAwQ=",
-    "hex": "4401020304",
-    "roundtrip": true,
-    "diagnostic": "h'01020304'"
-  },
-  {
-    "cbor": "YA==",
-    "hex": "60",
-    "roundtrip": true,
-    "decoded": ""
-  },
-  {
-    "cbor": "YWE=",
-    "hex": "6161",
-    "roundtrip": true,
-    "decoded": "a"
-  },
-  {
-    "cbor": "ZElFVEY=",
-    "hex": "6449455446",
-    "roundtrip": true,
-    "decoded": "IETF"
-  },
-  {
-    "cbor": "YiJc",
-    "hex": "62225c",
-    "roundtrip": true,
-    "decoded": "\"\\"
-  },
-  {
-    "cbor": "YsO8",
-    "hex": "62c3bc",
-    "roundtrip": true,
-    "decoded": "ü"
-  },
-  {
-    "cbor": "Y+awtA==",
-    "hex": "63e6b0b4",
-    "roundtrip": true,
-    "decoded": "æ°´"
-  },
-  {
-    "cbor": "ZPCQhZE=",
-    "hex": "64f0908591",
-    "roundtrip": true,
-    "decoded": "𐅑"
-  },
-  {
-    "cbor": "gA==",
-    "hex": "80",
-    "roundtrip": true,
-    "decoded": [
-
-    ]
-  },
-  {
-    "cbor": "gwECAw==",
-    "hex": "83010203",
-    "roundtrip": true,
-    "decoded": [
-      1,
-      2,
-      3
-    ]
-  },
-  {
-    "cbor": "gwGCAgOCBAU=",
-    "hex": "8301820203820405",
-    "roundtrip": true,
-    "decoded": [
-      1,
-      [
-        2,
-        3
-      ],
-      [
-        4,
-        5
-      ]
-    ]
-  },
-  {
-    "cbor": "mBkBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgYGBk=",
-    "hex": "98190102030405060708090a0b0c0d0e0f101112131415161718181819",
-    "roundtrip": true,
-    "decoded": [
-      1,
-      2,
-      3,
-      4,
-      5,
-      6,
-      7,
-      8,
-      9,
-      10,
-      11,
-      12,
-      13,
-      14,
-      15,
-      16,
-      17,
-      18,
-      19,
-      20,
-      21,
-      22,
-      23,
-      24,
-      25
-    ]
-  },
-  {
-    "cbor": "oA==",
-    "hex": "a0",
-    "roundtrip": true,
-    "decoded": {
-    }
-  },
-  {
-    "cbor": "ogECAwQ=",
-    "hex": "a201020304",
-    "roundtrip": true,
-    "skip": true,
-    "diagnostic": "{1: 2, 3: 4}"
-  },
-  {
-    "cbor": "omFhAWFiggID",
-    "hex": "a26161016162820203",
-    "roundtrip": true,
-    "decoded": {
-      "a": 1,
-      "b": [
-        2,
-        3
-      ]
-    }
-  },
-  {
-    "cbor": "gmFhoWFiYWM=",
-    "hex": "826161a161626163",
-    "roundtrip": true,
-    "decoded": [
-      "a",
-      {
-        "b": "c"
-      }
-    ]
-  },
-  {
-    "cbor": "pWFhYUFhYmFCYWNhQ2FkYURhZWFF",
-    "hex": "a56161614161626142616361436164614461656145",
-    "roundtrip": true,
-    "decoded": {
-      "a": "A",
-      "b": "B",
-      "c": "C",
-      "d": "D",
-      "e": "E"
-    }
-  },
-  {
-    "cbor": "X0IBAkMDBAX/",
-    "hex": "5f42010243030405ff",
-    "roundtrip": false,
-    "skip": true,
-    "diagnostic": "(_ h'0102', h'030405')"
-  },
-  {
-    "cbor": "f2VzdHJlYWRtaW5n/w==",
-    "hex": "7f657374726561646d696e67ff",
-    "roundtrip": false,
-    "decoded": "streaming"
-  },
-  {
-    "cbor": "n/8=",
-    "hex": "9fff",
-    "roundtrip": false,
-    "decoded": [
-
-    ]
-  },
-  {
-    "cbor": "nwGCAgOfBAX//w==",
-    "hex": "9f018202039f0405ffff",
-    "roundtrip": false,
-    "decoded": [
-      1,
-      [
-        2,
-        3
-      ],
-      [
-        4,
-        5
-      ]
-    ]
-  },
-  {
-    "cbor": "nwGCAgOCBAX/",
-    "hex": "9f01820203820405ff",
-    "roundtrip": false,
-    "decoded": [
-      1,
-      [
-        2,
-        3
-      ],
-      [
-        4,
-        5
-      ]
-    ]
-  },
-  {
-    "cbor": "gwGCAgOfBAX/",
-    "hex": "83018202039f0405ff",
-    "roundtrip": false,
-    "decoded": [
-      1,
-      [
-        2,
-        3
-      ],
-      [
-        4,
-        5
-      ]
-    ]
-  },
-  {
-    "cbor": "gwGfAgP/ggQF",
-    "hex": "83019f0203ff820405",
-    "roundtrip": false,
-    "decoded": [
-      1,
-      [
-        2,
-        3
-      ],
-      [
-        4,
-        5
-      ]
-    ]
-  },
-  {
-    "cbor": "nwECAwQFBgcICQoLDA0ODxAREhMUFRYXGBgYGf8=",
-    "hex": "9f0102030405060708090a0b0c0d0e0f101112131415161718181819ff",
-    "roundtrip": false,
-    "decoded": [
-      1,
-      2,
-      3,
-      4,
-      5,
-      6,
-      7,
-      8,
-      9,
-      10,
-      11,
-      12,
-      13,
-      14,
-      15,
-      16,
-      17,
-      18,
-      19,
-      20,
-      21,
-      22,
-      23,
-      24,
-      25
-    ]
-  },
-  {
-    "cbor": "v2FhAWFinwID//8=",
-    "hex": "bf61610161629f0203ffff",
-    "roundtrip": false,
-    "decoded": {
-      "a": 1,
-      "b": [
-        2,
-        3
-      ]
-    }
-  },
-  {
-    "cbor": "gmFhv2FiYWP/",
-    "hex": "826161bf61626163ff",
-    "roundtrip": false,
-    "decoded": [
-      "a",
-      {
-        "b": "c"
-      }
-    ]
-  },
-  {
-    "cbor": "v2NGdW71Y0FtdCH/",
-    "hex": "bf6346756ef563416d7421ff",
-    "roundtrip": false,
-    "decoded": {
-      "Fun": true,
-      "Amt": -2
-    }
-  }
-]
diff --git a/vendor/github.com/ugorji/go/codec/test.py b/vendor/github.com/ugorji/go/codec/test.py
deleted file mode 100755
index 800376f6..00000000
--- a/vendor/github.com/ugorji/go/codec/test.py
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/usr/bin/env python
-
-# This will create golden files in a directory passed to it.
-# A Test calls this internally to create the golden files
-# So it can process them (so we don't have to checkin the files).
-
-# Ensure msgpack-python and cbor are installed first, using:
-#   sudo apt-get install python-dev
-#   sudo apt-get install python-pip
-#   pip install --user msgpack-python msgpack-rpc-python cbor
-
-# Ensure all "string" keys are utf strings (else encoded as bytes)
-
-import cbor, msgpack, msgpackrpc, sys, os, threading
-
-def get_test_data_list():
-    # get list with all primitive types, and a combo type
-    l0 = [ 
-        -8,
-         -1616,
-         -32323232,
-         -6464646464646464,
-         192,
-         1616,
-         32323232,
-         6464646464646464,
-         192,
-         -3232.0,
-         -6464646464.0,
-         3232.0,
-         6464.0,
-         6464646464.0,
-         False,
-         True,
-         u"null",
-         None,
-         u"some&day>some<day",
-         1328176922000002000,
-         u"",
-         -2206187877999998000,
-         u"bytestring",
-         270,
-         u"none",
-        -2013855847999995777,
-         #-6795364578871345152,
-         ]
-    l1 = [
-        { "true": True,
-          "false": False },
-        { "true": u"True",
-          "false": False,
-          "uint16(1616)": 1616 },
-        { "list": [1616, 32323232, True, -3232.0, {"TRUE":True, "FALSE":False}, [True, False] ],
-          "int32":32323232, "bool": True, 
-          "LONG STRING": u"123456789012345678901234567890123456789012345678901234567890",
-          "SHORT STRING": u"1234567890" },
-        { True: "true", 138: False, "false": 200 }
-        ]
-    
-    l = []
-    l.extend(l0)
-    l.append(l0)
-    l.append(1)
-    l.extend(l1)
-    return l
-
-def build_test_data(destdir):
-    l = get_test_data_list()
-    for i in range(len(l)):
-        # packer = msgpack.Packer()
-        serialized = msgpack.dumps(l[i])
-        f = open(os.path.join(destdir, str(i) + '.msgpack.golden'), 'wb')
-        f.write(serialized)
-        f.close()
-        serialized = cbor.dumps(l[i])
-        f = open(os.path.join(destdir, str(i) + '.cbor.golden'), 'wb')
-        f.write(serialized)
-        f.close()
-
-def doRpcServer(port, stopTimeSec):
-    class EchoHandler(object):
-        def Echo123(self, msg1, msg2, msg3):
-            return ("1:%s 2:%s 3:%s" % (msg1, msg2, msg3))
-        def EchoStruct(self, msg):
-            return ("%s" % msg)
-    
-    addr = msgpackrpc.Address('127.0.0.1', port)
-    server = msgpackrpc.Server(EchoHandler())
-    server.listen(addr)
-    # run thread to stop it after stopTimeSec seconds if > 0
-    if stopTimeSec > 0:
-        def myStopRpcServer():
-            server.stop()
-        t = threading.Timer(stopTimeSec, myStopRpcServer)
-        t.start()
-    server.start()
-
-def doRpcClientToPythonSvc(port):
-    address = msgpackrpc.Address('127.0.0.1', port)
-    client = msgpackrpc.Client(address, unpack_encoding='utf-8')
-    print client.call("Echo123", "A1", "B2", "C3")
-    print client.call("EchoStruct", {"A" :"Aa", "B":"Bb", "C":"Cc"})
-   
-def doRpcClientToGoSvc(port):
-    # print ">>>> port: ", port, " <<<<<"
-    address = msgpackrpc.Address('127.0.0.1', port)
-    client = msgpackrpc.Client(address, unpack_encoding='utf-8')
-    print client.call("TestRpcInt.Echo123", ["A1", "B2", "C3"])
-    print client.call("TestRpcInt.EchoStruct", {"A" :"Aa", "B":"Bb", "C":"Cc"})
-
-def doMain(args):
-    if len(args) == 2 and args[0] == "testdata":
-        build_test_data(args[1])
-    elif len(args) == 3 and args[0] == "rpc-server":
-        doRpcServer(int(args[1]), int(args[2]))
-    elif len(args) == 2 and args[0] == "rpc-client-python-service":
-        doRpcClientToPythonSvc(int(args[1]))
-    elif len(args) == 2 and args[0] == "rpc-client-go-service":
-        doRpcClientToGoSvc(int(args[1]))
-    else:
-        print("Usage: test.py " + 
-              "[testdata|rpc-server|rpc-client-python-service|rpc-client-go-service] ...")
-    
-if __name__ == "__main__":
-    doMain(sys.argv[1:])
-
diff --git a/vendor/golang.org/x/net/http2/.gitignore b/vendor/golang.org/x/net/http2/.gitignore
deleted file mode 100644
index 190f1223..00000000
--- a/vendor/golang.org/x/net/http2/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*~
-h2i/h2i
diff --git a/vendor/golang.org/x/net/http2/Dockerfile b/vendor/golang.org/x/net/http2/Dockerfile
deleted file mode 100644
index 53fc5257..00000000
--- a/vendor/golang.org/x/net/http2/Dockerfile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# This Dockerfile builds a recent curl with HTTP/2 client support, using
-# a recent nghttp2 build.
-#
-# See the Makefile for how to tag it. If Docker and that image is found, the
-# Go tests use this curl binary for integration tests.
-#
-
-FROM ubuntu:trusty
-
-RUN apt-get update && \
-    apt-get upgrade -y && \
-    apt-get install -y git-core build-essential wget
-
-RUN apt-get install -y --no-install-recommends \
-       autotools-dev libtool pkg-config zlib1g-dev \
-       libcunit1-dev libssl-dev libxml2-dev libevent-dev \
-       automake autoconf
-
-# The list of packages nghttp2 recommends for h2load:
-RUN apt-get install -y --no-install-recommends make binutils \
-        autoconf automake autotools-dev \
-        libtool pkg-config zlib1g-dev libcunit1-dev libssl-dev libxml2-dev \
-        libev-dev libevent-dev libjansson-dev libjemalloc-dev \
-        cython python3.4-dev python-setuptools
-
-# Note: setting NGHTTP2_VER before the git clone, so an old git clone isn't cached:
-ENV NGHTTP2_VER 895da9a
-RUN cd /root && git clone https://github.com/tatsuhiro-t/nghttp2.git
-
-WORKDIR /root/nghttp2
-RUN git reset --hard $NGHTTP2_VER
-RUN autoreconf -i
-RUN automake
-RUN autoconf
-RUN ./configure
-RUN make
-RUN make install
-
-WORKDIR /root
-RUN wget http://curl.haxx.se/download/curl-7.45.0.tar.gz
-RUN tar -zxvf curl-7.45.0.tar.gz
-WORKDIR /root/curl-7.45.0
-RUN ./configure --with-ssl --with-nghttp2=/usr/local
-RUN make
-RUN make install
-RUN ldconfig
-
-CMD ["-h"]
-ENTRYPOINT ["/usr/local/bin/curl"]
-
diff --git a/vendor/golang.org/x/net/http2/Makefile b/vendor/golang.org/x/net/http2/Makefile
deleted file mode 100644
index 55fd826f..00000000
--- a/vendor/golang.org/x/net/http2/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-curlimage:
-	docker build -t gohttp2/curl .
-
diff --git a/vendor/golang.org/x/net/http2/README b/vendor/golang.org/x/net/http2/README
deleted file mode 100644
index 360d5aa3..00000000
--- a/vendor/golang.org/x/net/http2/README
+++ /dev/null
@@ -1,20 +0,0 @@
-This is a work-in-progress HTTP/2 implementation for Go.
-
-It will eventually live in the Go standard library and won't require
-any changes to your code to use.  It will just be automatic.
-
-Status:
-
-* The server support is pretty good. A few things are missing
-  but are being worked on.
-* The client work has just started but shares a lot of code
-  is coming along much quicker.
-
-Docs are at https://godoc.org/golang.org/x/net/http2
-
-Demo test server at https://http2.golang.org/
-
-Help & bug reports welcome!
-
-Contributing: https://golang.org/doc/contribute.html
-Bugs:         https://golang.org/issue/new?title=x/net/http2:+
diff --git a/vendor/golang.org/x/sys/unix/.gitignore b/vendor/golang.org/x/sys/unix/.gitignore
deleted file mode 100644
index e3e0fc6f..00000000
--- a/vendor/golang.org/x/sys/unix/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-_obj/
-unix.test
diff --git a/vendor/golang.org/x/sys/unix/README.md b/vendor/golang.org/x/sys/unix/README.md
deleted file mode 100644
index bc6f6031..00000000
--- a/vendor/golang.org/x/sys/unix/README.md
+++ /dev/null
@@ -1,173 +0,0 @@
-# Building `sys/unix`
-
-The sys/unix package provides access to the raw system call interface of the
-underlying operating system. See: https://godoc.org/golang.org/x/sys/unix
-
-Porting Go to a new architecture/OS combination or adding syscalls, types, or
-constants to an existing architecture/OS pair requires some manual effort;
-however, there are tools that automate much of the process.
-
-## Build Systems
-
-There are currently two ways we generate the necessary files. We are currently
-migrating the build system to use containers so the builds are reproducible.
-This is being done on an OS-by-OS basis. Please update this documentation as
-components of the build system change.
-
-### Old Build System (currently for `GOOS != "Linux" || GOARCH == "sparc64"`)
-
-The old build system generates the Go files based on the C header files
-present on your system. This means that files
-for a given GOOS/GOARCH pair must be generated on a system with that OS and
-architecture. This also means that the generated code can differ from system
-to system, based on differences in the header files.
-
-To avoid this, if you are using the old build system, only generate the Go
-files on an installation with unmodified header files. It is also important to
-keep track of which version of the OS the files were generated from (ex.
-Darwin 14 vs Darwin 15). This makes it easier to track the progress of changes
-and have each OS upgrade correspond to a single change.
-
-To build the files for your current OS and architecture, make sure GOOS and
-GOARCH are set correctly and run `mkall.sh`. This will generate the files for
-your specific system. Running `mkall.sh -n` shows the commands that will be run.
-
-Requirements: bash, perl, go
-
-### New Build System (currently for `GOOS == "Linux" && GOARCH != "sparc64"`)
-
-The new build system uses a Docker container to generate the go files directly
-from source checkouts of the kernel and various system libraries. This means
-that on any platform that supports Docker, all the files using the new build
-system can be generated at once, and generated files will not change based on
-what the person running the scripts has installed on their computer.
-
-The OS specific files for the new build system are located in the `${GOOS}`
-directory, and the build is coordinated by the `${GOOS}/mkall.go` program. When
-the kernel or system library updates, modify the Dockerfile at
-`${GOOS}/Dockerfile` to checkout the new release of the source.
-
-To build all the files under the new build system, you must be on an amd64/Linux
-system and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will
-then generate all of the files for all of the GOOS/GOARCH pairs in the new build
-system. Running `mkall.sh -n` shows the commands that will be run.
-
-Requirements: bash, perl, go, docker
-
-## Component files
-
-This section describes the various files used in the code generation process.
-It also contains instructions on how to modify these files to add a new
-architecture/OS or to add additional syscalls, types, or constants. Note that
-if you are using the new build system, the scripts cannot be called normally.
-They must be called from within the docker container.
-
-### asm files
-
-The hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system
-call dispatch. There are three entry points:
-```
-  func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
-  func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
-  func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
-```
-The first and second are the standard ones; they differ only in how many
-arguments can be passed to the kernel. The third is for low-level use by the
-ForkExec wrapper. Unlike the first two, it does not call into the scheduler to
-let it know that a system call is running.
-
-When porting Go to an new architecture/OS, this file must be implemented for
-each GOOS/GOARCH pair.
-
-### mksysnum
-
-Mksysnum is a script located at `${GOOS}/mksysnum.pl` (or `mksysnum_${GOOS}.pl`
-for the old system). This script takes in a list of header files containing the
-syscall number declarations and parses them to produce the corresponding list of
-Go numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated
-constants.
-
-Adding new syscall numbers is mostly done by running the build on a sufficiently
-new installation of the target OS (or updating the source checkouts for the
-new build system). However, depending on the OS, you make need to update the
-parsing in mksysnum.
-
-### mksyscall.pl
-
-The `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are
-hand-written Go files which implement system calls (for unix, the specific OS,
-or the specific OS/Architecture pair respectively) that need special handling
-and list `//sys` comments giving prototypes for ones that can be generated.
-
-The mksyscall.pl script takes the `//sys` and `//sysnb` comments and converts
-them into syscalls. This requires the name of the prototype in the comment to
-match a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function
-prototype can be exported (capitalized) or not.
-
-Adding a new syscall often just requires adding a new `//sys` function prototype
-with the desired arguments and a capitalized name so it is exported. However, if
-you want the interface to the syscall to be different, often one will make an
-unexported `//sys` prototype, an then write a custom wrapper in
-`syscall_${GOOS}.go`.
-
-### types files
-
-For each OS, there is a hand-written Go file at `${GOOS}/types.go` (or
-`types_${GOOS}.go` on the old system). This file includes standard C headers and
-creates Go type aliases to the corresponding C types. The file is then fed
-through godef to get the Go compatible definitions. Finally, the generated code
-is fed though mkpost.go to format the code correctly and remove any hidden or
-private identifiers. This cleaned-up code is written to
-`ztypes_${GOOS}_${GOARCH}.go`.
-
-The hardest part about preparing this file is figuring out which headers to
-include and which symbols need to be `#define`d to get the actual data
-structures that pass through to the kernel system calls. Some C libraries
-preset alternate versions for binary compatibility and translate them on the
-way in and out of system calls, but there is almost always a `#define` that can
-get the real ones.
-See `types_darwin.go` and `linux/types.go` for examples.
-
-To add a new type, add in the necessary include statement at the top of the
-file (if it is not already there) and add in a type alias line. Note that if
-your type is significantly different on different architectures, you may need
-some `#if/#elif` macros in your include statements.
-
-### mkerrors.sh
-
-This script is used to generate the system's various constants. This doesn't
-just include the error numbers and error strings, but also the signal numbers
-an a wide variety of miscellaneous constants. The constants come from the list
-of include files in the `includes_${uname}` variable. A regex then picks out
-the desired `#define` statements, and generates the corresponding Go constants.
-The error numbers and strings are generated from `#include <errno.h>`, and the
-signal numbers and strings are generated from `#include <signal.h>`. All of
-these constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program,
-`_errors.c`, which prints out all the constants.
-
-To add a constant, add the header that includes it to the appropriate variable.
-Then, edit the regex (if necessary) to match the desired constant. Avoid making
-the regex too broad to avoid matching unintended constants.
-
-
-## Generated files
-
-### `zerror_${GOOS}_${GOARCH}.go`
-
-A file containing all of the system's generated error numbers, error strings,
-signal numbers, and constants. Generated by `mkerrors.sh` (see above).
-
-### `zsyscall_${GOOS}_${GOARCH}.go`
-
-A file containing all the generated syscalls for a specific GOOS and GOARCH.
-Generated by `mksyscall.pl` (see above).
-
-### `zsysnum_${GOOS}_${GOARCH}.go`
-
-A list of numeric constants for all the syscall number of the specific GOOS
-and GOARCH. Generated by mksysnum (see above).
-
-### `ztypes_${GOOS}_${GOARCH}.go`
-
-A file containing Go types for passing into (or returning from) syscalls.
-Generated by godefs and the types file (see above).
diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh
deleted file mode 100755
index 1715122b..00000000
--- a/vendor/golang.org/x/sys/unix/mkall.sh
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-# This script runs or (given -n) prints suggested commands to generate files for
-# the Architecture/OS specified by the GOARCH and GOOS environment variables.
-# See README.md for more information about how the build system works.
-
-GOOSARCH="${GOOS}_${GOARCH}"
-
-# defaults
-mksyscall="./mksyscall.pl"
-mkerrors="./mkerrors.sh"
-zerrors="zerrors_$GOOSARCH.go"
-mksysctl=""
-zsysctl="zsysctl_$GOOSARCH.go"
-mksysnum=
-mktypes=
-run="sh"
-cmd=""
-
-case "$1" in
--syscalls)
-	for i in zsyscall*go
-	do
-		# Run the command line that appears in the first line
-		# of the generated file to regenerate it.
-		sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i
-		rm _$i
-	done
-	exit 0
-	;;
--n)
-	run="cat"
-	cmd="echo"
-	shift
-esac
-
-case "$#" in
-0)
-	;;
-*)
-	echo 'usage: mkall.sh [-n]' 1>&2
-	exit 2
-esac
-
-if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then
-	# Use then new build system
-	# Files generated through docker (use $cmd so you can Ctl-C the build or run)
-	$cmd docker build --tag generate:$GOOS $GOOS
-	$cmd docker run --interactive --tty --volume $(dirname "$(readlink -f "$0")"):/build generate:$GOOS
-	exit
-fi
-
-GOOSARCH_in=syscall_$GOOSARCH.go
-case "$GOOSARCH" in
-_* | *_ | _)
-	echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2
-	exit 1
-	;;
-darwin_386)
-	mkerrors="$mkerrors -m32"
-	mksyscall="./mksyscall.pl -l32"
-	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-darwin_amd64)
-	mkerrors="$mkerrors -m64"
-	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-darwin_arm)
-	mkerrors="$mkerrors"
-	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-darwin_arm64)
-	mkerrors="$mkerrors -m64"
-	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-dragonfly_amd64)
-	mkerrors="$mkerrors -m64"
-	mksyscall="./mksyscall.pl -dragonfly"
-	mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-freebsd_386)
-	mkerrors="$mkerrors -m32"
-	mksyscall="./mksyscall.pl -l32"
-	mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-freebsd_amd64)
-	mkerrors="$mkerrors -m64"
-	mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-freebsd_arm)
-	mkerrors="$mkerrors"
-	mksyscall="./mksyscall.pl -l32 -arm"
-	mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
-	# Let the type of C char be signed for making the bare syscall
-	# API consistent across platforms.
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
-	;;
-linux_sparc64)
-	GOOSARCH_in=syscall_linux_sparc64.go
-	unistd_h=/usr/include/sparc64-linux-gnu/asm/unistd.h
-	mkerrors="$mkerrors -m64"
-	mksysnum="./mksysnum_linux.pl $unistd_h"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-netbsd_386)
-	mkerrors="$mkerrors -m32"
-	mksyscall="./mksyscall.pl -l32 -netbsd"
-	mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-netbsd_amd64)
-	mkerrors="$mkerrors -m64"
-	mksyscall="./mksyscall.pl -netbsd"
-	mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-netbsd_arm)
-	mkerrors="$mkerrors"
-	mksyscall="./mksyscall.pl -l32 -netbsd -arm"
-	mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
-	# Let the type of C char be signed for making the bare syscall
-	# API consistent across platforms.
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
-	;;
-openbsd_386)
-	mkerrors="$mkerrors -m32"
-	mksyscall="./mksyscall.pl -l32 -openbsd"
-	mksysctl="./mksysctl_openbsd.pl"
-	mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-openbsd_amd64)
-	mkerrors="$mkerrors -m64"
-	mksyscall="./mksyscall.pl -openbsd"
-	mksysctl="./mksysctl_openbsd.pl"
-	mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-openbsd_arm)
-	mkerrors="$mkerrors"
-	mksyscall="./mksyscall.pl -l32 -openbsd -arm"
-	mksysctl="./mksysctl_openbsd.pl"
-	mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
-	# Let the type of C char be signed for making the bare syscall
-	# API consistent across platforms.
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
-	;;
-solaris_amd64)
-	mksyscall="./mksyscall_solaris.pl"
-	mkerrors="$mkerrors -m64"
-	mksysnum=
-	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
-	;;
-*)
-	echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2
-	exit 1
-	;;
-esac
-
-(
-	if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi
-	case "$GOOS" in
-	*)
-		syscall_goos="syscall_$GOOS.go"
-		case "$GOOS" in
-		darwin | dragonfly | freebsd | netbsd | openbsd)
-			syscall_goos="syscall_bsd.go $syscall_goos"
-			;;
-		esac
-		if [ -n "$mksyscall" ]; then echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi
-		;;
-	esac
-	if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi
-	if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
-	if [ -n "$mktypes" ]; then
-		echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go";
-	fi
-) | $run
diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh
deleted file mode 100755
index 4dd40c17..00000000
--- a/vendor/golang.org/x/sys/unix/mkerrors.sh
+++ /dev/null
@@ -1,580 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-# Generate Go code listing errors and other #defined constant
-# values (ENAMETOOLONG etc.), by asking the preprocessor
-# about the definitions.
-
-unset LANG
-export LC_ALL=C
-export LC_CTYPE=C
-
-if test -z "$GOARCH" -o -z "$GOOS"; then
-	echo 1>&2 "GOARCH or GOOS not defined in environment"
-	exit 1
-fi
-
-# Check that we are using the new build system if we should
-if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then
-	if [[ "$GOLANG_SYS_BUILD" != "docker" ]]; then
-		echo 1>&2 "In the new build system, mkerrors should not be called directly."
-		echo 1>&2 "See README.md"
-		exit 1
-	fi
-fi
-
-CC=${CC:-cc}
-
-if [[ "$GOOS" = "solaris" ]]; then
-	# Assumes GNU versions of utilities in PATH.
-	export PATH=/usr/gnu/bin:$PATH
-fi
-
-uname=$(uname)
-
-includes_Darwin='
-#define _DARWIN_C_SOURCE
-#define KERNEL
-#define _DARWIN_USE_64_BIT_INODE
-#include <stdint.h>
-#include <sys/attr.h>
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/ptrace.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/sysctl.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/utsname.h>
-#include <sys/wait.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_types.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <netinet/ip.h>
-#include <termios.h>
-'
-
-includes_DragonFly='
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/sysctl.h>
-#include <sys/mman.h>
-#include <sys/wait.h>
-#include <sys/ioctl.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_types.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <termios.h>
-#include <netinet/ip.h>
-#include <net/ip_mroute/ip_mroute.h>
-'
-
-includes_FreeBSD='
-#include <sys/capability.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/sysctl.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/wait.h>
-#include <sys/ioctl.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_types.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <termios.h>
-#include <netinet/ip.h>
-#include <netinet/ip_mroute.h>
-#include <sys/extattr.h>
-
-#if __FreeBSD__ >= 10
-#define IFT_CARP	0xf8	// IFT_CARP is deprecated in FreeBSD 10
-#undef SIOCAIFADDR
-#define SIOCAIFADDR	_IOW(105, 26, struct oifaliasreq)	// ifaliasreq contains if_data
-#undef SIOCSIFPHYADDR
-#define SIOCSIFPHYADDR	_IOW(105, 70, struct oifaliasreq)	// ifaliasreq contains if_data
-#endif
-'
-
-includes_Linux='
-#define _LARGEFILE_SOURCE
-#define _LARGEFILE64_SOURCE
-#ifndef __LP64__
-#define _FILE_OFFSET_BITS 64
-#endif
-#define _GNU_SOURCE
-
-// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of
-// these structures. We just include them copied from <bits/termios.h>.
-#if defined(__powerpc__)
-struct sgttyb {
-        char    sg_ispeed;
-        char    sg_ospeed;
-        char    sg_erase;
-        char    sg_kill;
-        short   sg_flags;
-};
-
-struct tchars {
-        char    t_intrc;
-        char    t_quitc;
-        char    t_startc;
-        char    t_stopc;
-        char    t_eofc;
-        char    t_brkc;
-};
-
-struct ltchars {
-        char    t_suspc;
-        char    t_dsuspc;
-        char    t_rprntc;
-        char    t_flushc;
-        char    t_werasc;
-        char    t_lnextc;
-};
-#endif
-
-#include <bits/sockaddr.h>
-#include <sys/epoll.h>
-#include <sys/eventfd.h>
-#include <sys/inotify.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/prctl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/xattr.h>
-#include <linux/if.h>
-#include <linux/if_alg.h>
-#include <linux/if_arp.h>
-#include <linux/if_ether.h>
-#include <linux/if_tun.h>
-#include <linux/if_packet.h>
-#include <linux/if_addr.h>
-#include <linux/falloc.h>
-#include <linux/filter.h>
-#include <linux/fs.h>
-#include <linux/keyctl.h>
-#include <linux/netlink.h>
-#include <linux/perf_event.h>
-#include <linux/random.h>
-#include <linux/reboot.h>
-#include <linux/rtnetlink.h>
-#include <linux/ptrace.h>
-#include <linux/sched.h>
-#include <linux/seccomp.h>
-#include <linux/sockios.h>
-#include <linux/wait.h>
-#include <linux/icmpv6.h>
-#include <linux/serial.h>
-#include <linux/can.h>
-#include <linux/vm_sockets.h>
-#include <linux/taskstats.h>
-#include <linux/genetlink.h>
-#include <linux/stat.h>
-#include <linux/watchdog.h>
-#include <net/route.h>
-#include <asm/termbits.h>
-
-#ifndef MSG_FASTOPEN
-#define MSG_FASTOPEN    0x20000000
-#endif
-
-#ifndef PTRACE_GETREGS
-#define PTRACE_GETREGS	0xc
-#endif
-
-#ifndef PTRACE_SETREGS
-#define PTRACE_SETREGS	0xd
-#endif
-
-#ifndef SOL_NETLINK
-#define SOL_NETLINK	270
-#endif
-
-#ifdef SOL_BLUETOOTH
-// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h
-// but it is already in bluetooth_linux.go
-#undef SOL_BLUETOOTH
-#endif
-
-// Certain constants are missing from the fs/crypto UAPI
-#define FS_KEY_DESC_PREFIX              "fscrypt:"
-#define FS_KEY_DESC_PREFIX_SIZE         8
-#define FS_MAX_KEY_SIZE                 64
-'
-
-includes_NetBSD='
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/event.h>
-#include <sys/mman.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/sysctl.h>
-#include <sys/termios.h>
-#include <sys/ttycom.h>
-#include <sys/wait.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_types.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_mroute.h>
-#include <netinet/if_ether.h>
-
-// Needed since <sys/param.h> refers to it...
-#define schedppq 1
-'
-
-includes_OpenBSD='
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/event.h>
-#include <sys/mman.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/sysctl.h>
-#include <sys/termios.h>
-#include <sys/ttycom.h>
-#include <sys/wait.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_types.h>
-#include <net/if_var.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_mroute.h>
-#include <netinet/if_ether.h>
-#include <net/if_bridge.h>
-
-// We keep some constants not supported in OpenBSD 5.5 and beyond for
-// the promise of compatibility.
-#define EMUL_ENABLED		0x1
-#define EMUL_NATIVE		0x2
-#define IPV6_FAITH		0x1d
-#define IPV6_OPTIONS		0x1
-#define IPV6_RTHDR_STRICT	0x1
-#define IPV6_SOCKOPT_RESERVED1	0x3
-#define SIOCGIFGENERIC		0xc020693a
-#define SIOCSIFGENERIC		0x80206939
-#define WALTSIG			0x4
-'
-
-includes_SunOS='
-#include <limits.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/mman.h>
-#include <sys/wait.h>
-#include <sys/ioctl.h>
-#include <sys/mkdev.h>
-#include <net/bpf.h>
-#include <net/if.h>
-#include <net/if_arp.h>
-#include <net/if_types.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <termios.h>
-#include <netinet/ip.h>
-#include <netinet/ip_mroute.h>
-'
-
-
-includes='
-#include <sys/types.h>
-#include <sys/file.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/ip.h>
-#include <netinet/ip6.h>
-#include <netinet/tcp.h>
-#include <errno.h>
-#include <sys/signal.h>
-#include <signal.h>
-#include <sys/resource.h>
-#include <time.h>
-'
-ccflags="$@"
-
-# Write go tool cgo -godefs input.
-(
-	echo package unix
-	echo
-	echo '/*'
-	indirect="includes_$(uname)"
-	echo "${!indirect} $includes"
-	echo '*/'
-	echo 'import "C"'
-	echo 'import "syscall"'
-	echo
-	echo 'const ('
-
-	# The gcc command line prints all the #defines
-	# it encounters while processing the input
-	echo "${!indirect} $includes" | $CC -x c - -E -dM $ccflags |
-	awk '
-		$1 != "#define" || $2 ~ /\(/ || $3 == "" {next}
-
-		$2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next}  # 386 registers
-		$2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next}
-		$2 ~ /^(SCM_SRCRT)$/ {next}
-		$2 ~ /^(MAP_FAILED)$/ {next}
-		$2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc.
-
-		$2 ~ /^EXTATTR_NAMESPACE_NAMES/ ||
-		$2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next}
-
-		$2 !~ /^ETH_/ &&
-		$2 !~ /^EPROC_/ &&
-		$2 !~ /^EQUIV_/ &&
-		$2 !~ /^EXPR_/ &&
-		$2 ~ /^E[A-Z0-9_]+$/ ||
-		$2 ~ /^B[0-9_]+$/ ||
-		$2 ~ /^(OLD|NEW)DEV$/ ||
-		$2 == "BOTHER" ||
-		$2 ~ /^CI?BAUD(EX)?$/ ||
-		$2 == "IBSHIFT" ||
-		$2 ~ /^V[A-Z0-9]+$/ ||
-		$2 ~ /^CS[A-Z0-9]/ ||
-		$2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ ||
-		$2 ~ /^IGN/ ||
-		$2 ~ /^IX(ON|ANY|OFF)$/ ||
-		$2 ~ /^IN(LCR|PCK)$/ ||
-		$2 ~ /(^FLU?SH)|(FLU?SH$)/ ||
-		$2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ ||
-		$2 == "BRKINT" ||
-		$2 == "HUPCL" ||
-		$2 == "PENDIN" ||
-		$2 == "TOSTOP" ||
-		$2 == "XCASE" ||
-		$2 == "ALTWERASE" ||
-		$2 == "NOKERNINFO" ||
-		$2 ~ /^PAR/ ||
-		$2 ~ /^SIG[^_]/ ||
-		$2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ ||
-		$2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ ||
-		$2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ ||
-		$2 ~ /^O?XTABS$/ ||
-		$2 ~ /^TC[IO](ON|OFF)$/ ||
-		$2 ~ /^IN_/ ||
-		$2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||
-		$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||
-		$2 ~ /^FALLOC_/ ||
-		$2 == "ICMPV6_FILTER" ||
-		$2 == "SOMAXCONN" ||
-		$2 == "NAME_MAX" ||
-		$2 == "IFNAMSIZ" ||
-		$2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ ||
-		$2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ ||
-		$2 ~ /^HW_MACHINE$/ ||
-		$2 ~ /^SYSCTL_VERS/ ||
-		$2 ~ /^(MS|MNT|UMOUNT)_/ ||
-		$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
-		$2 ~ /^(O|F|E?FD|NAME|S|PTRACE|PT)_/ ||
-		$2 ~ /^LINUX_REBOOT_CMD_/ ||
-		$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
-		$2 !~ "NLA_TYPE_MASK" &&
-		$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P)_/ ||
-		$2 ~ /^SIOC/ ||
-		$2 ~ /^TIOC/ ||
-		$2 ~ /^TCGET/ ||
-		$2 ~ /^TCSET/ ||
-		$2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||
-		$2 !~ "RTF_BITS" &&
-		$2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||
-		$2 ~ /^BIOC/ ||
-		$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||
-		$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ ||
-		$2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||
-		$2 ~ /^CLONE_[A-Z_]+/ ||
-		$2 !~ /^(BPF_TIMEVAL)$/ &&
-		$2 ~ /^(BPF|DLT)_/ ||
-		$2 ~ /^CLOCK_/ ||
-		$2 ~ /^CAN_/ ||
-		$2 ~ /^CAP_/ ||
-		$2 ~ /^ALG_/ ||
-		$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ ||
-		$2 ~ /^GRND_/ ||
-		$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||
-		$2 ~ /^KEYCTL_/ ||
-		$2 ~ /^PERF_EVENT_IOC_/ ||
-		$2 ~ /^SECCOMP_MODE_/ ||
-		$2 ~ /^SPLICE_/ ||
-		$2 ~ /^(VM|VMADDR)_/ ||
-		$2 ~ /^IOCTL_VM_SOCKETS_/ ||
-		$2 ~ /^(TASKSTATS|TS)_/ ||
-		$2 ~ /^CGROUPSTATS_/ ||
-		$2 ~ /^GENL_/ ||
-		$2 ~ /^STATX_/ ||
-		$2 ~ /^UTIME_/ ||
-		$2 ~ /^XATTR_(CREATE|REPLACE)/ ||
-		$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ ||
-		$2 ~ /^FSOPT_/ ||
-		$2 ~ /^WDIOC_/ ||
-		$2 !~ "WMESGLEN" &&
-		$2 ~ /^W[A-Z0-9]+$/ ||
-		$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)}
-		$2 ~ /^__WCOREFLAG$/ {next}
-		$2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)}
-
-		{next}
-	' | sort
-
-	echo ')'
-) >_const.go
-
-# Pull out the error names for later.
-errors=$(
-	echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
-	awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |
-	sort
-)
-
-# Pull out the signal names for later.
-signals=$(
-	echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
-	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |
-	egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
-	sort
-)
-
-# Again, writing regexps to a file.
-echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
-	awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print "^\t" $2 "[ \t]*=" }' |
-	sort >_error.grep
-echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
-	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' |
-	egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
-	sort >_signal.grep
-
-echo '// mkerrors.sh' "$@"
-echo '// Code generated by the command above; see README.md. DO NOT EDIT.'
-echo
-echo "// +build ${GOARCH},${GOOS}"
-echo
-go tool cgo -godefs -- "$@" _const.go >_error.out
-cat _error.out | grep -vf _error.grep | grep -vf _signal.grep
-echo
-echo '// Errors'
-echo 'const ('
-cat _error.out | grep -f _error.grep | sed 's/=\(.*\)/= syscall.Errno(\1)/'
-echo ')'
-
-echo
-echo '// Signals'
-echo 'const ('
-cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= syscall.Signal(\1)/'
-echo ')'
-
-# Run C program to print error and syscall strings.
-(
-	echo -E "
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <ctype.h>
-#include <string.h>
-#include <signal.h>
-
-#define nelem(x) (sizeof(x)/sizeof((x)[0]))
-
-enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below
-
-int errors[] = {
-"
-	for i in $errors
-	do
-		echo -E '	'$i,
-	done
-
-	echo -E "
-};
-
-int signals[] = {
-"
-	for i in $signals
-	do
-		echo -E '	'$i,
-	done
-
-	# Use -E because on some systems bash builtin interprets \n itself.
-	echo -E '
-};
-
-static int
-intcmp(const void *a, const void *b)
-{
-	return *(int*)a - *(int*)b;
-}
-
-int
-main(void)
-{
-	int i, e;
-	char buf[1024], *p;
-
-	printf("\n\n// Error table\n");
-	printf("var errors = [...]string {\n");
-	qsort(errors, nelem(errors), sizeof errors[0], intcmp);
-	for(i=0; i<nelem(errors); i++) {
-		e = errors[i];
-		if(i > 0 && errors[i-1] == e)
-			continue;
-		strcpy(buf, strerror(e));
-		// lowercase first letter: Bad -> bad, but STREAM -> STREAM.
-		if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
-			buf[0] += a - A;
-		printf("\t%d: \"%s\",\n", e, buf);
-	}
-	printf("}\n\n");
-
-	printf("\n\n// Signal table\n");
-	printf("var signals = [...]string {\n");
-	qsort(signals, nelem(signals), sizeof signals[0], intcmp);
-	for(i=0; i<nelem(signals); i++) {
-		e = signals[i];
-		if(i > 0 && signals[i-1] == e)
-			continue;
-		strcpy(buf, strsignal(e));
-		// lowercase first letter: Bad -> bad, but STREAM -> STREAM.
-		if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
-			buf[0] += a - A;
-		// cut trailing : number.
-		p = strrchr(buf, ":"[0]);
-		if(p)
-			*p = '\0';
-		printf("\t%d: \"%s\",\n", e, buf);
-	}
-	printf("}\n\n");
-
-	return 0;
-}
-
-'
-) >_errors.c
-
-$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out
diff --git a/vendor/golang.org/x/sys/unix/mksyscall.pl b/vendor/golang.org/x/sys/unix/mksyscall.pl
deleted file mode 100755
index 1f6b926f..00000000
--- a/vendor/golang.org/x/sys/unix/mksyscall.pl
+++ /dev/null
@@ -1,341 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-# This program reads a file containing function prototypes
-# (like syscall_darwin.go) and generates system call bodies.
-# The prototypes are marked by lines beginning with "//sys"
-# and read like func declarations if //sys is replaced by func, but:
-#	* The parameter lists must give a name for each argument.
-#	  This includes return parameters.
-#	* The parameter lists must give a type for each argument:
-#	  the (x, y, z int) shorthand is not allowed.
-#	* If the return parameter is an error number, it must be named errno.
-
-# A line beginning with //sysnb is like //sys, except that the
-# goroutine will not be suspended during the execution of the system
-# call.  This must only be used for system calls which can never
-# block, as otherwise the system call could cause all goroutines to
-# hang.
-
-use strict;
-
-my $cmdline = "mksyscall.pl " . join(' ', @ARGV);
-my $errors = 0;
-my $_32bit = "";
-my $plan9 = 0;
-my $openbsd = 0;
-my $netbsd = 0;
-my $dragonfly = 0;
-my $arm = 0; # 64-bit value should use (even, odd)-pair
-my $tags = "";  # build tags
-
-if($ARGV[0] eq "-b32") {
-	$_32bit = "big-endian";
-	shift;
-} elsif($ARGV[0] eq "-l32") {
-	$_32bit = "little-endian";
-	shift;
-}
-if($ARGV[0] eq "-plan9") {
-	$plan9 = 1;
-	shift;
-}
-if($ARGV[0] eq "-openbsd") {
-	$openbsd = 1;
-	shift;
-}
-if($ARGV[0] eq "-netbsd") {
-	$netbsd = 1;
-	shift;
-}
-if($ARGV[0] eq "-dragonfly") {
-	$dragonfly = 1;
-	shift;
-}
-if($ARGV[0] eq "-arm") {
-	$arm = 1;
-	shift;
-}
-if($ARGV[0] eq "-tags") {
-	shift;
-	$tags = $ARGV[0];
-	shift;
-}
-
-if($ARGV[0] =~ /^-/) {
-	print STDERR "usage: mksyscall.pl [-b32 | -l32] [-tags x,y] [file ...]\n";
-	exit 1;
-}
-
-# Check that we are using the new build system if we should
-if($ENV{'GOOS'} eq "linux" && $ENV{'GOARCH'} ne "sparc64") {
-	if($ENV{'GOLANG_SYS_BUILD'} ne "docker") {
-		print STDERR "In the new build system, mksyscall should not be called directly.\n";
-		print STDERR "See README.md\n";
-		exit 1;
-	}
-}
-
-
-sub parseparamlist($) {
-	my ($list) = @_;
-	$list =~ s/^\s*//;
-	$list =~ s/\s*$//;
-	if($list eq "") {
-		return ();
-	}
-	return split(/\s*,\s*/, $list);
-}
-
-sub parseparam($) {
-	my ($p) = @_;
-	if($p !~ /^(\S*) (\S*)$/) {
-		print STDERR "$ARGV:$.: malformed parameter: $p\n";
-		$errors = 1;
-		return ("xx", "int");
-	}
-	return ($1, $2);
-}
-
-my $text = "";
-while(<>) {
-	chomp;
-	s/\s+/ /g;
-	s/^\s+//;
-	s/\s+$//;
-	my $nonblock = /^\/\/sysnb /;
-	next if !/^\/\/sys / && !$nonblock;
-
-	# Line must be of the form
-	#	func Open(path string, mode int, perm int) (fd int, errno error)
-	# Split into name, in params, out params.
-	if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$/) {
-		print STDERR "$ARGV:$.: malformed //sys declaration\n";
-		$errors = 1;
-		next;
-	}
-	my ($func, $in, $out, $sysname) = ($2, $3, $4, $5);
-
-	# Split argument lists on comma.
-	my @in = parseparamlist($in);
-	my @out = parseparamlist($out);
-
-	# Try in vain to keep people from editing this file.
-	# The theory is that they jump into the middle of the file
-	# without reading the header.
-	$text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
-
-	# Go function header.
-	my $out_decl = @out ? sprintf(" (%s)", join(', ', @out)) : "";
-	$text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out_decl;
-
-	# Check if err return available
-	my $errvar = "";
-	foreach my $p (@out) {
-		my ($name, $type) = parseparam($p);
-		if($type eq "error") {
-			$errvar = $name;
-			last;
-		}
-	}
-
-	# Prepare arguments to Syscall.
-	my @args = ();
-	my $n = 0;
-	foreach my $p (@in) {
-		my ($name, $type) = parseparam($p);
-		if($type =~ /^\*/) {
-			push @args, "uintptr(unsafe.Pointer($name))";
-		} elsif($type eq "string" && $errvar ne "") {
-			$text .= "\tvar _p$n *byte\n";
-			$text .= "\t_p$n, $errvar = BytePtrFromString($name)\n";
-			$text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
-			push @args, "uintptr(unsafe.Pointer(_p$n))";
-			$n++;
-		} elsif($type eq "string") {
-			print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
-			$text .= "\tvar _p$n *byte\n";
-			$text .= "\t_p$n, _ = BytePtrFromString($name)\n";
-			push @args, "uintptr(unsafe.Pointer(_p$n))";
-			$n++;
-		} elsif($type =~ /^\[\](.*)/) {
-			# Convert slice into pointer, length.
-			# Have to be careful not to take address of &a[0] if len == 0:
-			# pass dummy pointer in that case.
-			# Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
-			$text .= "\tvar _p$n unsafe.Pointer\n";
-			$text .= "\tif len($name) > 0 {\n\t\t_p$n = unsafe.Pointer(\&${name}[0])\n\t}";
-			$text .= " else {\n\t\t_p$n = unsafe.Pointer(&_zero)\n\t}";
-			$text .= "\n";
-			push @args, "uintptr(_p$n)", "uintptr(len($name))";
-			$n++;
-		} elsif($type eq "int64" && ($openbsd || $netbsd)) {
-			push @args, "0";
-			if($_32bit eq "big-endian") {
-				push @args, "uintptr($name>>32)", "uintptr($name)";
-			} elsif($_32bit eq "little-endian") {
-				push @args, "uintptr($name)", "uintptr($name>>32)";
-			} else {
-				push @args, "uintptr($name)";
-			}
-		} elsif($type eq "int64" && $dragonfly) {
-			if ($func !~ /^extp(read|write)/i) {
-				push @args, "0";
-			}
-			if($_32bit eq "big-endian") {
-				push @args, "uintptr($name>>32)", "uintptr($name)";
-			} elsif($_32bit eq "little-endian") {
-				push @args, "uintptr($name)", "uintptr($name>>32)";
-			} else {
-				push @args, "uintptr($name)";
-			}
-		} elsif($type eq "int64" && $_32bit ne "") {
-			if(@args % 2 && $arm) {
-				# arm abi specifies 64-bit argument uses
-				# (even, odd) pair
-				push @args, "0"
-			}
-			if($_32bit eq "big-endian") {
-				push @args, "uintptr($name>>32)", "uintptr($name)";
-			} else {
-				push @args, "uintptr($name)", "uintptr($name>>32)";
-			}
-		} else {
-			push @args, "uintptr($name)";
-		}
-	}
-
-	# Determine which form to use; pad args with zeros.
-	my $asm = "Syscall";
-	if ($nonblock) {
-		if ($errvar eq "" && $ENV{'GOOS'} eq "linux") {
-			$asm = "RawSyscallNoError";
-		} else {
-			$asm = "RawSyscall";
-		}
-	} else {
-		if ($errvar eq "" && $ENV{'GOOS'} eq "linux") {
-			$asm = "SyscallNoError";
-		}
-	}
-	if(@args <= 3) {
-		while(@args < 3) {
-			push @args, "0";
-		}
-	} elsif(@args <= 6) {
-		$asm .= "6";
-		while(@args < 6) {
-			push @args, "0";
-		}
-	} elsif(@args <= 9) {
-		$asm .= "9";
-		while(@args < 9) {
-			push @args, "0";
-		}
-	} else {
-		print STDERR "$ARGV:$.: too many arguments to system call\n";
-	}
-
-	# System call number.
-	if($sysname eq "") {
-		$sysname = "SYS_$func";
-		$sysname =~ s/([a-z])([A-Z])/${1}_$2/g;	# turn FooBar into Foo_Bar
-		$sysname =~ y/a-z/A-Z/;
-	}
-
-	# Actual call.
-	my $args = join(', ', @args);
-	my $call = "$asm($sysname, $args)";
-
-	# Assign return values.
-	my $body = "";
-	my @ret = ("_", "_", "_");
-	my $do_errno = 0;
-	for(my $i=0; $i<@out; $i++) {
-		my $p = $out[$i];
-		my ($name, $type) = parseparam($p);
-		my $reg = "";
-		if($name eq "err" && !$plan9) {
-			$reg = "e1";
-			$ret[2] = $reg;
-			$do_errno = 1;
-		} elsif($name eq "err" && $plan9) {
-			$ret[0] = "r0";
-			$ret[2] = "e1";
-			next;
-		} else {
-			$reg = sprintf("r%d", $i);
-			$ret[$i] = $reg;
-		}
-		if($type eq "bool") {
-			$reg = "$reg != 0";
-		}
-		if($type eq "int64" && $_32bit ne "") {
-			# 64-bit number in r1:r0 or r0:r1.
-			if($i+2 > @out) {
-				print STDERR "$ARGV:$.: not enough registers for int64 return\n";
-			}
-			if($_32bit eq "big-endian") {
-				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
-			} else {
-				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
-			}
-			$ret[$i] = sprintf("r%d", $i);
-			$ret[$i+1] = sprintf("r%d", $i+1);
-		}
-		if($reg ne "e1" || $plan9) {
-			$body .= "\t$name = $type($reg)\n";
-		}
-	}
-	if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") {
-		$text .= "\t$call\n";
-	} else {
-		if ($errvar eq "" && $ENV{'GOOS'} eq "linux") {
-			# raw syscall without error on Linux, see golang.org/issue/22924
-			$text .= "\t$ret[0], $ret[1] := $call\n";
-		} else {
-			$text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
-		}
-	}
-	$text .= $body;
-
-	if ($plan9 && $ret[2] eq "e1") {
-		$text .= "\tif int32(r0) == -1 {\n";
-		$text .= "\t\terr = e1\n";
-		$text .= "\t}\n";
-	} elsif ($do_errno) {
-		$text .= "\tif e1 != 0 {\n";
-		$text .= "\t\terr = errnoErr(e1)\n";
-		$text .= "\t}\n";
-	}
-	$text .= "\treturn\n";
-	$text .= "}\n\n";
-}
-
-chomp $text;
-chomp $text;
-
-if($errors) {
-	exit 1;
-}
-
-print <<EOF;
-// $cmdline
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build $tags
-
-package unix
-
-import (
-	"syscall"
-	"unsafe"
-)
-
-var _ syscall.Errno
-
-$text
-EOF
-exit 0;
diff --git a/vendor/golang.org/x/sys/unix/mksyscall_solaris.pl b/vendor/golang.org/x/sys/unix/mksyscall_solaris.pl
deleted file mode 100755
index 3e6ed9df..00000000
--- a/vendor/golang.org/x/sys/unix/mksyscall_solaris.pl
+++ /dev/null
@@ -1,289 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-# This program reads a file containing function prototypes
-# (like syscall_solaris.go) and generates system call bodies.
-# The prototypes are marked by lines beginning with "//sys"
-# and read like func declarations if //sys is replaced by func, but:
-#	* The parameter lists must give a name for each argument.
-#	  This includes return parameters.
-#	* The parameter lists must give a type for each argument:
-#	  the (x, y, z int) shorthand is not allowed.
-#	* If the return parameter is an error number, it must be named err.
-#	* If go func name needs to be different than its libc name,
-#	* or the function is not in libc, name could be specified
-#	* at the end, after "=" sign, like
-#	  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
-
-use strict;
-
-my $cmdline = "mksyscall_solaris.pl " . join(' ', @ARGV);
-my $errors = 0;
-my $_32bit = "";
-my $tags = "";  # build tags
-
-binmode STDOUT;
-
-if($ARGV[0] eq "-b32") {
-	$_32bit = "big-endian";
-	shift;
-} elsif($ARGV[0] eq "-l32") {
-	$_32bit = "little-endian";
-	shift;
-}
-if($ARGV[0] eq "-tags") {
-	shift;
-	$tags = $ARGV[0];
-	shift;
-}
-
-if($ARGV[0] =~ /^-/) {
-	print STDERR "usage: mksyscall_solaris.pl [-b32 | -l32] [-tags x,y] [file ...]\n";
-	exit 1;
-}
-
-sub parseparamlist($) {
-	my ($list) = @_;
-	$list =~ s/^\s*//;
-	$list =~ s/\s*$//;
-	if($list eq "") {
-		return ();
-	}
-	return split(/\s*,\s*/, $list);
-}
-
-sub parseparam($) {
-	my ($p) = @_;
-	if($p !~ /^(\S*) (\S*)$/) {
-		print STDERR "$ARGV:$.: malformed parameter: $p\n";
-		$errors = 1;
-		return ("xx", "int");
-	}
-	return ($1, $2);
-}
-
-my $package = "";
-my $text = "";
-my $dynimports = "";
-my $linknames = "";
-my @vars = ();
-while(<>) {
-	chomp;
-	s/\s+/ /g;
-	s/^\s+//;
-	s/\s+$//;
-	$package = $1 if !$package && /^package (\S+)$/;
-	my $nonblock = /^\/\/sysnb /;
-	next if !/^\/\/sys / && !$nonblock;
-
-	# Line must be of the form
-	#	func Open(path string, mode int, perm int) (fd int, err error)
-	# Split into name, in params, out params.
-	if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$/) {
-		print STDERR "$ARGV:$.: malformed //sys declaration\n";
-		$errors = 1;
-		next;
-	}
-	my ($nb, $func, $in, $out, $modname, $sysname) = ($1, $2, $3, $4, $5, $6);
-
-	# Split argument lists on comma.
-	my @in = parseparamlist($in);
-	my @out = parseparamlist($out);
-
-	# So file name.
-	if($modname eq "") {
-		$modname = "libc";
-	}
-
-	# System call name.
-	if($sysname eq "") {
-		$sysname = "$func";
-	}
-
-	# System call pointer variable name.
-	my $sysvarname = "proc$sysname";
-
-	my $strconvfunc = "BytePtrFromString";
-	my $strconvtype = "*byte";
-
-	$sysname =~ y/A-Z/a-z/; # All libc functions are lowercase.
-
-	# Runtime import of function to allow cross-platform builds.
-	$dynimports .= "//go:cgo_import_dynamic libc_${sysname} ${sysname} \"$modname.so\"\n";
-	# Link symbol to proc address variable.
-	$linknames .= "//go:linkname ${sysvarname} libc_${sysname}\n";
-	# Library proc address variable.
-	push @vars, $sysvarname;
-
-	# Go function header.
-	$out = join(', ', @out);
-	if($out ne "") {
-		$out = " ($out)";
-	}
-	if($text ne "") {
-		$text .= "\n"
-	}
-	$text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out;
-
-	# Check if err return available
-	my $errvar = "";
-	foreach my $p (@out) {
-		my ($name, $type) = parseparam($p);
-		if($type eq "error") {
-			$errvar = $name;
-			last;
-		}
-	}
-
-	# Prepare arguments to Syscall.
-	my @args = ();
-	my $n = 0;
-	foreach my $p (@in) {
-		my ($name, $type) = parseparam($p);
-		if($type =~ /^\*/) {
-			push @args, "uintptr(unsafe.Pointer($name))";
-		} elsif($type eq "string" && $errvar ne "") {
-			$text .= "\tvar _p$n $strconvtype\n";
-			$text .= "\t_p$n, $errvar = $strconvfunc($name)\n";
-			$text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
-			push @args, "uintptr(unsafe.Pointer(_p$n))";
-			$n++;
-		} elsif($type eq "string") {
-			print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
-			$text .= "\tvar _p$n $strconvtype\n";
-			$text .= "\t_p$n, _ = $strconvfunc($name)\n";
-			push @args, "uintptr(unsafe.Pointer(_p$n))";
-			$n++;
-		} elsif($type =~ /^\[\](.*)/) {
-			# Convert slice into pointer, length.
-			# Have to be careful not to take address of &a[0] if len == 0:
-			# pass nil in that case.
-			$text .= "\tvar _p$n *$1\n";
-			$text .= "\tif len($name) > 0 {\n\t\t_p$n = \&$name\[0]\n\t}\n";
-			push @args, "uintptr(unsafe.Pointer(_p$n))", "uintptr(len($name))";
-			$n++;
-		} elsif($type eq "int64" && $_32bit ne "") {
-			if($_32bit eq "big-endian") {
-				push @args, "uintptr($name >> 32)", "uintptr($name)";
-			} else {
-				push @args, "uintptr($name)", "uintptr($name >> 32)";
-			}
-		} elsif($type eq "bool") {
- 			$text .= "\tvar _p$n uint32\n";
-			$text .= "\tif $name {\n\t\t_p$n = 1\n\t} else {\n\t\t_p$n = 0\n\t}\n";
-			push @args, "uintptr(_p$n)";
-			$n++;
-		} else {
-			push @args, "uintptr($name)";
-		}
-	}
-	my $nargs = @args;
-
-	# Determine which form to use; pad args with zeros.
-	my $asm = "sysvicall6";
-	if ($nonblock) {
-		$asm = "rawSysvicall6";
-	}
-	if(@args <= 6) {
-		while(@args < 6) {
-			push @args, "0";
-		}
-	} else {
-		print STDERR "$ARGV:$.: too many arguments to system call\n";
-	}
-
-	# Actual call.
-	my $args = join(', ', @args);
-	my $call = "$asm(uintptr(unsafe.Pointer(&$sysvarname)), $nargs, $args)";
-
-	# Assign return values.
-	my $body = "";
-	my $failexpr = "";
-	my @ret = ("_", "_", "_");
-	my @pout= ();
-	my $do_errno = 0;
-	for(my $i=0; $i<@out; $i++) {
-		my $p = $out[$i];
-		my ($name, $type) = parseparam($p);
-		my $reg = "";
-		if($name eq "err") {
-			$reg = "e1";
-			$ret[2] = $reg;
-			$do_errno = 1;
-		} else {
-			$reg = sprintf("r%d", $i);
-			$ret[$i] = $reg;
-		}
-		if($type eq "bool") {
-			$reg = "$reg != 0";
-		}
-		if($type eq "int64" && $_32bit ne "") {
-			# 64-bit number in r1:r0 or r0:r1.
-			if($i+2 > @out) {
-				print STDERR "$ARGV:$.: not enough registers for int64 return\n";
-			}
-			if($_32bit eq "big-endian") {
-				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
-			} else {
-				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
-			}
-			$ret[$i] = sprintf("r%d", $i);
-			$ret[$i+1] = sprintf("r%d", $i+1);
-		}
-		if($reg ne "e1") {
-			$body .= "\t$name = $type($reg)\n";
-		}
-	}
-	if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") {
-		$text .= "\t$call\n";
-	} else {
-		$text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
-	}
-	$text .= $body;
-
-	if ($do_errno) {
-		$text .= "\tif e1 != 0 {\n";
-		$text .= "\t\terr = e1\n";
-		$text .= "\t}\n";
-	}
-	$text .= "\treturn\n";
-	$text .= "}\n";
-}
-
-if($errors) {
-	exit 1;
-}
-
-print <<EOF;
-// $cmdline
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build $tags
-
-package $package
-
-import (
-	"syscall"
-	"unsafe"
-)
-EOF
-
-print "import \"golang.org/x/sys/unix\"\n" if $package ne "unix";
-
-my $vardecls = "\t" . join(",\n\t", @vars);
-$vardecls .= " syscallFunc";
-
-chomp($_=<<EOF);
-
-$dynimports
-$linknames
-var (
-$vardecls
-)
-
-$text
-EOF
-print $_;
-exit 0;
diff --git a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl
deleted file mode 100755
index be67afa4..00000000
--- a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl
+++ /dev/null
@@ -1,264 +0,0 @@
-#!/usr/bin/env perl
-
-# Copyright 2011 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-#
-# Parse the header files for OpenBSD and generate a Go usable sysctl MIB.
-#
-# Build a MIB with each entry being an array containing the level, type and
-# a hash that will contain additional entries if the current entry is a node.
-# We then walk this MIB and create a flattened sysctl name to OID hash.
-#
-
-use strict;
-
-if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
-	print STDERR "GOARCH or GOOS not defined in environment\n";
-	exit 1;
-}
-
-my $debug = 0;
-my %ctls = ();
-
-my @headers = qw (
-	sys/sysctl.h
-	sys/socket.h
-	sys/tty.h
-	sys/malloc.h
-	sys/mount.h
-	sys/namei.h
-	sys/sem.h
-	sys/shm.h
-	sys/vmmeter.h
-	uvm/uvm_param.h
-	uvm/uvm_swap_encrypt.h
-	ddb/db_var.h
-	net/if.h
-	net/if_pfsync.h
-	net/pipex.h
-	netinet/in.h
-	netinet/icmp_var.h
-	netinet/igmp_var.h
-	netinet/ip_ah.h
-	netinet/ip_carp.h
-	netinet/ip_divert.h
-	netinet/ip_esp.h
-	netinet/ip_ether.h
-	netinet/ip_gre.h
-	netinet/ip_ipcomp.h
-	netinet/ip_ipip.h
-	netinet/pim_var.h
-	netinet/tcp_var.h
-	netinet/udp_var.h
-	netinet6/in6.h
-	netinet6/ip6_divert.h
-	netinet6/pim6_var.h
-	netinet/icmp6.h
-	netmpls/mpls.h
-);
-
-my @ctls = qw (
-	kern
-	vm
-	fs
-	net
-	#debug				# Special handling required
-	hw
-	#machdep			# Arch specific
-	user
-	ddb
-	#vfs				# Special handling required
-	fs.posix
-	kern.forkstat
-	kern.intrcnt
-	kern.malloc
-	kern.nchstats
-	kern.seminfo
-	kern.shminfo
-	kern.timecounter
-	kern.tty
-	kern.watchdog
-	net.bpf
-	net.ifq
-	net.inet
-	net.inet.ah
-	net.inet.carp
-	net.inet.divert
-	net.inet.esp
-	net.inet.etherip
-	net.inet.gre
-	net.inet.icmp
-	net.inet.igmp
-	net.inet.ip
-	net.inet.ip.ifq
-	net.inet.ipcomp
-	net.inet.ipip
-	net.inet.mobileip
-	net.inet.pfsync
-	net.inet.pim
-	net.inet.tcp
-	net.inet.udp
-	net.inet6
-	net.inet6.divert
-	net.inet6.ip6
-	net.inet6.icmp6
-	net.inet6.pim6
-	net.inet6.tcp6
-	net.inet6.udp6
-	net.mpls
-	net.mpls.ifq
-	net.key
-	net.pflow
-	net.pfsync
-	net.pipex
-	net.rt
-	vm.swapencrypt
-	#vfsgenctl			# Special handling required
-);
-
-# Node name "fixups"
-my %ctl_map = (
-	"ipproto" => "net.inet",
-	"net.inet.ipproto" => "net.inet",
-	"net.inet6.ipv6proto" => "net.inet6",
-	"net.inet6.ipv6" => "net.inet6.ip6",
-	"net.inet.icmpv6" => "net.inet6.icmp6",
-	"net.inet6.divert6" => "net.inet6.divert",
-	"net.inet6.tcp6" => "net.inet.tcp",
-	"net.inet6.udp6" => "net.inet.udp",
-	"mpls" => "net.mpls",
-	"swpenc" => "vm.swapencrypt"
-);
-
-# Node mappings
-my %node_map = (
-	"net.inet.ip.ifq" => "net.ifq",
-	"net.inet.pfsync" => "net.pfsync",
-	"net.mpls.ifq" => "net.ifq"
-);
-
-my $ctlname;
-my %mib = ();
-my %sysctl = ();
-my $node;
-
-sub debug() {
-	print STDERR "$_[0]\n" if $debug;
-}
-
-# Walk the MIB and build a sysctl name to OID mapping.
-sub build_sysctl() {
-	my ($node, $name, $oid) = @_;
-	my %node = %{$node};
-	my @oid = @{$oid};
-
-	foreach my $key (sort keys %node) {
-		my @node = @{$node{$key}};
-		my $nodename = $name.($name ne '' ? '.' : '').$key;
-		my @nodeoid = (@oid, $node[0]);
-		if ($node[1] eq 'CTLTYPE_NODE') {
-			if (exists $node_map{$nodename}) {
-				$node = \%mib;
-				$ctlname = $node_map{$nodename};
-				foreach my $part (split /\./, $ctlname) {
-					$node = \%{@{$$node{$part}}[2]};
-				}
-			} else {
-				$node = $node[2];
-			}
-			&build_sysctl($node, $nodename, \@nodeoid);
-		} elsif ($node[1] ne '') {
-			$sysctl{$nodename} = \@nodeoid;
-		}
-	}
-}
-
-foreach my $ctl (@ctls) {
-	$ctls{$ctl} = $ctl;
-}
-
-# Build MIB
-foreach my $header (@headers) {
-	&debug("Processing $header...");
-	open HEADER, "/usr/include/$header" ||
-	    print STDERR "Failed to open $header\n";
-	while (<HEADER>) {
-		if ($_ =~ /^#define\s+(CTL_NAMES)\s+{/ ||
-		    $_ =~ /^#define\s+(CTL_(.*)_NAMES)\s+{/ ||
-		    $_ =~ /^#define\s+((.*)CTL_NAMES)\s+{/) {
-			if ($1 eq 'CTL_NAMES') {
-				# Top level.
-				$node = \%mib;
-			} else {
-				# Node.
-				my $nodename = lc($2);
-				if ($header =~ /^netinet\//) {
-					$ctlname = "net.inet.$nodename";
-				} elsif ($header =~ /^netinet6\//) {
-					$ctlname = "net.inet6.$nodename";
-				} elsif ($header =~ /^net\//) {
-					$ctlname = "net.$nodename";
-				} else {
-					$ctlname = "$nodename";
-					$ctlname =~ s/^(fs|net|kern)_/$1\./;
-				}
-				if (exists $ctl_map{$ctlname}) {
-					$ctlname = $ctl_map{$ctlname};
-				}
-				if (not exists $ctls{$ctlname}) {
-					&debug("Ignoring $ctlname...");
-					next;
-				}
-
-				# Walk down from the top of the MIB.
-				$node = \%mib;
-				foreach my $part (split /\./, $ctlname) {
-					if (not exists $$node{$part}) {
-						&debug("Missing node $part");
-						$$node{$part} = [ 0, '', {} ];
-					}
-					$node = \%{@{$$node{$part}}[2]};
-				}
-			}
-
-			# Populate current node with entries.
-			my $i = -1;
-			while (defined($_) && $_ !~ /^}/) {
-				$_ = <HEADER>;
-				$i++ if $_ =~ /{.*}/;
-				next if $_ !~ /{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}/;
-				$$node{$1} = [ $i, $2, {} ];
-			}
-		}
-	}
-	close HEADER;
-}
-
-&build_sysctl(\%mib, "", []);
-
-print <<EOF;
-// mksysctl_openbsd.pl
-// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-
-// +build $ENV{'GOARCH'},$ENV{'GOOS'}
-
-package unix;
-
-type mibentry struct {
-	ctlname string
-	ctloid []_C_int
-}
-
-var sysctlMib = []mibentry {
-EOF
-
-foreach my $name (sort keys %sysctl) {
-	my @oid = @{$sysctl{$name}};
-	print "\t{ \"$name\", []_C_int{ ", join(', ', @oid), " } }, \n";
-}
-
-print <<EOF;
-}
-EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_darwin.pl b/vendor/golang.org/x/sys/unix/mksysnum_darwin.pl
deleted file mode 100755
index 5453c53b..00000000
--- a/vendor/golang.org/x/sys/unix/mksysnum_darwin.pl
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-#
-# Generate system call table for Darwin from sys/syscall.h
-
-use strict;
-
-if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
-	print STDERR "GOARCH or GOOS not defined in environment\n";
-	exit 1;
-}
-
-my $command = "mksysnum_darwin.pl " . join(' ', @ARGV);
-
-print <<EOF;
-// $command
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build $ENV{'GOARCH'},$ENV{'GOOS'}
-
-package unix
-
-const (
-EOF
-
-while(<>){
-	if(/^#define\s+SYS_(\w+)\s+([0-9]+)/){
-		my $name = $1;
-		my $num = $2;
-		$name =~ y/a-z/A-Z/;
-		print "	SYS_$name = $num;"
-	}
-}
-
-print <<EOF;
-)
-EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl b/vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl
deleted file mode 100755
index 6804f412..00000000
--- a/vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-#
-# Generate system call table for DragonFly from master list
-# (for example, /usr/src/sys/kern/syscalls.master).
-
-use strict;
-
-if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
-	print STDERR "GOARCH or GOOS not defined in environment\n";
-	exit 1;
-}
-
-my $command = "mksysnum_dragonfly.pl " . join(' ', @ARGV);
-
-print <<EOF;
-// $command
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build $ENV{'GOARCH'},$ENV{'GOOS'}
-
-package unix
-
-const (
-EOF
-
-while(<>){
-	if(/^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$/){
-		my $num = $1;
-		my $proto = $2;
-		my $name = "SYS_$3";
-		$name =~ y/a-z/A-Z/;
-
-		# There are multiple entries for enosys and nosys, so comment them out.
-		if($name =~ /^SYS_E?NOSYS$/){
-			$name = "// $name";
-		}
-		if($name eq 'SYS_SYS_EXIT'){
-			$name = 'SYS_EXIT';
-		}
-
-		print "	$name = $num;  // $proto\n";
-	}
-}
-
-print <<EOF;
-)
-EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl b/vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl
deleted file mode 100755
index a0a22bf5..00000000
--- a/vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-#
-# Generate system call table for FreeBSD from master list
-# (for example, /usr/src/sys/kern/syscalls.master).
-
-use strict;
-
-if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
-	print STDERR "GOARCH or GOOS not defined in environment\n";
-	exit 1;
-}
-
-my $command = "mksysnum_freebsd.pl " . join(' ', @ARGV);
-
-print <<EOF;
-// $command
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build $ENV{'GOARCH'},$ENV{'GOOS'}
-
-package unix
-
-const (
-EOF
-
-while(<>){
-	if(/^([0-9]+)\s+\S+\s+STD\s+({ \S+\s+(\w+).*)$/){
-		my $num = $1;
-		my $proto = $2;
-		my $name = "SYS_$3";
-		$name =~ y/a-z/A-Z/;
-
-		# There are multiple entries for enosys and nosys, so comment them out.
-		if($name =~ /^SYS_E?NOSYS$/){
-			$name = "// $name";
-		}
-		if($name eq 'SYS_SYS_EXIT'){
-			$name = 'SYS_EXIT';
-		}
-
-		print "	$name = $num;  // $proto\n";
-	}
-}
-
-print <<EOF;
-)
-EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl b/vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
deleted file mode 100755
index 85988b14..00000000
--- a/vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-#
-# Generate system call table for OpenBSD from master list
-# (for example, /usr/src/sys/kern/syscalls.master).
-
-use strict;
-
-if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
-	print STDERR "GOARCH or GOOS not defined in environment\n";
-	exit 1;
-}
-
-my $command = "mksysnum_netbsd.pl " . join(' ', @ARGV);
-
-print <<EOF;
-// $command
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build $ENV{'GOARCH'},$ENV{'GOOS'}
-
-package unix
-
-const (
-EOF
-
-my $line = '';
-while(<>){
-	if($line =~ /^(.*)\\$/) {
-		# Handle continuation
-		$line = $1;
-		$_ =~ s/^\s+//;
-		$line .= $_;
-	} else {
-		# New line
-		$line = $_;
-	}
-	next if $line =~ /\\$/;
-	if($line =~ /^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$/) {
-		my $num = $1;
-		my $proto = $6;
-		my $compat = $8;
-		my $name = "$7_$9";
-
-		$name = "$7_$11" if $11 ne '';
-		$name =~ y/a-z/A-Z/;
-
-		if($compat eq '' || $compat eq '13' || $compat eq '30' || $compat eq '50') {
-			print "	$name = $num;  // $proto\n";
-		}
-	}
-}
-
-print <<EOF;
-)
-EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl b/vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl
deleted file mode 100755
index 84edf60c..00000000
--- a/vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-#
-# Generate system call table for OpenBSD from master list
-# (for example, /usr/src/sys/kern/syscalls.master).
-
-use strict;
-
-if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
-	print STDERR "GOARCH or GOOS not defined in environment\n";
-	exit 1;
-}
-
-my $command = "mksysnum_openbsd.pl " . join(' ', @ARGV);
-
-print <<EOF;
-// $command
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build $ENV{'GOARCH'},$ENV{'GOOS'}
-
-package unix
-
-const (
-EOF
-
-while(<>){
-	if(/^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$/){
-		my $num = $1;
-		my $proto = $3;
-		my $name = $4;
-		$name =~ y/a-z/A-Z/;
-
-		# There are multiple entries for enosys and nosys, so comment them out.
-		if($name =~ /^SYS_E?NOSYS$/){
-			$name = "// $name";
-		}
-		if($name eq 'SYS_SYS_EXIT'){
-			$name = 'SYS_EXIT';
-		}
-
-		print "	$name = $num;  // $proto\n";
-	}
-}
-
-print <<EOF;
-)
-EOF
diff --git a/vendor/golang.org/x/text/language/Makefile b/vendor/golang.org/x/text/language/Makefile
deleted file mode 100644
index 79f00578..00000000
--- a/vendor/golang.org/x/text/language/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2013 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-CLEANFILES+=maketables
-
-maketables: maketables.go
-	go build $^
-
-tables:	maketables
-	./maketables > tables.go
-	gofmt -w -s tables.go
-
-# Build (but do not run) maketables during testing,
-# just to make sure it still compiles.
-testshort: maketables
diff --git a/vendor/google.golang.org/grpc/.please-update b/vendor/google.golang.org/grpc/.please-update
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/google.golang.org/grpc/.travis.yml b/vendor/google.golang.org/grpc/.travis.yml
deleted file mode 100644
index 13af5396..00000000
--- a/vendor/google.golang.org/grpc/.travis.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-language: go
-
-go:
-  - 1.6.x
-  - 1.7.x
-  - 1.8.x
-  - 1.9.x
-
-matrix:
-  include:
-  - go: 1.9.x
-    env: RUN386=1
-
-go_import_path: google.golang.org/grpc
-
-before_install:
-  - if [[ "$TRAVIS_GO_VERSION" = 1.9* && "$GOARCH" != "386" ]]; then ./vet.sh -install || exit 1; fi
-
-script:
-  - if [[ -n "$RUN386" ]]; then export GOARCH=386; fi
-  - if [[ "$TRAVIS_GO_VERSION" = 1.9* && "$GOARCH" != "386" ]]; then ./vet.sh || exit 1; fi
-  - make test || exit 1
-  - if [[ "$GOARCH" != "386" ]]; then make testrace; fi
diff --git a/vendor/google.golang.org/grpc/CONTRIBUTING.md b/vendor/google.golang.org/grpc/CONTRIBUTING.md
deleted file mode 100644
index 8ec6c957..00000000
--- a/vendor/google.golang.org/grpc/CONTRIBUTING.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# How to contribute
-
-We definitely welcome your patches and contributions to gRPC!
-
-If you are new to github, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/)
-
-## Legal requirements
-
-In order to protect both you and ourselves, you will need to sign the
-[Contributor License Agreement](https://identity.linuxfoundation.org/projects/cncf).
-
-## Guidelines for Pull Requests
-How to get your contributions merged smoothly and quickly.
- 
-- Create **small PRs** that are narrowly focused on **addressing a single concern**. We often times receive PRs that are trying to fix several things at a time, but only one fix is considered acceptable, nothing gets merged and both author's & review's time is wasted. Create more PRs to address different concerns and everyone will be happy.
- 
-- For speculative changes, consider opening an issue and discussing it first. If you are suggesting a behavioral or API change, consider starting with a [gRFC proposal](https://github.com/grpc/proposal). 
- 
-- Provide a good **PR description** as a record of **what** change is being made and **why** it was made. Link to a github issue if it exists.
- 
-- Don't fix code style and formatting unless you are already changing that line to address an issue. PRs with irrelevant changes won't be merged. If you do want to fix formatting or style, do that in a separate PR.
- 
-- Unless your PR is trivial, you should expect there will be reviewer comments that you'll need to address before merging. We expect you to be reasonably responsive to those comments, otherwise the PR will be closed after 2-3 weeks of inactivity.
- 
-- Maintain **clean commit history** and use **meaningful commit messages**. PRs with messy commit history are difficult to review and won't be merged. Use `rebase -i upstream/master` to curate your commit history and/or to bring in latest changes from master (but avoid rebasing in the middle of a code review).
- 
-- Keep your PR up to date with upstream/master (if there are merge conflicts, we can't really merge your change).
- 
-- **All tests need to be passing** before your change can be merged. We recommend you **run tests locally** before creating your PR to catch breakages early on.
-
-- Exceptions to the rules can be made if there's a compelling reason for doing so.
- 
diff --git a/vendor/google.golang.org/grpc/Makefile b/vendor/google.golang.org/grpc/Makefile
deleted file mode 100644
index c4453437..00000000
--- a/vendor/google.golang.org/grpc/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-all: test testrace
-
-deps:
-	go get -d -v google.golang.org/grpc/...
-
-updatedeps:
-	go get -d -v -u -f google.golang.org/grpc/...
-
-testdeps:
-	go get -d -v -t google.golang.org/grpc/...
-
-updatetestdeps:
-	go get -d -v -t -u -f google.golang.org/grpc/...
-
-build: deps
-	go build google.golang.org/grpc/...
-
-proto:
-	@ if ! which protoc > /dev/null; then \
-		echo "error: protoc not installed" >&2; \
-		exit 1; \
-	fi
-	go generate google.golang.org/grpc/...
-
-test: testdeps
-	go test -cpu 1,4 -timeout 5m google.golang.org/grpc/...
-
-testrace: testdeps
-	go test -race -cpu 1,4 -timeout 7m google.golang.org/grpc/...
-
-clean:
-	go clean -i google.golang.org/grpc/...
-
-.PHONY: \
-	all \
-	deps \
-	updatedeps \
-	testdeps \
-	updatetestdeps \
-	build \
-	proto \
-	test \
-	testrace \
-	clean \
-	coverage
diff --git a/vendor/google.golang.org/grpc/README.md b/vendor/google.golang.org/grpc/README.md
deleted file mode 100644
index 118327bb..00000000
--- a/vendor/google.golang.org/grpc/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# gRPC-Go
-
-[![Build Status](https://travis-ci.org/grpc/grpc-go.svg)](https://travis-ci.org/grpc/grpc-go) [![GoDoc](https://godoc.org/google.golang.org/grpc?status.svg)](https://godoc.org/google.golang.org/grpc) [![GoReportCard](https://goreportcard.com/badge/grpc/grpc-go)](https://goreportcard.com/report/github.com/grpc/grpc-go)
-
-The Go implementation of [gRPC](https://grpc.io/): A high performance, open source, general RPC framework that puts mobile and HTTP/2 first. For more information see the [gRPC Quick Start: Go](https://grpc.io/docs/quickstart/go.html) guide.
-
-Installation
-------------
-
-To install this package, you need to install Go and setup your Go workspace on your computer. The simplest way to install the library is to run:
-
-```
-$ go get -u google.golang.org/grpc
-```
-
-Prerequisites
--------------
-
-This requires Go 1.6 or later.  Go 1.7 will be required as of the next gRPC-Go
-release (1.8).
-
-Constraints
------------
-The grpc package should only depend on standard Go packages and a small number of exceptions. If your contribution introduces new dependencies which are NOT in the [list](http://godoc.org/google.golang.org/grpc?imports), you need a discussion with gRPC-Go authors and consultants.
-
-Documentation
--------------
-See [API documentation](https://godoc.org/google.golang.org/grpc) for package and API descriptions and find examples in the [examples directory](examples/).
-
-Performance
------------
-See the current benchmarks for some of the languages supported in [this dashboard](https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5652536396611584&widget=490377658&container=1286539696).
-
-Status
-------
-General Availability [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages).
-
-FAQ
----
-
-#### Compiling error, undefined: grpc.SupportPackageIsVersion
-
-Please update proto package, gRPC package and rebuild the proto files:
- - `go get -u github.com/golang/protobuf/{proto,protoc-gen-go}`
- - `go get -u google.golang.org/grpc`
- - `protoc --go_out=plugins=grpc:. *.proto`
diff --git a/vendor/google.golang.org/grpc/codegen.sh b/vendor/google.golang.org/grpc/codegen.sh
deleted file mode 100755
index 4cdc6ba7..00000000
--- a/vendor/google.golang.org/grpc/codegen.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env bash
-
-# This script serves as an example to demonstrate how to generate the gRPC-Go
-# interface and the related messages from .proto file.
-#
-# It assumes the installation of i) Google proto buffer compiler at
-# https://github.com/google/protobuf (after v2.6.1) and ii) the Go codegen
-# plugin at https://github.com/golang/protobuf (after 2015-02-20). If you have
-# not, please install them first.
-#
-# We recommend running this script at $GOPATH/src.
-#
-# If this is not what you need, feel free to make your own scripts. Again, this
-# script is for demonstration purpose.
-#
-proto=$1
-protoc --go_out=plugins=grpc:. $proto
diff --git a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.proto b/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.proto
deleted file mode 100644
index 42d99c10..00000000
--- a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.proto
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright 2016 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto3";
-
-package grpc.lb.v1;
-option go_package = "google.golang.org/grpc/grpclb/grpc_lb_v1/messages";
-
-message Duration {
-  // Signed seconds of the span of time. Must be from -315,576,000,000
-  // to +315,576,000,000 inclusive.
-  int64 seconds = 1;
-
-  // Signed fractions of a second at nanosecond resolution of the span
-  // of time. Durations less than one second are represented with a 0
-  // `seconds` field and a positive or negative `nanos` field. For durations
-  // of one second or more, a non-zero value for the `nanos` field must be
-  // of the same sign as the `seconds` field. Must be from -999,999,999
-  // to +999,999,999 inclusive.
-  int32 nanos = 2;
-}
-
-message Timestamp {
-  // Represents seconds of UTC time since Unix epoch
-  // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
-  // 9999-12-31T23:59:59Z inclusive.
-  int64 seconds = 1;
-
-  // Non-negative fractions of a second at nanosecond resolution. Negative
-  // second values with fractions must still have non-negative nanos values
-  // that count forward in time. Must be from 0 to 999,999,999
-  // inclusive.
-  int32 nanos = 2;
-}
-
-message LoadBalanceRequest {
-  oneof load_balance_request_type {
-    // This message should be sent on the first request to the load balancer.
-    InitialLoadBalanceRequest initial_request = 1;
-
-    // The client stats should be periodically reported to the load balancer
-    // based on the duration defined in the InitialLoadBalanceResponse.
-    ClientStats client_stats = 2;
-  }
-}
-
-message InitialLoadBalanceRequest {
-  // Name of load balanced service (IE, balancer.service.com)
-  // length should be less than 256 bytes.
-  string name = 1;
-}
-
-// Contains client level statistics that are useful to load balancing. Each
-// count except the timestamp should be reset to zero after reporting the stats.
-message ClientStats {
-  // The timestamp of generating the report.
-  Timestamp timestamp = 1;
-
-  // The total number of RPCs that started.
-  int64 num_calls_started = 2;
-
-  // The total number of RPCs that finished.
-  int64 num_calls_finished = 3;
-
-  // The total number of RPCs that were dropped by the client because of rate
-  // limiting.
-  int64 num_calls_finished_with_drop_for_rate_limiting = 4;
-
-  // The total number of RPCs that were dropped by the client because of load
-  // balancing.
-  int64 num_calls_finished_with_drop_for_load_balancing = 5;
-
-  // The total number of RPCs that failed to reach a server except dropped RPCs.
-  int64 num_calls_finished_with_client_failed_to_send = 6;
-
-  // The total number of RPCs that finished and are known to have been received
-  // by a server.
-  int64 num_calls_finished_known_received = 7;
-}
-
-message LoadBalanceResponse {
-  oneof load_balance_response_type {
-    // This message should be sent on the first response to the client.
-    InitialLoadBalanceResponse initial_response = 1;
-
-    // Contains the list of servers selected by the load balancer. The client
-    // should send requests to these servers in the specified order.
-    ServerList server_list = 2;
-  }
-}
-
-message InitialLoadBalanceResponse {
-  // This is an application layer redirect that indicates the client should use
-  // the specified server for load balancing. When this field is non-empty in
-  // the response, the client should open a separate connection to the
-  // load_balancer_delegate and call the BalanceLoad method. Its length should
-  // be less than 64 bytes.
-  string load_balancer_delegate = 1;
-
-  // This interval defines how often the client should send the client stats
-  // to the load balancer. Stats should only be reported when the duration is
-  // positive.
-  Duration client_stats_report_interval = 2;
-}
-
-message ServerList {
-  // Contains a list of servers selected by the load balancer. The list will
-  // be updated when server resolutions change or as needed to balance load
-  // across more servers. The client should consume the server list in order
-  // unless instructed otherwise via the client_config.
-  repeated Server servers = 1;
-
-  // Was google.protobuf.Duration expiration_interval.
-  reserved 3;
-}
-
-// Contains server information. When none of the [drop_for_*] fields are true,
-// use the other fields. When drop_for_rate_limiting is true, ignore all other
-// fields. Use drop_for_load_balancing only when it is true and
-// drop_for_rate_limiting is false.
-message Server {
-  // A resolved address for the server, serialized in network-byte-order. It may
-  // either be an IPv4 or IPv6 address.
-  bytes ip_address = 1;
-
-  // A resolved port number for the server.
-  int32 port = 2;
-
-  // An opaque but printable token given to the frontend for each pick. All
-  // frontend requests for that pick must include the token in its initial
-  // metadata. The token is used by the backend to verify the request and to
-  // allow the backend to report load to the gRPC LB system.
-  //
-  // Its length is variable but less than 50 bytes.
-  string load_balance_token = 3;
-
-  // Indicates whether this particular request should be dropped by the client
-  // for rate limiting.
-  bool drop_for_rate_limiting = 4;
-
-  // Indicates whether this particular request should be dropped by the client
-  // for load balancing.
-  bool drop_for_load_balancing = 5;
-}
diff --git a/vendor/google.golang.org/grpc/vet.sh b/vendor/google.golang.org/grpc/vet.sh
deleted file mode 100755
index 2ad94fed..00000000
--- a/vendor/google.golang.org/grpc/vet.sh
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/bash
-
-set -ex  # Exit on error; debugging enabled.
-set -o pipefail  # Fail a pipe if any sub-command fails.
-
-die() {
-  echo "$@" >&2
-  exit 1
-}
-
-PATH="$GOPATH/bin:$GOROOT/bin:$PATH"
-
-# Check proto in manual runs or cron runs.
-if [[ "$TRAVIS" != "true" || "$TRAVIS_EVENT_TYPE" = "cron" ]]; then
-  check_proto="true"
-fi
-
-if [ "$1" = "-install" ]; then
-  go get -d \
-    google.golang.org/grpc/...
-  go get -u \
-    github.com/golang/lint/golint \
-    golang.org/x/tools/cmd/goimports \
-    honnef.co/go/tools/cmd/staticcheck \
-    github.com/client9/misspell/cmd/misspell \
-    github.com/golang/protobuf/protoc-gen-go
-  if [[ "$check_proto" = "true" ]]; then
-    if [[ "$TRAVIS" = "true" ]]; then
-      PROTOBUF_VERSION=3.3.0
-      PROTOC_FILENAME=protoc-${PROTOBUF_VERSION}-linux-x86_64.zip
-      pushd /home/travis
-      wget https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/${PROTOC_FILENAME}
-      unzip ${PROTOC_FILENAME}
-      bin/protoc --version
-      popd
-    elif ! which protoc > /dev/null; then
-      die "Please install protoc into your path"
-    fi
-  fi
-  exit 0
-elif [[ "$#" -ne 0 ]]; then
-  die "Unknown argument(s): $*"
-fi
-
-# TODO: Remove this check and the mangling below once "context" is imported
-# directly.
-if git status --porcelain | read; then
-  die "Uncommitted or untracked files found; commit changes first"
-fi
-
-git ls-files "*.go" | xargs grep -L "\(Copyright [0-9]\{4,\} gRPC authors\)\|DO NOT EDIT" 2>&1 | tee /dev/stderr | (! read)
-gofmt -s -d -l . 2>&1 | tee /dev/stderr | (! read)
-goimports -l . 2>&1 | tee /dev/stderr | (! read)
-golint ./... 2>&1 | (grep -vE "(_mock|\.pb)\.go:" || true) | tee /dev/stderr | (! read)
-
-# Undo any edits made by this script.
-cleanup() {
-  git reset --hard HEAD
-}
-trap cleanup EXIT
-
-# Rewrite golang.org/x/net/context -> context imports (see grpc/grpc-go#1484).
-# TODO: Remove this mangling once "context" is imported directly (grpc/grpc-go#711).
-git ls-files "*.go" | xargs sed -i 's:"golang.org/x/net/context":"context":'
-set +o pipefail
-# TODO: Stop filtering pb.go files once golang/protobuf#214 is fixed.
-go tool vet -all . 2>&1 | grep -vE '(clientconn|transport\/transport_test).go:.*cancel (function|var)' | grep -vF '.pb.go:' | tee /dev/stderr | (! read)
-set -o pipefail
-git reset --hard HEAD
-
-if [[ "$check_proto" = "true" ]]; then
-  PATH="/home/travis/bin:$PATH" make proto && \
-    git status --porcelain 2>&1 | (! read) || \
-    (git status; git --no-pager diff; exit 1)
-fi
-
-# TODO(menghanl): fix errors in transport_test.
-staticcheck -ignore '
-google.golang.org/grpc/transport/transport_test.go:SA2002
-google.golang.org/grpc/benchmark/benchmain/main.go:SA1019
-google.golang.org/grpc/stats/stats_test.go:SA1019
-google.golang.org/grpc/test/end2end_test.go:SA1019
-' ./...
-misspell -error .
diff --git a/vendor/gopkg.in/fatih/set.v0/.travis.yml b/vendor/gopkg.in/fatih/set.v0/.travis.yml
deleted file mode 100644
index b05e4c53..00000000
--- a/vendor/gopkg.in/fatih/set.v0/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: go
-go: 1.2
-
diff --git a/vendor/gopkg.in/fatih/set.v0/README.md b/vendor/gopkg.in/fatih/set.v0/README.md
deleted file mode 100644
index 58106299..00000000
--- a/vendor/gopkg.in/fatih/set.v0/README.md
+++ /dev/null
@@ -1,245 +0,0 @@
-# Set [![GoDoc](https://godoc.org/gopkg.in/fatih/set.v1?status.png)](https://godoc.org/gopkg.in/fatih/set.v1) [![Build Status](https://travis-ci.org/fatih/set.png)](https://travis-ci.org/fatih/set)
-
-Set is a basic and simple, hash-based, **Set** data structure implementation
-in Go (Golang).
-
-Set provides both threadsafe and non-threadsafe implementations of a generic
-set data structure. The thread safety encompasses all operations on one set.
-Operations on multiple sets are consistent in that the elements of each set
-used was valid at exactly one point in time between the start and the end of
-the operation. Because it's thread safe, you can use it concurrently with your
-goroutines.
-
-For usage see examples below or click on the godoc badge.
-
-## Install and Usage
-
-Install the package with:
-
-```bash
-go get gopkg.in/fatih/set.v0
-```
-
-Import it with:
-
-```go
-import "gopkg.in/fatih/set.v0"
-```
-
-and use `set` as the package name inside the code.
-
-## Examples
-
-#### Initialization of a new Set
-
-```go
-
-// create a set with zero items
-s := set.New()
-s := set.NewNonTS() // non thread-safe version
-
-// ... or with some initial values
-s := set.New("istanbul", "frankfurt", 30.123, "san francisco", 1234)
-s := set.NewNonTS("kenya", "ethiopia", "sumatra")
-
-```
-
-#### Basic Operations
-
-```go
-// add items
-s.Add("istanbul")
-s.Add("istanbul") // nothing happens if you add duplicate item
-
-// add multiple items
-s.Add("ankara", "san francisco", 3.14)
-
-// remove item
-s.Remove("frankfurt")
-s.Remove("frankfurt") // nothing happes if you remove a nonexisting item
-
-// remove multiple items
-s.Remove("barcelona", 3.14, "ankara")
-
-// removes an arbitary item and return it
-item := s.Pop()
-
-// create a new copy
-other := s.Copy()
-
-// remove all items
-s.Clear()
-
-// number of items in the set
-len := s.Size()
-
-// return a list of items
-items := s.List()
-
-// string representation of set
-fmt.Printf("set is %s", s.String())
-
-```
-
-#### Check Operations
-
-```go
-// check for set emptiness, returns true if set is empty
-s.IsEmpty()
-
-// check for a single item exist
-s.Has("istanbul")
-
-// ... or for multiple items. This will return true if all of the items exist.
-s.Has("istanbul", "san francisco", 3.14)
-
-// create two sets for the following checks...
-s := s.New("1", "2", "3", "4", "5")
-t := s.New("1", "2", "3")
-
-
-// check if they are the same
-if !s.IsEqual(t) {
-    fmt.Println("s is not equal to t")
-}
-
-// if s contains all elements of t
-if s.IsSubset(t) {
-	fmt.Println("t is a subset of s")
-}
-
-// ... or if s is a superset of t
-if t.IsSuperset(s) {
-	fmt.Println("s is a superset of t")
-}
-
-
-```
-
-#### Set Operations
-
-
-```go
-// let us initialize two sets with some values
-a := set.New("ankara", "berlin", "san francisco")
-b := set.New("frankfurt", "berlin")
-
-// creates a new set with the items in a and b combined.
-// [frankfurt, berlin, ankara, san francisco]
-c := set.Union(a, b)
-
-// contains items which is in both a and b
-// [berlin]
-c := set.Intersection(a, b)
-
-// contains items which are in a but not in b
-// [ankara, san francisco]
-c := set.Difference(a, b)
-
-// contains items which are in one of either, but not in both.
-// [frankfurt, ankara, san francisco]
-c := set.SymmetricDifference(a, b)
-
-```
-
-```go
-// like Union but saves the result back into a.
-a.Merge(b)
-
-// removes the set items which are in b from a and saves the result back into a.
-a.Separate(b)
-
-```
-
-#### Multiple Set Operations
-
-```go
-a := set.New("1", "3", "4", "5")
-b := set.New("2", "3", "4", "5")
-c := set.New("4", "5", "6", "7")
-
-// creates a new set with items in a, b and c
-// [1 2 3 4 5 6 7]
-u := set.Union(a, b, c)
-
-// creates a new set with items in a but not in b and c
-// [1]
-u := set.Difference(a, b, c)
-
-// creates a new set with items that are common to a, b and c
-// [5]
-u := set.Intersection(a, b, c)
-```
-
-#### Helper methods
-
-The Slice functions below are a convenient way to extract or convert your Set data
-into basic data types.
-
-
-```go
-// create a set of mixed types
-s := set.New("ankara", "5", "8", "san francisco", 13, 21)
-
-
-// convert s into a slice of strings (type is []string)
-// [ankara 5 8 san francisco]
-t := set.StringSlice(s)
-
-
-// u contains a slice of ints (type is []int)
-// [13, 21]
-u := set.IntSlice(s)
-
-```
-
-#### Concurrent safe usage
-
-Below is an example of a concurrent way that uses set. We call ten functions
-concurrently and wait until they are finished. It basically creates a new
-string for each goroutine and adds it to our set.
-
-```go
-package main
-
-import (
-	"fmt"
-	"github.com/fatih/set"
-	"strconv"
-	"sync"
-)
-
-func main() {
-	var wg sync.WaitGroup // this is just for waiting until all goroutines finish
-
-	// Initialize our thread safe Set
-	s := set.New()
-
-	// Add items concurrently (item1, item2, and so on)
-	for i := 0; i < 10; i++ {
-		wg.Add(1)
-		go func(i int) {
-			item := "item" + strconv.Itoa(i)
-			fmt.Println("adding", item)
-			s.Add(item)
-			wg.Done()
-		}(i)
-	}
-
-	// Wait until all concurrent calls finished and print our set
-	wg.Wait()
-	fmt.Println(s)
-}
-```
-
-## Credits
-
- * [Fatih Arslan](https://github.com/fatih)
- * [Arne Hormann](https://github.com/arnehormann)
- * [Sam Boyer](https://github.com/sdboyer)
- * [Ralph Loizzo](https://github.com/friartech)
-
-## License
-
-The MIT License (MIT) - see LICENSE.md for more details
-
diff --git a/vendor/gopkg.in/go-playground/validator.v8/.gitignore b/vendor/gopkg.in/go-playground/validator.v8/.gitignore
deleted file mode 100644
index 792ca00d..00000000
--- a/vendor/gopkg.in/go-playground/validator.v8/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
-*.prof
-*.test
-*.out
-*.txt
-cover.html
-README.html
\ No newline at end of file
diff --git a/vendor/gopkg.in/go-playground/validator.v8/README.md b/vendor/gopkg.in/go-playground/validator.v8/README.md
deleted file mode 100644
index d3bd9b0f..00000000
--- a/vendor/gopkg.in/go-playground/validator.v8/README.md
+++ /dev/null
@@ -1,366 +0,0 @@
-Package validator
-================
-<img align="right" src="https://raw.githubusercontent.com/go-playground/validator/v8/logo.png">[![Join the chat at https://gitter.im/bluesuncorp/validator](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/go-playground/validator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-![Project status](https://img.shields.io/badge/version-8.18.2-green.svg)
-[![Build Status](https://semaphoreci.com/api/v1/projects/ec20115f-ef1b-4c7d-9393-cc76aba74eb4/530054/badge.svg)](https://semaphoreci.com/joeybloggs/validator)
-[![Coverage Status](https://coveralls.io/repos/go-playground/validator/badge.svg?branch=v8&service=github)](https://coveralls.io/github/go-playground/validator?branch=v8)
-[![Go Report Card](https://goreportcard.com/badge/github.com/go-playground/validator)](https://goreportcard.com/report/github.com/go-playground/validator)
-[![GoDoc](https://godoc.org/gopkg.in/go-playground/validator.v8?status.svg)](https://godoc.org/gopkg.in/go-playground/validator.v8)
-![License](https://img.shields.io/dub/l/vibe-d.svg)
-
-Package validator implements value validations for structs and individual fields based on tags.
-
-It has the following **unique** features:
-
--   Cross Field and Cross Struct validations by using validation tags or custom validators.  
--   Slice, Array and Map diving, which allows any or all levels of a multidimensional field to be validated.  
--   Handles type interface by determining it's underlying type prior to validation.
--   Handles custom field types such as sql driver Valuer see [Valuer](https://golang.org/src/database/sql/driver/types.go?s=1210:1293#L29)
--   Alias validation tags, which allows for mapping of several validations to a single tag for easier defining of validations on structs
--   Extraction of custom defined Field Name e.g. can specify to extract the JSON name while validating and have it available in the resulting FieldError
-
-Installation
-------------
-
-Use go get.
-
-	go get gopkg.in/go-playground/validator.v8
-
-or to update
-
-	go get -u gopkg.in/go-playground/validator.v8
-
-Then import the validator package into your own code.
-
-	import "gopkg.in/go-playground/validator.v8"
-
-Error Return Value
--------
-
-Validation functions return type error
-
-They return type error to avoid the issue discussed in the following, where err is always != nil:
-
-* http://stackoverflow.com/a/29138676/3158232
-* https://github.com/go-playground/validator/issues/134
-
-validator only returns nil or ValidationErrors as type error; so in you code all you need to do
-is check if the error returned is not nil, and if it's not type cast it to type ValidationErrors
-like so:
-
-```go
-err := validate.Struct(mystruct)
-validationErrors := err.(validator.ValidationErrors)
- ```
-
-Usage and documentation
-------
-
-Please see http://godoc.org/gopkg.in/go-playground/validator.v8 for detailed usage docs.
-
-##### Examples:
-
-Struct & Field validation
-```go
-package main
-
-import (
-	"fmt"
-
-	"gopkg.in/go-playground/validator.v8"
-)
-
-// User contains user information
-type User struct {
-	FirstName      string     `validate:"required"`
-	LastName       string     `validate:"required"`
-	Age            uint8      `validate:"gte=0,lte=130"`
-	Email          string     `validate:"required,email"`
-	FavouriteColor string     `validate:"hexcolor|rgb|rgba"`
-	Addresses      []*Address `validate:"required,dive,required"` // a person can have a home and cottage...
-}
-
-// Address houses a users address information
-type Address struct {
-	Street string `validate:"required"`
-	City   string `validate:"required"`
-	Planet string `validate:"required"`
-	Phone  string `validate:"required"`
-}
-
-var validate *validator.Validate
-
-func main() {
-
-	config := &validator.Config{TagName: "validate"}
-
-	validate = validator.New(config)
-
-	validateStruct()
-	validateField()
-}
-
-func validateStruct() {
-
-	address := &Address{
-		Street: "Eavesdown Docks",
-		Planet: "Persphone",
-		Phone:  "none",
-	}
-
-	user := &User{
-		FirstName:      "Badger",
-		LastName:       "Smith",
-		Age:            135,
-		Email:          "Badger.Smith@gmail.com",
-		FavouriteColor: "#000",
-		Addresses:      []*Address{address},
-	}
-
-	// returns nil or ValidationErrors ( map[string]*FieldError )
-	errs := validate.Struct(user)
-
-	if errs != nil {
-
-		fmt.Println(errs) // output: Key: "User.Age" Error:Field validation for "Age" failed on the "lte" tag
-		//	                         Key: "User.Addresses[0].City" Error:Field validation for "City" failed on the "required" tag
-		err := errs.(validator.ValidationErrors)["User.Addresses[0].City"]
-		fmt.Println(err.Field) // output: City
-		fmt.Println(err.Tag)   // output: required
-		fmt.Println(err.Kind)  // output: string
-		fmt.Println(err.Type)  // output: string
-		fmt.Println(err.Param) // output:
-		fmt.Println(err.Value) // output:
-
-		// from here you can create your own error messages in whatever language you wish
-		return
-	}
-
-	// save user to database
-}
-
-func validateField() {
-	myEmail := "joeybloggs.gmail.com"
-
-	errs := validate.Field(myEmail, "required,email")
-
-	if errs != nil {
-		fmt.Println(errs) // output: Key: "" Error:Field validation for "" failed on the "email" tag
-		return
-	}
-
-	// email ok, move on
-}
-```
-
-Custom Field Type
-```go
-package main
-
-import (
-	"database/sql"
-	"database/sql/driver"
-	"fmt"
-	"reflect"
-
-	"gopkg.in/go-playground/validator.v8"
-)
-
-// DbBackedUser User struct
-type DbBackedUser struct {
-	Name sql.NullString `validate:"required"`
-	Age  sql.NullInt64  `validate:"required"`
-}
-
-func main() {
-
-	config := &validator.Config{TagName: "validate"}
-
-	validate := validator.New(config)
-
-	// register all sql.Null* types to use the ValidateValuer CustomTypeFunc
-	validate.RegisterCustomTypeFunc(ValidateValuer, sql.NullString{}, sql.NullInt64{}, sql.NullBool{}, sql.NullFloat64{})
-
-	x := DbBackedUser{Name: sql.NullString{String: "", Valid: true}, Age: sql.NullInt64{Int64: 0, Valid: false}}
-	errs := validate.Struct(x)
-
-	if len(errs.(validator.ValidationErrors)) > 0 {
-		fmt.Printf("Errs:\n%+v\n", errs)
-	}
-}
-
-// ValidateValuer implements validator.CustomTypeFunc
-func ValidateValuer(field reflect.Value) interface{} {
-	if valuer, ok := field.Interface().(driver.Valuer); ok {
-		val, err := valuer.Value()
-		if err == nil {
-			return val
-		}
-		// handle the error how you want
-	}
-	return nil
-}
-```
-
-Struct Level Validation
-```go
-package main
-
-import (
-	"fmt"
-	"reflect"
-
-	"gopkg.in/go-playground/validator.v8"
-)
-
-// User contains user information
-type User struct {
-	FirstName      string     `json:"fname"`
-	LastName       string     `json:"lname"`
-	Age            uint8      `validate:"gte=0,lte=130"`
-	Email          string     `validate:"required,email"`
-	FavouriteColor string     `validate:"hexcolor|rgb|rgba"`
-	Addresses      []*Address `validate:"required,dive,required"` // a person can have a home and cottage...
-}
-
-// Address houses a users address information
-type Address struct {
-	Street string `validate:"required"`
-	City   string `validate:"required"`
-	Planet string `validate:"required"`
-	Phone  string `validate:"required"`
-}
-
-var validate *validator.Validate
-
-func main() {
-
-	config := &validator.Config{TagName: "validate"}
-
-	validate = validator.New(config)
-	validate.RegisterStructValidation(UserStructLevelValidation, User{})
-
-	validateStruct()
-}
-
-// UserStructLevelValidation contains custom struct level validations that don't always
-// make sense at the field validation level. For Example this function validates that either
-// FirstName or LastName exist; could have done that with a custom field validation but then
-// would have had to add it to both fields duplicating the logic + overhead, this way it's
-// only validated once.
-//
-// NOTE: you may ask why wouldn't I just do this outside of validator, because doing this way
-// hooks right into validator and you can combine with validation tags and still have a
-// common error output format.
-func UserStructLevelValidation(v *validator.Validate, structLevel *validator.StructLevel) {
-
-	user := structLevel.CurrentStruct.Interface().(User)
-
-	if len(user.FirstName) == 0 && len(user.LastName) == 0 {
-		structLevel.ReportError(reflect.ValueOf(user.FirstName), "FirstName", "fname", "fnameorlname")
-		structLevel.ReportError(reflect.ValueOf(user.LastName), "LastName", "lname", "fnameorlname")
-	}
-
-	// plus can to more, even with different tag than "fnameorlname"
-}
-
-func validateStruct() {
-
-	address := &Address{
-		Street: "Eavesdown Docks",
-		Planet: "Persphone",
-		Phone:  "none",
-		City:   "Unknown",
-	}
-
-	user := &User{
-		FirstName:      "",
-		LastName:       "",
-		Age:            45,
-		Email:          "Badger.Smith@gmail.com",
-		FavouriteColor: "#000",
-		Addresses:      []*Address{address},
-	}
-
-	// returns nil or ValidationErrors ( map[string]*FieldError )
-	errs := validate.Struct(user)
-
-	if errs != nil {
-
-		fmt.Println(errs) // output: Key: 'User.LastName' Error:Field validation for 'LastName' failed on the 'fnameorlname' tag
-		//	                         Key: 'User.FirstName' Error:Field validation for 'FirstName' failed on the 'fnameorlname' tag
-		err := errs.(validator.ValidationErrors)["User.FirstName"]
-		fmt.Println(err.Field) // output: FirstName
-		fmt.Println(err.Tag)   // output: fnameorlname
-		fmt.Println(err.Kind)  // output: string
-		fmt.Println(err.Type)  // output: string
-		fmt.Println(err.Param) // output:
-		fmt.Println(err.Value) // output:
-
-		// from here you can create your own error messages in whatever language you wish
-		return
-	}
-
-	// save user to database
-}
-```
-
-Benchmarks
-------
-###### Run on MacBook Pro (Retina, 15-inch, Late 2013) 2.6 GHz Intel Core i7 16 GB 1600 MHz DDR3 using Go version go1.5.3 darwin/amd64
-```go
-PASS
-BenchmarkFieldSuccess-8                            	20000000	       118 ns/op	       0 B/op	       0 allocs/op
-BenchmarkFieldFailure-8                            	 2000000	       758 ns/op	     432 B/op	       4 allocs/op
-BenchmarkFieldDiveSuccess-8                        	  500000	      2471 ns/op	     464 B/op	      28 allocs/op
-BenchmarkFieldDiveFailure-8                        	  500000	      3172 ns/op	     896 B/op	      32 allocs/op
-BenchmarkFieldCustomTypeSuccess-8                  	 5000000	       300 ns/op	      32 B/op	       2 allocs/op
-BenchmarkFieldCustomTypeFailure-8                  	 2000000	       775 ns/op	     432 B/op	       4 allocs/op
-BenchmarkFieldOrTagSuccess-8                       	 1000000	      1122 ns/op	       4 B/op	       1 allocs/op
-BenchmarkFieldOrTagFailure-8                       	 1000000	      1167 ns/op	     448 B/op	       6 allocs/op
-BenchmarkStructLevelValidationSuccess-8            	 3000000	       548 ns/op	     160 B/op	       5 allocs/op
-BenchmarkStructLevelValidationFailure-8            	 3000000	       558 ns/op	     160 B/op	       5 allocs/op
-BenchmarkStructSimpleCustomTypeSuccess-8           	 2000000	       623 ns/op	      36 B/op	       3 allocs/op
-BenchmarkStructSimpleCustomTypeFailure-8           	 1000000	      1381 ns/op	     640 B/op	       9 allocs/op
-BenchmarkStructPartialSuccess-8                    	 1000000	      1036 ns/op	     272 B/op	       9 allocs/op
-BenchmarkStructPartialFailure-8                    	 1000000	      1734 ns/op	     730 B/op	      14 allocs/op
-BenchmarkStructExceptSuccess-8                     	 2000000	       888 ns/op	     250 B/op	       7 allocs/op
-BenchmarkStructExceptFailure-8                     	 1000000	      1036 ns/op	     272 B/op	       9 allocs/op
-BenchmarkStructSimpleCrossFieldSuccess-8           	 2000000	       773 ns/op	      80 B/op	       4 allocs/op
-BenchmarkStructSimpleCrossFieldFailure-8           	 1000000	      1487 ns/op	     536 B/op	       9 allocs/op
-BenchmarkStructSimpleCrossStructCrossFieldSuccess-8	 1000000	      1261 ns/op	     112 B/op	       7 allocs/op
-BenchmarkStructSimpleCrossStructCrossFieldFailure-8	 1000000	      2055 ns/op	     576 B/op	      12 allocs/op
-BenchmarkStructSimpleSuccess-8                     	 3000000	       519 ns/op	       4 B/op	       1 allocs/op
-BenchmarkStructSimpleFailure-8                     	 1000000	      1429 ns/op	     640 B/op	       9 allocs/op
-BenchmarkStructSimpleSuccessParallel-8             	10000000	       146 ns/op	       4 B/op	       1 allocs/op
-BenchmarkStructSimpleFailureParallel-8             	 2000000	       551 ns/op	     640 B/op	       9 allocs/op
-BenchmarkStructComplexSuccess-8                    	  500000	      3269 ns/op	     244 B/op	      15 allocs/op
-BenchmarkStructComplexFailure-8                    	  200000	      8436 ns/op	    3609 B/op	      60 allocs/op
-BenchmarkStructComplexSuccessParallel-8            	 1000000	      1024 ns/op	     244 B/op	      15 allocs/op
-BenchmarkStructComplexFailureParallel-8            	  500000	      3536 ns/op	    3609 B/op	      60 allocs/op
-```
-
-Complimentary Software
-----------------------
-
-Here is a list of software that compliments using this library either pre or post validation.
-
-* [form](https://github.com/go-playground/form) - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
-* [Conform](https://github.com/leebenson/conform) - Trims, sanitizes & scrubs data based on struct tags.
-
-How to Contribute
-------
-
-There will always be a development branch for each version i.e. `v1-development`. In order to contribute, 
-please make your pull requests against those branches.
-
-If the changes being proposed or requested are breaking changes, please create an issue, for discussion
-or create a pull request against the highest development branch for example this package has a
-v1 and v1-development branch however, there will also be a v2-development branch even though v2 doesn't exist yet.
-
-I strongly encourage everyone whom creates a custom validation function to contribute them and
-help make this package even better.
-
-License
-------
-Distributed under MIT License, please see license file in code for more details.
diff --git a/vendor/gopkg.in/go-playground/validator.v8/logo.png b/vendor/gopkg.in/go-playground/validator.v8/logo.png
deleted file mode 100644
index 355000f5247d50e979cf5db5de38188ef4649a34..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13443
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
V^Rh-@K?jDw<fWCR8YN7^{tq&rA1MF;

diff --git a/vendor/gopkg.in/go-playground/validator.v9/.gitignore b/vendor/gopkg.in/go-playground/validator.v9/.gitignore
deleted file mode 100644
index 792ca00d..00000000
--- a/vendor/gopkg.in/go-playground/validator.v9/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
-*.prof
-*.test
-*.out
-*.txt
-cover.html
-README.html
\ No newline at end of file
diff --git a/vendor/gopkg.in/go-playground/validator.v9/README.md b/vendor/gopkg.in/go-playground/validator.v9/README.md
deleted file mode 100644
index 4e645cc0..00000000
--- a/vendor/gopkg.in/go-playground/validator.v9/README.md
+++ /dev/null
@@ -1,149 +0,0 @@
-Package validator
-================
-<img align="right" src="https://raw.githubusercontent.com/go-playground/validator/v9/logo.png">[![Join the chat at https://gitter.im/go-playground/validator](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/go-playground/validator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-![Project status](https://img.shields.io/badge/version-9.9.4-green.svg)
-[![Build Status](https://semaphoreci.com/api/v1/joeybloggs/validator/branches/v9/badge.svg)](https://semaphoreci.com/joeybloggs/validator)
-[![Coverage Status](https://coveralls.io/repos/go-playground/validator/badge.svg?branch=v9&service=github)](https://coveralls.io/github/go-playground/validator?branch=v9)
-[![Go Report Card](https://goreportcard.com/badge/github.com/go-playground/validator)](https://goreportcard.com/report/github.com/go-playground/validator)
-[![GoDoc](https://godoc.org/gopkg.in/go-playground/validator.v9?status.svg)](https://godoc.org/gopkg.in/go-playground/validator.v9)
-![License](https://img.shields.io/dub/l/vibe-d.svg)
-
-Package validator implements value validations for structs and individual fields based on tags.
-
-It has the following **unique** features:
-
--   Cross Field and Cross Struct validations by using validation tags or custom validators.  
--   Slice, Array and Map diving, which allows any or all levels of a multidimensional field to be validated.
--   Ability to dive into both map keys and values for validation  
--   Handles type interface by determining it's underlying type prior to validation.
--   Handles custom field types such as sql driver Valuer see [Valuer](https://golang.org/src/database/sql/driver/types.go?s=1210:1293#L29)
--   Alias validation tags, which allows for mapping of several validations to a single tag for easier defining of validations on structs
--   Extraction of custom defined Field Name e.g. can specify to extract the JSON name while validating and have it available in the resulting FieldError
--   Customizable i18n aware error messages.
--   Default validator for the [gin](https://github.com/gin-gonic/gin) web framework; upgrading from v8 to v9 in gin see [here](https://github.com/go-playground/validator/tree/v9/_examples/gin-upgrading-overriding)
-
-Installation
-------------
-
-Use go get.
-
-	go get gopkg.in/go-playground/validator.v9
-
-Then import the validator package into your own code.
-
-	import "gopkg.in/go-playground/validator.v9"
-
-Error Return Value
--------
-
-Validation functions return type error
-
-They return type error to avoid the issue discussed in the following, where err is always != nil:
-
-* http://stackoverflow.com/a/29138676/3158232
-* https://github.com/go-playground/validator/issues/134
-
-Validator only InvalidValidationError for bad validation input, nil or ValidationErrors as type error; so, in your code all you need to do is check if the error returned is not nil, and if it's not check if error is InvalidValidationError ( if necessary, most of the time it isn't ) type cast it to type ValidationErrors like so:
-
-```go
-err := validate.Struct(mystruct)
-validationErrors := err.(validator.ValidationErrors)
- ```
-
-Usage and documentation
-------
-
-Please see http://godoc.org/gopkg.in/go-playground/validator.v9 for detailed usage docs.
-
-##### Examples:
-
-- [Simple](https://github.com/go-playground/validator/blob/v9/_examples/simple/main.go)
-- [Custom Field Types](https://github.com/go-playground/validator/blob/v9/_examples/custom/main.go)
-- [Struct Level](https://github.com/go-playground/validator/blob/v9/_examples/struct-level/main.go)
-- [Translations & Custom Errors](https://github.com/go-playground/validator/blob/v9/_examples/translations/main.go)
-- [Gin upgrade and/or override validator](https://github.com/go-playground/validator/tree/v9/_examples/gin-upgrading-overriding)
-- [wash - an example application putting it all together](https://github.com/bluesuncorp/wash)
-
-Benchmarks
-------
-###### Run on MacBook Pro (15-inch, 2017) Go version go1.9.2 darwin/amd64
-```go
-go test -bench=. -benchmem=true
-BenchmarkFieldSuccess-8                                       	20000000	        79.9 ns/op	       0 B/op	       0 allocs/op
-BenchmarkFieldSuccessParallel-8                               	50000000	        25.0 ns/op	       0 B/op	       0 allocs/op
-BenchmarkFieldFailure-8                                       	 5000000	       281 ns/op	     208 B/op	       4 allocs/op
-BenchmarkFieldFailureParallel-8                               	20000000	        97.0 ns/op	     208 B/op	       4 allocs/op
-BenchmarkFieldArrayDiveSuccess-8                              	 3000000	       591 ns/op	     201 B/op	      11 allocs/op
-BenchmarkFieldArrayDiveSuccessParallel-8                      	10000000	       195 ns/op	     201 B/op	      11 allocs/op
-BenchmarkFieldArrayDiveFailure-8                              	 2000000	       878 ns/op	     412 B/op	      16 allocs/op
-BenchmarkFieldArrayDiveFailureParallel-8                      	 5000000	       274 ns/op	     413 B/op	      16 allocs/op
-BenchmarkFieldMapDiveSuccess-8                                	 1000000	      1279 ns/op	     432 B/op	      18 allocs/op
-BenchmarkFieldMapDiveSuccessParallel-8                        	 5000000	       401 ns/op	     432 B/op	      18 allocs/op
-BenchmarkFieldMapDiveFailure-8                                	 1000000	      1060 ns/op	     512 B/op	      16 allocs/op
-BenchmarkFieldMapDiveFailureParallel-8                        	 5000000	       334 ns/op	     512 B/op	      16 allocs/op
-BenchmarkFieldMapDiveWithKeysSuccess-8                        	 1000000	      1462 ns/op	     480 B/op	      21 allocs/op
-BenchmarkFieldMapDiveWithKeysSuccessParallel-8                	 3000000	       463 ns/op	     480 B/op	      21 allocs/op
-BenchmarkFieldMapDiveWithKeysFailure-8                        	 1000000	      1414 ns/op	     721 B/op	      21 allocs/op
-BenchmarkFieldMapDiveWithKeysFailureParallel-8                	 3000000	       446 ns/op	     721 B/op	      21 allocs/op
-BenchmarkFieldCustomTypeSuccess-8                             	10000000	       211 ns/op	      32 B/op	       2 allocs/op
-BenchmarkFieldCustomTypeSuccessParallel-8                     	20000000	        65.9 ns/op	      32 B/op	       2 allocs/op
-BenchmarkFieldCustomTypeFailure-8                             	 5000000	       270 ns/op	     208 B/op	       4 allocs/op
-BenchmarkFieldCustomTypeFailureParallel-8                     	20000000	        93.3 ns/op	     208 B/op	       4 allocs/op
-BenchmarkFieldOrTagSuccess-8                                  	 2000000	       729 ns/op	      16 B/op	       1 allocs/op
-BenchmarkFieldOrTagSuccessParallel-8                          	 5000000	       367 ns/op	      16 B/op	       1 allocs/op
-BenchmarkFieldOrTagFailure-8                                  	 3000000	       472 ns/op	     224 B/op	       5 allocs/op
-BenchmarkFieldOrTagFailureParallel-8                          	 5000000	       373 ns/op	     224 B/op	       5 allocs/op
-BenchmarkStructLevelValidationSuccess-8                       	10000000	       201 ns/op	      32 B/op	       2 allocs/op
-BenchmarkStructLevelValidationSuccessParallel-8               	20000000	        66.3 ns/op	      32 B/op	       2 allocs/op
-BenchmarkStructLevelValidationFailure-8                       	 3000000	       468 ns/op	     304 B/op	       8 allocs/op
-BenchmarkStructLevelValidationFailureParallel-8               	10000000	       172 ns/op	     304 B/op	       8 allocs/op
-BenchmarkStructSimpleCustomTypeSuccess-8                      	 5000000	       376 ns/op	      32 B/op	       2 allocs/op
-BenchmarkStructSimpleCustomTypeSuccessParallel-8              	20000000	       126 ns/op	      32 B/op	       2 allocs/op
-BenchmarkStructSimpleCustomTypeFailure-8                      	 2000000	       646 ns/op	     424 B/op	       9 allocs/op
-BenchmarkStructSimpleCustomTypeFailureParallel-8              	10000000	       240 ns/op	     440 B/op	      10 allocs/op
-BenchmarkStructFilteredSuccess-8                              	 3000000	       582 ns/op	     288 B/op	       9 allocs/op
-BenchmarkStructFilteredSuccessParallel-8                      	10000000	       198 ns/op	     288 B/op	       9 allocs/op
-BenchmarkStructFilteredFailure-8                              	 3000000	       447 ns/op	     256 B/op	       7 allocs/op
-BenchmarkStructFilteredFailureParallel-8                      	10000000	       156 ns/op	     256 B/op	       7 allocs/op
-BenchmarkStructPartialSuccess-8                               	 3000000	       536 ns/op	     256 B/op	       6 allocs/op
-BenchmarkStructPartialSuccessParallel-8                       	10000000	       175 ns/op	     256 B/op	       6 allocs/op
-BenchmarkStructPartialFailure-8                               	 2000000	       738 ns/op	     480 B/op	      11 allocs/op
-BenchmarkStructPartialFailureParallel-8                       	 5000000	       256 ns/op	     480 B/op	      11 allocs/op
-BenchmarkStructExceptSuccess-8                                	 2000000	       835 ns/op	     496 B/op	      12 allocs/op
-BenchmarkStructExceptSuccessParallel-8                        	10000000	       163 ns/op	     240 B/op	       5 allocs/op
-BenchmarkStructExceptFailure-8                                	 2000000	       682 ns/op	     464 B/op	      10 allocs/op
-BenchmarkStructExceptFailureParallel-8                        	10000000	       244 ns/op	     464 B/op	      10 allocs/op
-BenchmarkStructSimpleCrossFieldSuccess-8                      	 5000000	       392 ns/op	      72 B/op	       3 allocs/op
-BenchmarkStructSimpleCrossFieldSuccessParallel-8              	20000000	       126 ns/op	      72 B/op	       3 allocs/op
-BenchmarkStructSimpleCrossFieldFailure-8                      	 2000000	       611 ns/op	     304 B/op	       8 allocs/op
-BenchmarkStructSimpleCrossFieldFailureParallel-8              	10000000	       214 ns/op	     304 B/op	       8 allocs/op
-BenchmarkStructSimpleCrossStructCrossFieldSuccess-8           	 3000000	       567 ns/op	      80 B/op	       4 allocs/op
-BenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-8   	10000000	       177 ns/op	      80 B/op	       4 allocs/op
-BenchmarkStructSimpleCrossStructCrossFieldFailure-8           	 2000000	       807 ns/op	     320 B/op	       9 allocs/op
-BenchmarkStructSimpleCrossStructCrossFieldFailureParallel-8   	 5000000	       268 ns/op	     320 B/op	       9 allocs/op
-BenchmarkStructSimpleSuccess-8                                	 5000000	       256 ns/op	       0 B/op	       0 allocs/op
-BenchmarkStructSimpleSuccessParallel-8                        	20000000	        76.3 ns/op	       0 B/op	       0 allocs/op
-BenchmarkStructSimpleFailure-8                                	 2000000	       625 ns/op	     424 B/op	       9 allocs/op
-BenchmarkStructSimpleFailureParallel-8                        	10000000	       219 ns/op	     424 B/op	       9 allocs/op
-BenchmarkStructComplexSuccess-8                               	 1000000	      1431 ns/op	     128 B/op	       8 allocs/op
-BenchmarkStructComplexSuccessParallel-8                       	 3000000	       427 ns/op	     128 B/op	       8 allocs/op
-BenchmarkStructComplexFailure-8                               	  300000	      4065 ns/op	    3041 B/op	      53 allocs/op
-BenchmarkStructComplexFailureParallel-8                       	 1000000	      1478 ns/op	    3041 B/op	      53 allocs/op
-```
-
-Complementary Software
-----------------------
-
-Here is a list of software that complements using this library either pre or post validation.
-
-* [form](https://github.com/go-playground/form) - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
-* [mold](https://github.com/go-playground/mold) - A general library to help modify or set data within data structures and other objects
-
-How to Contribute
-------
-
-Make a pull request...
-
-License
-------
-Distributed under MIT License, please see license file within the code for more details.
diff --git a/vendor/gopkg.in/go-playground/validator.v9/logo.png b/vendor/gopkg.in/go-playground/validator.v9/logo.png
deleted file mode 100644
index 355000f5247d50e979cf5db5de38188ef4649a34..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13443
zcmbVz^LHiB^LK39wrv|5-`KWoTN~T9%?&s9Mte8f*xWeZ`~Lg^&kxU>)6-|>Om|IH
zcUM=vsybFxSr!?A009gP3|U@IN*z>Z{#W2&KzAW<*L_e0<t`x)fCF6ta27G3XLuJm
zU3V}rM2!Cm_%bl)9rTjOLt4i}!`aHi+tkexOx(iR%#uvT*3Ht}+0EXaOj3jAq`x%*
z42%p+UP>I`lYd#@osT8GH952<>}$=#%H%txCM^!YLYIPG*~?*PoX}XfpXD#$r$vg%
zUJ@M8Sa6}E0bs?J()q&Aj2!Xx^!*X7wf45!j09TZ!t8tmiZrhYa~rM!hkOgG3jNOL
z$t%hsiEZp{`uZS=pUq3db%<?nJ<#ePFT+sGJc|t%#p_Yp5d~t_LcPRcTLczaPRO)i
zx1fo~&cynP{~sTRI(mDP>5@e>LpqUR%RzF4Fp&XYtszH3NMj(x&yBfN!B@dDe(i*$
zFaI9z`VK(*+SzZ3Km$V|gFS(NfPUS&ND}#zKM&MsZR;zy@SJwDwy5mo<S=Y(=Q0=s
zL{yqfjo_uQRhnWT!^FTqMA+F=l+;d(6}OhQcD9$dcly|iE7{({m_XkMHWSdLtG{}$
z3tywW50Pc6I-Efv!8~>K{eH84yz0`{Dhd+jynpps_Wzr*Rl)ctU%7jk!=>D(g}(sK
zP}YV(B1|d_4NeR~4qlx?36qk5ng9u-wt+@fOTlvqhk>WQ%HxtjxBspSS(-6OpP;_x
z73LX72W9oA=yUj&B*sjt0z}2U44ACNztdo!tbwR&pl8vCLjf!@HDwcP;p{h$JYsrk
zE3Pp7L^A>!xwNPSX+2zrQgJ8<uF%TuMMs{9IT&?}`ubv~U}os}V6%_po%Q;!+rFM3
zXVc!Ho5Pi&3_m_q$KogfsJnd5Ui0*UD8!<@3*-lmz^G)h4t;M>|CCr11n`u|=C}{?
zlHLN%{DxBD;+;&!6Se$BciUB@EQ~Y8_ZT-Q&4<Y{&7w#xOrBYY`Kg<2|D;DhJ?_4T
z$`VT|e~H5>p}|A3l`R=AVR9Kt+V~a3a3V{l=)gHB<MLFc#UZ~i1^#2k8Q{LJ+FDNa
z4^;_8dmLfMKCuL*LDE6rg;LO4zI{=6VfaI})T8Gi+H>K2op+X}BW7o(X1K2eRTZ^;
ziO?#OmuWkXeCj2*{H(1C#qnQ>tz|Kq>*#cF7g)+?3G3(pVB@N37)9YHmYxa}CVb-%
z@SHf5CnrEMiI6-&fkkOb9<fw>ema$%-Ld}qN54xNf|CDt?#e@Aec&IEcEEpu3Ak5Y
z>0@s)b7yHEr~UCsek0JVuF%66MBgBxj-d!wQu4Evlx;p|pZG{&=4VV)*pIE{{f=SO
z;V$)QC5ae=-6(Nc68{(S;2ymNVxIiwAs9}A@vA2?55kfV(qK>S6caF|bywd&p8ydL
zB}xJ~6Di7u^Xl{s1E&b!{FXH0#>1$=MTNA7+vd;Pm*#B`iYRecX>5H7^iqDqQ{GQH
zKNNh0?p}h?nEjh_Ft*^M`+(a;L*rKgPp=E!!}stvVxG|YKY=Yh25?+RloCoyT3T~2
zr1!?YL58}YTlyj1sTl_H(oBl48zJPwJFr9|r(>T7Npe$Hyl7Pm(dZ}|x;n!X(4wtZ
zeNCCz4LTygy(gl;pV;dp+-Lpq=weiOW2Z_Lt@RNd_s43tZ>$@23^%6`T}rfexq!%#
z)e|oR;kRY~2fW@V(in6QZzE*6TubN0<>|v2xiX)v6->d$no+&np8<c-6GWa(1U#=>
z=DZPj>yPVL2Y2U^MJuW`R8R{2@Rg&}<j6v-R$MErn=f{p+jcW>`S+$yEgsGihuW$3
z2y*A5R<aaMx7Gpz?srOGL<9Wk**Nj1GPuTC<t$-oEFNa_yf${6&bV!sZ%@1gmrUSn
z83?7jwr?#gS}#6=Z%;4R-BvGA*-n0%-)N_sdkervNiaPh6WTClvU|A%PbBk4kV{6V
zW~7B5xj?Aut0{kObp(iB!-{-5k>m-TCh*xaY#R1q)HfzQS_%fPHCL7200}u=S#u`m
zvW%z6F_UcmBq~g~s|d}v6$Q?noL`Z(X;@Q$i>kw^bF}I3A8QQyAE_nz-`H~a9o2}-
ztPUs0q(DTZ^Yx3oA6C5I?{nHCX0qfW&C2r}h~~slhe!$_<GueWBJpMEyI&lD*GgwJ
zPEqwrNXMvJm%XjU4hY(5Ao4qWeE9t(_HJp}y}YdRb<Po#^ND3mA{1An!Aiy~Sf%SY
z^marj^n9l8A$l1Qm4L6<+-fG6s<?Yoarcsj%FduSZk{X>Hh1WB`w?_|D{JsF#zpgf
z;F^yDTZs-$?`myzyDj@=x}@L4b~_KtUWzV+uiL${48Qh^ZdoywlRNR<*WLFY>v0fq
zeWQS`g6{8q<#x){FrCbZlcTAh?+fw^gB-2LpRnlF^<r?LbB8kCd~B4a<xs)C_}9js
z<YlZqaf1g*WU5+mjNAnoqI2dev)0*O3k4UPXCXNMOjowJ^Zmy)%ZuDd!ex@l0frsO
zJ>}`$D;(KxTOLn;dXs3Yl(uW$g6<FTh2G~>hyw3{wZdTVg|kdSet`n+SACG=!&%#r
zl+Ha_MzD$G>iQb%tW~Uus7-zOMPI__Qo92dK3VKkGgR#;-!`uw++~l5J?MT+BUCv3
zcItfZO)uKXlipj1XD?F|>3frjQWA;$JV>TcHHrcrR=Ql;-B}Bb4;f|uVo(S7xL(QP
zE%c8{bnchCJ%aG)3x8gx0`Hqq`eapfWqK`~Ec6Mea`v0{J?4~x(S2D#-7sMBR1X;{
zO-QlMUsyD!#jI^8v6y2J8TinHz_zsU@;3|?TfT0F2b2A7aX&aEQGc;IZ>UV*cToht
z27rX9TA$h1ZMxk`KX|$6o$)=$PxIM3k^FhGmiJMaA3fBM6(M#efLJ9ucfbo2TkroP
zxE4Dv?B_Nkef;0LYVj3<FZ2S3>nk|C9-MLv{y^-tY`SD(5phR2KMn}9@?I@SQ^#m*
zu>9T8l>)311+yf)qc`Zp%3Cp9FS4PN18t5zZGy-!{f^5eJQA&Fb<XR1lu;HB)1xtT
zq$=Z;$N?YEA9yKnURCjOY$2nUd%KEXm8(%u(c5#^J3({g1)O-oK>>Llf4kF^OZ}Tu
z=jyadHyzlQLaf@_eAf{CFb}_v=Gj*BLc$VrMAe%hAL@6JaXkt^p&>`#SXjBAX!3#;
zZ(sPdwtkoS08=HP@lruhHm*fIlu{y~LTu@+@;u*LBUU~nbQ7S{eH09xc5^_Xtu!q@
z6^P#P!A-(qwW30Th;TBWNp{b1+lP1D!2Y2In`HJ8=DTs8;1)Y~TE2Tco&a<vJx6Mf
zls0$o!CU3d+V`|yynO1dLx3u&MSvmpMG}4@9FO5#s5)=nlL`xc73h_rQdO+(t^Kq}
zHR-}+JhDO?b5IxO!lJ3$5feJaml`Ecu!#VVRw-S`c8##B#j1%Yu51lkHDP{BB-*SD
zBxt#I34<nF&5KhKMG$wHv3erl$lf?5_V3S)76JCE4^*hi|J=}omRpf(+uS%Vr|(|j
zMC(=lh@L)T)E!98O)bq3D^BcPq1m_`Yn9=UJ|w(@TvCOD!b?Fr1^T<qeyHruT|o{1
zY-0tp4YTc`^(;7B#&8=TF&JFsxzzaQ1aygzj2PYPb+1g1DK1jxpK~{DhdQ;jl?o4a
zG$fKhYiyvtE@pQy{6y@amVP`_UuQ!OKm7XWf)5DIwf;tM;bo?))91REJcQMx7Ye)t
zhu_<>gHaJGJRtE&{R2y^@Gnpny|$qxXc2=Ps$@$~9mxET{1Q$%i!i#frlzo0UOe_Y
zMxNvLk98G99Jhl+-rMB_{OyQsE?70nTDUTZf%>P_;7WAz0a+FG*4EALUD*p3UWt_(
z3yZrIM%L#2dleC=K}bD*)-@4195ctqtgM0iQACxJ?F&0O<{t?%^dK1pMJo*-dHj;E
z%Vt=-^pa?Z(eb%_<i!(wVpA451ZdS8^voSc*_ve2<W`0QW|uvPR}M`zepE*E8VBDa
z!xDR-{o4s9)nM%oL1gVMAOF|{bVFPF(JXVtYDc#CXH=HI#i%(L+)!RUAm!5=9SuBl
z8H)rgQ0&43BJAR~9aTV6^L;paDCoV&Tcq#U%A=3CiZw%SSmnn;{E6=_`LqqT=WSkg
zWhgCkL95<S+>rx~$m@yuyvX^t!IvZZ&&LJtY`#;x+PXT-Gb~(3>gv;tf~4N37#aCX
z-tW%A@AM^Cf&WBJl*|wp9s0RGq_rCL)=Klfe3e8BUY|7FGZM)#ZdT04zyZ#{*|<&8
z+dsxt9B+krqDfJbykPO==|6C|yAi)*jkV&C{Du7Y#drV0`{jGeFSFOANIz#B-ncz=
zB?v}IR2j5eCJ`2>yNMN9<}h!(e$i><|KSPd(Ff^lC-7pg&G~QJ8T0JD-37gq1-K+V
z;1?GW_CVrGX3V0m%yvW#+uGLl^01=9zyGrgZ5fJ6GeeULS25^4)YCL=-Z!w`r$tH=
zj-ikdG|nI;y1wvvk2)h7^hL0Xvnxw)Y1u}&9Vv%k1};Z0IqW?AQ8)B@QOUa?ayt31
zX^`u?pa(0F6YpbrT;e2^auw#%0BX_ub?}_i<dy0biQ$S)`!223TyBO*Ib^`|nt@*;
zff5&1y@vcU+tkTwtjo3dx8U3H-rg)DH}+_iY_Vh#V9K(^ZZSDhi%inok8l-X$py-!
z4mtcj(S1OPCmmPs1ve2uY?pDEgWmEUzdt^OYYd`U>eYF;4rGRd*1_vX-+Xv9I&yR@
zZF(3;`kXg0vHdTn$5Ie;gpS4@djPPJ60-Z_1?!DwQz9NO2jKDbkZ^oJbQVc?6v#&0
zAW|kWVx3<Fd{13EHu#AMvMLttgQ0dq)XIELEARvE=hhR5{qe5*g%Oh{SLz3aZg)TG
z<)$odvL(GYzHIoUszN0fFOy2d966$<$0+G(N(jTzO0AWLLcfGPU-kWcIXKoXf+<}p
zDsR^wj`@~J_J8$V!K5Ra`<Jj5Exd$fRjSZ33dR#UcZWIwd%?dCxj_dHUMQgSe~@$Z
zd4OxEcLot3p0A@nt?xcmrV2VZzn8GZf4Ne!ejF%AC8~<FtI|cRY`)tTPLgyN;Ufl_
zE)%1Qag`!@!^7E!EEm^rdO%=f&-U)F8pmlj@yRIklx!wm!ccLx$RP6t>>tw#eTFT>
z$S^|&ZWo)7Lyes7r)@VL=2A|$JW1nr)ed9~F&(_uHC1f;YO_5oj&Afj!0(9M)7c*f
z$rra8Ji?1Bc%e|v^CcS{(B7RRCc7Wrrs=I7)f#8IE{rDM)o~`?Y8!;pSaL!lLHCZ%
z2RHV1+l?QSk}_AkH)`_s#(xKJ?jwKC`csy*aOGtV&`hmHIG<5hXtzm+=iQkb{pyZ<
z%;RxAP~z<%lTo;vNWd4mn;*jW+1tVM*tJ0j)}5|LR4#M7r{PkXJaW;yHBr@9pIuiG
z8V1M4Ci1&Z6T1I>(C@#6rJT=}<a#i%M9GT!FgB^z>4_MR%kp=0LFD)iInpDCFQ;rm
ziA+yF-c%|NyQ8);!vM6)#xu8qylq9(nieBl!@e}S5}R@)8LEU)Q|o0z)Z3vP);l2n
zvCG7gtlR2XtjF1}fhC?!r{BZ4#sNRJi-Kgt?Rd(rePR;wmE}rqM-z^#fA_=ptrRR~
zqS-A)prf=s19gdfPBn?#&j;!a+e1!wX7|RMt|@0KQ_^z7My)2<lo;N@J72>imN}+?
z&Ro$-#EC#FN(11}WJ|$X)eQ0hf7Xye3AhvowX$0|1+x+uY~g?ccTKswq+io;vFNd6
zr7#C9z4;>@b-tg$UzV@9U5hK{mDW{6%YjDa>FJu9Z8hZyN}pshPN=W>uI!^Q$kMqm
z+}IiQA9sdYvoB1IiBfX#m0axM;6c8}N>K$tD8kW56>r1h5t8J!3X0YAj1|Aw&~l@A
zxf2^V`F;A0W?i!7*yQ+#;?4!<SQJOexVso7VvN)kVC8udF_X*NK>!1ZQrBEI$9+-N
z6P_<vN=T6v>sTrV&}s7MX}77Nq}~KmQy&5T&0ZWX--y(<$MEOLGIm!7k)jQOWgg<o
z$EiQR{WVu<?}YJnU?3r{6w=3=$3cz$d`W3{!tvmy-0=!a$#p0!T4SS(4MA?BMpdnn
zMnj`h_%3AL=+rOlA&&F+6%k}WW>N0!Rg^`Bj<UC%UggShyne&)bOr}i9FQ`=Tgy0+
zSnQEi>3z7;;PquhhFnoqJeAbUfHR~d2;C{_De_Ogp81i65*qU(X5fweyv+B#w>RW0
zm&_<R%?Q|v&uIoWnY@$Se!+zn1{u|~mn%zZ;X4k9BH~tKK97^%B(Cku%urexPAimG
z@KQb&v+O|yO)|uiZQ(*d^klr-be9`{O*#XqWPz;z_6c~NVC0TSK+)8ICrY6Q+Yj}}
z#;2V=*0*FLxIH+lRjCzjmuesSQBn%kQ&=kBk9(inq!s?JLT$R)bIGbdzQ35n>w7Zm
z`YWfGxm^7MK^A>0nDITy;gz^Lzudv@BC&GT+^JOVExD%|?aa0W#9qe``&CHjF6vqV
zB8&tSqdhz{r4(|w3!g-DZKg>^k=!a74kk`D{P(2>&R~8kXP)^Ns3jTlnM7|b=I@?W
z*3YW^eW^H83@t)lUE4LAm#(ICbAZTgW?ohHU;Ok91QJvMGp6fHL|&TQb|ICaXi{OO
zrD__`B5>e)a6orX^!P5CsJZqQhI9-E6v4*!cC1vUi2?G|44quG+rfLS+7ZX;meFoT
zMa+fb0pH+x{|o<<pl;8GBql~}=fBa^_RqpY=_X@joNJOhPBjUFHgrA0ePVp2EazS~
zR~M1pFhq$ktCklw=Af<b=}*qSdvPlY4Kt|w?>7L<g3<<7=Xkl{g^*j!XTMXG-+_}e
z2_yr!FL`k<o{sS3%mp8)A_*gFJ0-RRRYk7s?n5ted4(Tw;=tbt+q}turueUSXYe*j
zLwxRA8;Z{@FMl$2z5yfEO&gFzzA+(QRwGc8DMi?_-8HSZS^W9e|8T)+z;;SkY2=P9
z2~$_0&8Xc(CJdq?do}t=`Hvi}KV6cRWM(K{{f6K3Vqk*(tb59)GSoKr5u-9ule`+r
z*(*bissbC;J&W8oHe*-IiB{7lW3D=M5lS*yBy&zQVBFWbK<3}z$C(~0JxhtVkrA+E
z`>^;cM5J4}K*7m~l#N2_qa(YL%G9rt7(fo;z(CaJOODkCKPA9`Bop?dIYFl3wBU&l
zdqN~tz4k#i1&+HT_N>0Qm%uxG;}xqfaciIXXK|67V<N{^*NT+>NTu0yzMz6pt6)m~
z7y^EZ+(wMlK9yMiwkhp&>cmXQoRzGf`o{MmkrGaxJY*%s0Dza_WczOvC8IXtY4zGE
zoAfaSy~MQoF^;l5RWb}DJq*S_&wp|_l<M%(wMEQ_(L~<PW+LVRSy}3aYAG8(1oZ6$
z*Bz2M#;njC;Azv4rWBY!pwFs|B=|XbXB$I18vHZ9z$cuDZg2jz=vRV^BXY9nGnrzo
zME~cWZ2gBLKbYcC;KIm`cIpbJGwvaGLp0Z%4g@-{{I_}w?24u4p-P(le|5i01eK~U
z6A%ujm)Tr=g)V~ElnicHHOfWqh1PU?@;^t;>kCAaR~iQkooeXo>yX+1hRw(?%#&k0
zm|IG1?>%mpBmLr(*DC>|Vr>bN;nKsdZLlS4*_h%G1n`;;6|sE0rg^T9KG)Swoz!z&
zJra776~H1@daS@C;jzI*0~;x5(E1Fpo!nLAV=SmM;Q>*#bxdaC<;wO{!IV4ONwN}f
z8NK=|T>UjQ5%%_C3KAVb1}wC~Feno-GH|l>&?HI*RX~t*0XtJ~S0R6Kst$kD*7mw&
z{mR31-KopNO5bKJqku0*PjnBKFE_1y_|tmDtiN7SF!NZpwNb5#sV6w^bu9#1B5K7#
z0N}))422cqc#^(uW?wJU*^KLe?VU&(*c6j;U6^LZcQoK4POU1{yKSH^?k2$VGLEWB
zog!7!3_Kl%apr)=%d3Rpw_4BDLZf!1tIdN&D;Yg?X2&j<sE#2v*T`Pyj0RR7N$r81
zh9z4CnMHPXHvEu?Mi>p0vSBqbz)XX`Wu2%`IWJS1s3lhZ7H--?PJxQLg$XONw$8qE
z@4G(S5}8yFwM`{Rdz9E__ZH{{Gusj%$t#w4+ac&G3wkM0n&qZPP}J9<G*@n^SOWIF
z_!gBQJBmz4&%2TtRxiA$5~Rj0sFmTV;8SySeyDnCCZZ!8Zv1vK^R3lOf~o!PQ=@6z
z*(aP18<wqq$KUGBi$b`OS6|7JlP8YP=B<J5&f`G+_i3-=T#KNTZ(XiHV0+W8l;6ag
z@B7cd5ZmF?h5)w9IE&5}3G|^M0iv799wILcWZB4R*GNw80&G!MnP7i`^>r*av-Zq-
z%NdhH1sgs~Oq9{PLkkxDiK6MQo36OTZrr&F7k6+F*a}5hV<;1u+B`QQSF#ti5`pI3
z@gvRFovLjNAri8~5<Qq%!lQCdHd1S;pzw!w)8N?69R$he5hGEuFcdoDc_|R3PFr%J
z@Ns9e8$AlSE{$TKK>4co-plD$yQSX*b95r9t@B%~eI2r9NqXw{mGRKtdG5*|wk~yO
zW)<mok6J?cUXsfSOpLKXHK{sbJfzqZAOw*8?Ns)(Gl*Zs$O}G+TJc;Sn#~N#!?{^%
zNQIP-f@Q&<F5(Rse7}2`wg2*j8T4t!)7b8TU9^T$CJ{RPJ(bRd!KJR2T@r4omzjSH
zUS5$2<OyvN+=9l(qoShiB;32^d6(I$|3;`@kJx%fhwqZBgQIGXyRn<%_V<ElS(f(A
z>?msL*Rlpy{X4OLKx;RTX5`t1RY4!(bJ`a7rJ?=xM7fwcCL;k7j%-*cj9NLfbojM=
zsFk;>hWcz(m*MFBO66YXrs>D4<B;D^@<d~|3!R^{^`a<|py62NZ0mkIV|;m-CtP&!
zibtbR?&#?JW~i%x**7Xq#!@!dH!OAn^R59`k_IJbXO^>!BqdqWy_oZ>c&}P@|L*1a
zVk(-?<3wy?;t9XLM*dyTj^XbicaVIM%BJouomO8jaqzV51LbTf>Ywq=#cXFtO*-oC
z$O(ezf}G*);p^d{5Cc9apUxWE7RHp-F$ne9h?~C!5ok6%glp3JFOLJd2A-Fm@I}<c
z?$&ZU^JWKwftbk$F}_RExUIX1S<GvUTUyu(nCNjFcOwT=uQ%chB!l_d3!<64Z=O|M
zYyD{ZVZ_35Pcq912$5(t!#;hZ{B|Zgjic@yfj!~=$4@xDBySDNIAs!j+oR6LvoxbL
zeD6QY_G`ISb3{l_wwD+R1bO>Id-s<nRgQAEugY!a7&!VoCu5|}-kMj+B-pqLe%E^>
z30mMGUBh}2LTd&+z4*b8fB8hNy+ke`kmJbFXYm9=Ud96znCvs;X<VjG(8F2YS5nIE
zWKgeFnw&QOdMF%6JLBG~s?p8oY}RUFByr^>a*GB`{*jEPp($~+DX+RP*)$prD03Z~
zot>}r&YE}7>5Wkie5E(*NC^ihU`Ed<x!Q6A0O-{S;Hk>F6Ezw%Y_=C72{{2}2gipm
z*Kp)Aa`c2J&xYYZ876z^z{Zt5pR2|?72(fT&g8MYt4OgJ8>+ZDr_oB=>9xhEw%27Y
zdZWI$a9GrD@5Los+iFbyl507c-TMRH3x)MMT{uczOKy3!ra7;z>2})#CRqJW`Jr@s
z)uA36KCgr8c)q);G>N2B3p4kyV4NWuoxzls;Xqq+eg~fI$A3otuea;KAQGd#L@`_H
zA12vy0BVLhln8XMstlX5M43pjjcZzAO3GUc$zV-2^wq;7JE(EwPLoa!*2(XgxwSlx
z2_J0xvN3`hnHWW^kuO7z`%AW8B~t4yhgSPHzS%y%$=}V7s+fZJ0#{k0^O+*L0|Zg4
zfX#xMrgl!s6Xo=iNk_&jq83fy!YAvDSuT8GO6%m58Pi*2YUR|;TQb;TdN=rqTpKIZ
z-p&;$N{lIA6N##--%mV~CtEEa4=)@J`4YoT@$9}xH&qcX>lvW>wj*s%n1(JbS$r*d
zK9ca~LMdTQ7v!Y34Q6Zh;50&tLX-E@$j3m@9%{iLEyrjeeM_lyMFuI6_pPMcUemdp
z%6;iM!PP84B5G<DSM+ZQK4~6(&7dRlc|ph`*K*%uakGp2KJ0+M<a*=d<Q`kVz0v_L
zJ$<Nj{8@4|s`f+>Q70B|+R^|BqipYC7_%BZRXP;eo#KZ6EBvBzlpn}@P3p}|8#I(4
zul0x<>TxI(s0g?8v|a89+n1)Jx##kH*g@FY*niUw?{Sqmm)Xi-<a>;WBKlUieBT&&
zR3bfdZ|yI{!e~+H2q@uF@=N3k*$H|RZpj@5hvmw~_Py+wV14-k8ynOVi-{@1gB;!g
zop(C8F2W!)$gD|@VYtF3M2`gl44ny?45baF7yCBl4PB@{E<U`XBvR@%>_nNFz6{2b
zr3nxXdd~S*FLLzzO#wytqw(<A=wo&EMN!KLN$Brg1&*CpU&dOKBT+fXzY2{`GIw;P
zC;Zi*Snv0K8#`GP2osOXd%-7kC->3PI0_%D56fEkMQPca=JX$gqH9aJ{ZpKvk8&kz
zVxpVpl56nj^P5R4Lm_KK_6W<!mDhJI2-3gKTO5xE{GtV2c9)ek!<WOd>eFW0cD?IY
zZu%H?$YfA5eBYF>2g^}+ig>LD^PgW_C#jRJ$|LNXl<Mz)QZ@(pe%z|bI+`2L1^B`Y
z&=7?K4<T$j8yKXdo6kf@rImhLNp6ZH_V%ZOw1OYkZ3oY|6LltF18G+J((W-l-A&Tr
zOE`LRWpnRVhfu0>ubK_b<UM2k{%+_GC0f%m2gh!{I|k!I4kW5*{WNJ19PjV%&%WUY
z$aPwGr>)pT9uqy)nlg?;4DG*(P@1w56aN4^TZM6bWUyCM1*1Czy}HIA#1w25=*y73
z^<0dmnQg(qFmL~t3lPYXx1H8~Zxg@d(x{4t40F=4{->PSRp{RzUs<!q^TzO~K5s*R
z=5N_xX|%MxWJw|f6AALwek%pu><?ixx8>zJHDlXejc7G)lY;8~fKsU-hk(590&9v&
zFxr}ZKJqco?V2qb5bnkeLoQVbyu32=?$Kwh?;N0OiGN|7=6`RkdoJ(JT@djZ8dUCb
za?z#~&v8Fm?V}L${Zr&aQ8JC0EF>X56u4pkjt-w^+1bG$r9f1OrJ$<6qE&iV7_}kN
zQweT&?sbJOanV*#E0|bLjkCC(vOm|{V<5MsimhiSt-uxzjxz9SMUvMQK{`~RZ+v_m
ztb%l8kCZHm@?oa?Mb$L;Bv2$(K*V=w5SD>$*ITQ!W*n%SOXJlQO>pLoRxLI#%aHpA
zmYUE<8T)d$P6F=j$+`7W&dSV^FR;c5cvU=igm6$Q0Bz?EE|?msF@JEX89DoMOUuTr
z`R{3)%|h-VtA7`wTgs8)s;PQ6$6IvQTsUzrO=Y6G!D)=Xx9w0$Gba6n1y?{dK@SoK
ze54vzFH|9D2~QbpUTb_H)IYDfa|J}Lq9?%CFHbsIB8(vc1WUKbA`4uL=6b&iurle2
zi(4jg{2hA5K*7uKNnBA0KV4x*3NO0jb^QuEWV&39?%#Ve9aEQ)AWUUwycBSf_o%|`
zTcm^fRU(B}U8I(N*#z&8fsGAkKpBAt5@UnRa>N{07@%qaw@bs$K2R5VP#c$2^Q%RQ
zVuW0slT(*~U8kk?duR;_jOTpmwrrbx->n}JX^_|@zO|a)I<OvSFn^co#`8M5(b|{F
zG7JZEPFs22$huX-wB%9HOmkv2OtA_R#Zz~>k@>X7HOQ(!z(#CF@`^7JGf<H}xBb?g
z1A>2aEfn1S0v}oHKo%uVUMDjl3<>f#kD$hfw(^nW(aRB6AaG-TDAh%oHjEJ=J$;2s
zNEtTUsuZa{ji(_8)1j8gUOb~B9fXBSc)<oHfQdpNhC+e?U$wZ;4!6LyDOD^fT-a}f
z9w12|S!`e090{gs5j@G}_8u8v&Gk(QH8*^8CHH@Et2+>M%Hfsu<`&aJGt{{#rePUQ
zno1K;1#~H`?Rd#V$}MtvkS~UOgsP~@^u^u{ua{D3V=Fa{2IKwI7>|!cOUteP#X!Z_
z0=9Z(Y!#lhZpJ0TKxMl6%R?6~lt!EvNztb>dbADO5-ZkYS1f(TlqF6|c^Euh&Dojz
z>7l<m)((*so}7cA=6{_~ecyNSKl#Zs+F2%1$D}saS_asjsZKG4>Ts0ClkTp5>|*~0
z_E{QdSna;}KOcu@*xbF3xyhffB&XIT`p{6hS*F))v#>=YEtJB9Cr*b2YtK$qd9@hS
zP$+_<J!B;kjh0ufL0V4Btmi^GYx~H9tEIs}vDv-0`Ie(^fT;{dFaP5davrh}41&(~
zP<^Kq;xMPFbDlSX5PQ^NPnTRu8Ikmk2h`j)ckW8{cAvPmxr6~r0u+C1mZgAabzzvc
z`RejqXWz+;ZSA5`5>%N43)URxgAF_fx!4#yRV$Y6W06mtQ<`6RwW>A*AaHVyEylR`
z2)a@71;tKHeL9Ik*CB!~)Qw;=Fl6gGLG;?;LTeerep>@XsgVh4FN73z`?Z=yj9;v%
zBxr{}l;h6)J_enD_Xs$w_!zAMpK(;B2{L7;9924=)DeQQG^=eR>S_sq&5Q6tF?!ZR
z5Qknd!5HirCsnTIK}aSQLQ_)EQtb#JSG@QUVD}mpOr(idOXutsza|QP5K1WjdsWrs
zkY855Sph`j8nzw^f)<WkFN2*;H`WqwPxWU^#Cg;j=-&pJBFPNYrFb4;{3M0InZzth
z<&*sp2&O-4JEsrFE=?VONQNCe(34A55sMtbfCQMcq)LZ}9DP7jA_y?8cgRhZGX>v#
zwC?)Bwo9-}lWq~G9ow>)3->q?FnXQ<$)Y*Vq?hu8MmH8aL1yGrPXCBBQZxc2c}gM_
zazx&=nWtc<uHwuvpknE2oNy#Z9Z}^iTV8aCkfx9toa?ez?iLJ)Mf<eMGd?rVY6<TC
zmFk9?i4I>(!DSU&y7M>VVWHK|f42<m5ftgfhX6;sU-=M1#=*}Xiboh}89HDUp>Z4$
zgM>V`3TB$s+ZXAeFq65x>B{Mdc~^YySq_px;%mpmr2Huz$C}=8-KJN$50%RxgBJ`5
zP&~~O#I1B_1NXRe11=!ZG+8?m1fW)N1v3M~LuJCB_sLZ){E+CtNyJ{zEW!m2t6~4F
z%H681*4phFkdH+Wb0LC&2rz`YF05QDpj#b^CS9c1iNN6yizQhsjIRb7ouDlN!>cKa
zg7n0;K8z}XHxXi2Ecua32b&VylFo$*L~5$eud(~1>99o0y<S5tK|l#wm>8R!&#45=
zN_$<&9xytjEu>6segSMd2}6=@3VVB@GhvK>e5(3kr&=sV&}-F69b-m9?Ip^S&_1rK
z)REQFT(LR2P6B9E<uhZoob`o)=x&RXPxtu56bJBD?fN^2LNGm1E3v7sb~f<9E+lU_
zl42i$=I`7zXF;RoyOudOGxMuK+?(%IHPXbrXQSJKJRG!ePN@o!v8VoV+>qR$$Fjhw
z@@PRbM9s{1I>jgtQ$A{Too_2xnL(GQD<Whui??l_s75MqV+Zo*sZlAfalxXj##~G7
z8USLx(Qhl8O*+(r#U-?4{9@0K&Sil>!IAjpSUUis4yB{sY$2}MT}d+!IfS_pu32*B
z(%fM}`E)&K1vl5$L@*MaDwYf>96D4c;kb|PKTS;+YgrY9Ko@0Q)3$VlDZzF2D5qzp
z3ooIC#iZNaZ8P4)aA|hlnC{a}TPrb~vTu2a+lFss)C;W1zZ926mndG{GXR|B)WfV}
z(w*ugyn0Rs7<BwPhE&s#t}Y(-C$ML<jkPS{0_byEui>_}^z1)X+M+)NXwrEU<mTEb
zd_B_0mL}X@Qh#lb1kgS5!1=&-V|KJjkD?JFA4btpEKOqTulWft>SMFwNFX_HD7RuV
z!p-X54t?QhInx8)RxXg9<TU9(Nmli*b|{QlU*B-1n*fUEPnXzqZrCNu1i<9GX+p8l
z7H{*v46*}QxC~b_y?=Q~Udm}Q0X6Sh>Gk>_MaF-=XqAoa3dpy^>ZnMr+Cdt={MR4L
zlI?2b=gsG3&Ijqpwy~pkv)Y=9n_|E|4ghMbhOV!U-CR;Kg+YdeFwVdfiyc*SZ33P=
z$^Lo3LKgdGzEro#sbQm;1h}cbE=gD;VPV$RSAC(NX#P3$r*wNcQV1ac_8s?7<*v<L
zU9l9-UDyS$Id{UHWsGWFE1gnPGLeot?)xvy&*&IJQ)=Os@^o|)-Obky)&>7Pd5{UE
zcj<@b8s(}ugB+l6X(Y2RciZYZr@$lnh&EYVD&Q;@IV#m~)&N`>i%eC8QGg&uMXI=s
zQLp~@6So9V;*{|ZngyWwRLWwzOCrXEh&`MazZ2wm)kNAKFDMMTX_jGA!oO_hJ-YRa
z$^tLI^PHPVUu(o9eNPBKBkY8oY*JvIpawcN$Hq>rF`BD0kq%ngOwjI!^ei&^{U1>=
z!^&Yoa|y-vSLjPKIP(7C?$zHcE6TomiB6zAM~x|S=v76w%>=hQ$rVordZSPGH_r!u
za~NE4L)9W;Zi;ur8=N=;g2x`9ew-T?zd44CWDowkmcCKC2ZEkwyy{Cgf?DBwA)VTz
zfJ;~J*q-_{>l2<CI2?IvD5fAP(cO*wiqT`G_qA<`{Q~*i6Zw*Zmjk_sNbs|hdX?}5
zV72*=azTYG41>=#Z#w%BHa5yiZUb#89mRN|$!s*X41Sj}m@%Y%D8!j#oex}HpuLkT
zi_70a875WHbj(&5q=Cb3*-Fn-b_=@DxVxh?M%~C<P(mNex03tK(SOZHht}QSMp{-?
zcE*NkJklFH30(LT;yg<|JC&#vuo2RMhmc0nFKC&(AKbC~e{ry`dCK_kp$fM#V-LYl
zyv~I-{|gBRvJ6D-$tqC+G(+(dY4C=oMsqKR&vF^L6ZhvL1HAqz8St#m@1>#aO%I9A
zfDhFlS)5h5m^sgc`qgo&LB;4CbJ+4Do$EQJL-i45cQ|%b4D${*iHS6$Z!lFja4{Z&
zm_cQ;+$jmX_Ipjb?|qoQbz3TEQd<lriZ=e#{>@UgHO-t8i<PXyvV_GNFZw}RXDu{h
zNP9g)Uqu29!Go*qHcgG{zNj+8ANdOSt`oeXs)m39cy@{PY}|V{cHfmvWK)qi<v^sS
zb9`$|cQaLN?3zSVgiC?>&2#uH*%Y+@t8HptKD;^>9mRb|<ND@|l^aRq*exoNI6fgN
z7AjY+CI_ijRe`IIIC@=nJX7Lmh%2#?@aTSbjdnR$CpZk7LB4VOyt24IcS_^RYC0}p
zqWC8^X~;3mAF-M-7CKQ4oJ2uE?+E$oOL3-txZf-lOb&C*G{P-RRe8AGU$ys10~am&
z3!ygYVyX@NtDeaIwb9h~nQjY;ZMvuDlQEpE#gokgY^CTFK|>w53r?9PIIfP$v|io_
z*cIdNpF96_?%r4O-CUdtgPsVgQ7~>`(Iv=~Vz&=N0I0@6UyQtkp156a;eRI#QPSg>
zAcDjr+gD33>K!@@N;gSJr1%xowp?n{?=lK{fWo0V0xrMs(<TSsU(>WD=)!hLrQ-FS
z@!mYs_Wz~@&+paJijML41V^ce<Xln8>^;23KtbY_xNJK<ufBhlZC-2uoxT-Q1tZ&w
ze1?PtFO*L9a`T0Z>z@7&zTeFEoHm7;$(UI=YQFs#$@ptk!EQ42Y4FfxEf@TOsVt37
z<AsaC9V$e6xU*ICDmLJd`_El3LLq@rvvSLV{%}&ze@8xty9b;@@Yq6m;Ieh9_}t)r
z_*-S62j0hhFIucriu%4swS{n-Rp1ok^<2YNf6H!kZpQg9rr@uF&jFc4k~Qy(h*cw4
zqHkV1pWW&!-z(KiWVqCe*qajpC5v2Kz^E&i;!TGL3Uq}|hf1HlfX<*#_`IQy)VMPS
z4-?GH<No%rwy#evmcGO^6+Fr2dIVslhL-LqC8x;Vhqlw-?AS6;9*@cyD8Aeg-J1La
zo(Y#2B==h#L;R({%VL(0PTrbdx5)-k{YRmAeLna=-w`t2?|5yaqPfg{h1bVR87?fX
zREBYBN5}7V*ZEV3&U1yx{ZU&Toftn2M8Doj&X0qGi$~KqT4$OAVLX8TLkYi2{8ND5
zV1vIKLF_DEc&#4E!c>}4AVbnC9Ri){mLjd@o@_vA;wzpV8<N!xa$%uh<J8jWf14^S
zHZj_z?^{0lvs+s+;_8*h9p%*_0}ulexg>G_ypN3Y=M08M6ZfM2Xtkpu^=A9}u!A?A
z)0NYU%Y#TSSE#tnm<fz1#uF#CH7O-3!ge6sAxVa9h=vYet_TPc)YOj<7RP>?KTmo4
zd|UY(Tqjl;m?`7^R${$QG*ZIW=)p?(%lWYXyf8k9{rdP=)z$ty1cAPSJfgXTOPXN1
z^D-Pknjk$jWsP@0+o&sn#8=lA=)a-i-j|YE5DwZ9s#vk3w-c?}%C?C;Q@<(1;-i>L
zl}SN#MAX*71GGR14&RiPaHe@3srrMMPYHjml+|aGSDU_fRi{h1_NlT;MHYR@D(IR3
zt6;N#m)Tdz?)V=$7s!&Z;ZdmJFd0m>InR~Umqz^)eM=coLx(q4tw%~Z0U73ho^=Mj
zF)fREGIOlh6`*ARYk?K%ir!a_Yvw9snW){J#zyP<3!<lNPW`9f=o+B9;#r4`Mk=}n
z0KH~&m9lEC_JkGbiC1bCDYJ<bdJGDR9ujkz9xb0%=U%c=qiOqXeL$zY(NhrC@RaTT
zO+ka8#Dot6DYEQ`7#Y!xHerej^fdVZ44)|x(F246vT#h?YC_xD5%@nvdQqFw<bsfc
zz9TE(<4+}PZ+^1}w#@h5q_if#+TQ;DJLvSL2c}_v1cvr*%vgEhZ|5}b`&-;<$_vju
zKQI6U*W70}n)HYKN<)#E|FM#k%0WxgeO+u%+V{fLw0`in<KNIhYz`?aLZpOBi4_S#
z{bfj=yOQctL)i~e+(-Cm;IE$S9<;p6m{Kbtv-=_PIs+&n4|W4re!HcS=~o(UFmFZr
z9UGY;H?=9Fd7{Otw_#7{@jQx>#qD8Q_2~d|so+(Xc54smil}_4kGqEK^l7mVKQmM+
zBR70H=a2QXGB!3jg`P(Kg~lE^KQr-y_EVJi%}cMMzb+f?)6-|yp{Qz<m#I;CHl3}+
zs@HUtnr4Sl>pZdk)-9EhXzQpEZ(ZuvkddnL`d4Y{JQ>J+Eg}}BSG<VamR<0k$ub55
zqiQ{CC_AVf##4NCZ5?zS+wg}AagNi+GMoCxB|=X)Bw6a84g7)j=;a-}imhLgImm_~
zA0a7XB)gly54*+5yy_yxPtxWEWdlV?dF4RZ$E4=1RM^k}g1<uF8O5EzbRn0WBbgc@
zUyfft<<oKI?2@fpWaa98bWk+Ny*ngp@zEsSi7N^kv()E*k2@yI<`~La7l%DPK~9uz
zykOgz^^|`yn(kuJAHKCiKJl4RbB>kUqgbqYuem+;8++@MM(|;Eh?pTI_O&4Gy6<Yy
zAF5pbN=7mJU^iu^x(vrKGFO94=ozM<KaBHo9{TT44C)0v`!(^#=>PBOnIB)^cWfo!
V^Rh-@K?jDw<fWCR8YN7^{tq&rA1MF;

diff --git a/vendor/gopkg.in/tylerb/graceful.v1/.gitignore b/vendor/gopkg.in/tylerb/graceful.v1/.gitignore
deleted file mode 100644
index 83656241..00000000
--- a/vendor/gopkg.in/tylerb/graceful.v1/.gitignore
+++ /dev/null
@@ -1,23 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
diff --git a/vendor/gopkg.in/tylerb/graceful.v1/.travis.yml b/vendor/gopkg.in/tylerb/graceful.v1/.travis.yml
deleted file mode 100644
index 66fdff76..00000000
--- a/vendor/gopkg.in/tylerb/graceful.v1/.travis.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-language: go
-sudo: false
-go:
-  - 1.7
-  - 1.6.2
-  - 1.5.4
-  - 1.4.3
-  - 1.3.3
-before_install:
-  - go get github.com/mattn/goveralls
-  - go get golang.org/x/tools/cmd/cover
-script:
-  - $HOME/gopath/bin/goveralls -service=travis-ci
diff --git a/vendor/gopkg.in/tylerb/graceful.v1/README.md b/vendor/gopkg.in/tylerb/graceful.v1/README.md
deleted file mode 100644
index 328c3acf..00000000
--- a/vendor/gopkg.in/tylerb/graceful.v1/README.md
+++ /dev/null
@@ -1,152 +0,0 @@
-graceful [![GoDoc](https://godoc.org/github.com/tylerb/graceful?status.png)](http://godoc.org/github.com/tylerb/graceful) [![Build Status](https://travis-ci.org/tylerb/graceful.svg?branch=master)](https://travis-ci.org/tylerb/graceful) [![Coverage Status](https://coveralls.io/repos/tylerb/graceful/badge.svg)](https://coveralls.io/r/tylerb/graceful) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/tylerb/graceful?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
-========
-
-Graceful is a Go 1.3+ package enabling graceful shutdown of http.Handler servers.
-
-## Installation
-
-To install, simply execute:
-
-```
-go get gopkg.in/tylerb/graceful.v1
-```
-
-I am using [gopkg.in](http://labix.org/gopkg.in) to control releases.
-
-## Usage
-
-Using Graceful is easy. Simply create your http.Handler and pass it to the `Run` function:
-
-```go
-package main
-
-import (
-  "gopkg.in/tylerb/graceful.v1"
-  "net/http"
-  "fmt"
-  "time"
-)
-
-func main() {
-  mux := http.NewServeMux()
-  mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
-    fmt.Fprintf(w, "Welcome to the home page!")
-  })
-
-  graceful.Run(":3001",10*time.Second,mux)
-}
-```
-
-Another example, using [Negroni](https://github.com/codegangsta/negroni), functions in much the same manner:
-
-```go
-package main
-
-import (
-  "github.com/codegangsta/negroni"
-  "gopkg.in/tylerb/graceful.v1"
-  "net/http"
-  "fmt"
-  "time"
-)
-
-func main() {
-  mux := http.NewServeMux()
-  mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
-    fmt.Fprintf(w, "Welcome to the home page!")
-  })
-
-  n := negroni.Classic()
-  n.UseHandler(mux)
-  //n.Run(":3000")
-  graceful.Run(":3001",10*time.Second,n)
-}
-```
-
-In addition to Run there are the http.Server counterparts ListenAndServe, ListenAndServeTLS and Serve, which allow you to configure HTTPS, custom timeouts and error handling.
-Graceful may also be used by instantiating its Server type directly, which embeds an http.Server:
-
-```go
-mux := // ...
-
-srv := &graceful.Server{
-  Timeout: 10 * time.Second,
-
-  Server: &http.Server{
-    Addr: ":1234",
-    Handler: mux,
-  },
-}
-
-srv.ListenAndServe()
-```
-
-This form allows you to set the ConnState callback, which works in the same way as in http.Server:
-
-```go
-mux := // ...
-
-srv := &graceful.Server{
-  Timeout: 10 * time.Second,
-
-  ConnState: func(conn net.Conn, state http.ConnState) {
-    // conn has a new state
-  },
-
-  Server: &http.Server{
-    Addr: ":1234",
-    Handler: mux,
-  },
-}
-
-srv.ListenAndServe()
-```
-
-## Behaviour
-
-When Graceful is sent a SIGINT or SIGTERM (possibly from ^C or a kill command), it:
-
-1. Disables keepalive connections.
-2. Closes the listening socket, allowing another process to listen on that port immediately.
-3. Starts a timer of `timeout` duration to give active requests a chance to finish.
-4. When timeout expires, closes all active connections.
-5. Closes the `stopChan`, waking up any blocking goroutines.
-6. Returns from the function, allowing the server to terminate.
-
-## Notes
-
-If the `timeout` argument to `Run` is 0, the server never times out, allowing all active requests to complete.
-
-If you wish to stop the server in some way other than an OS signal, you may call the `Stop()` function.
-This function stops the server, gracefully, using the new timeout value you provide. The `StopChan()` function
-returns a channel on which you can block while waiting for the server to stop. This channel will be closed when
-the server is stopped, allowing your execution to proceed. Multiple goroutines can block on this channel at the
-same time and all will be signalled when stopping is complete.
-
-### Important things to note when setting `timeout` to 0:
-
-If you set the `timeout` to `0`, it waits for all connections to the server to disconnect before shutting down. 
-This means that even though requests over a connection have finished, it is possible for the client to hold the
-connection open and block the server from shutting down indefinitely.
-
-This is especially evident when graceful is used to run HTTP/2 servers. Clients like Chrome and Firefox have been
-observed to hold onto the open connection indefinitely over HTTP/2, preventing the server from shutting down. In 
-addition, there is also the risk of malicious clients holding and keeping the connection alive.
-
-It is understandable that sometimes, you might want to wait for the client indefinitely because they might be
-uploading large files. In these type of cases, it is recommended that you set a reasonable timeout to kill the
-connection, and have the client perform resumable uploads. For example, the client can divide the file into chunks
-and reupload chunks that were in transit when the connection was terminated.
-
-## Contributing
-
-If you would like to contribute, please:
-
-1. Create a GitHub issue regarding the contribution. Features and bugs should be discussed beforehand.
-2. Fork the repository.
-3. Create a pull request with your solution. This pull request should reference and close the issues (Fix #2).
-
-All pull requests should:
-
-1. Pass [gometalinter -t .](https://github.com/alecthomas/gometalinter) with no warnings.
-2. Be `go fmt` formatted.
diff --git a/vendor/gopkg.in/yaml.v2/.travis.yml b/vendor/gopkg.in/yaml.v2/.travis.yml
deleted file mode 100644
index 004172a2..00000000
--- a/vendor/gopkg.in/yaml.v2/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: go
-
-go:
-    - 1.4
-    - 1.5
-    - 1.6
-    - tip
-
-go_import_path: gopkg.in/yaml.v2
diff --git a/vendor/gopkg.in/yaml.v2/README.md b/vendor/gopkg.in/yaml.v2/README.md
deleted file mode 100644
index 2ed3314c..00000000
--- a/vendor/gopkg.in/yaml.v2/README.md
+++ /dev/null
@@ -1,135 +0,0 @@
-# YAML support for the Go language
-
-Introduction
-------------
-
-The yaml package enables Go programs to comfortably encode and decode YAML
-values. It was developed within [Canonical](https://www.canonical.com) as
-part of the [juju](https://juju.ubuntu.com) project, and is based on a
-pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)
-C library to parse and generate YAML data quickly and reliably.
-
-Compatibility
--------------
-
-The yaml package supports most of YAML 1.1 and 1.2, including support for
-anchors, tags, map merging, etc. Multi-document unmarshalling is not yet
-implemented, and base-60 floats from YAML 1.1 are purposefully not
-supported since they're a poor design and are gone in YAML 1.2.
-
-Installation and usage
-----------------------
-
-The import path for the package is *gopkg.in/yaml.v2*.
-
-To install it, run:
-
-    go get gopkg.in/yaml.v2
-
-API documentation
------------------
-
-If opened in a browser, the import path itself leads to the API documentation:
-
-  * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2)
-
-API stability
--------------
-
-The package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in).
-
-
-License
--------
-
-The yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details.
-
-
-Example
--------
-
-Some more examples can be found in the "examples" folder.
-
-```Go
-package main
-
-import (
-        "fmt"
-        "log"
-
-        "gopkg.in/yaml.v2"
-)
-
-var data = `
-a: Easy!
-b:
-  c: 2
-  d: [3, 4]
-`
-
-// Note: struct fields must be public in order for unmarshal to
-// correctly populate the data.
-type T struct {
-        A string
-        B struct {
-                RenamedC int   `yaml:"c"`
-                D        []int `yaml:",flow"`
-        }
-}
-
-func main() {
-        t := T{}
-    
-        err := yaml.Unmarshal([]byte(data), &t)
-        if err != nil {
-                log.Fatalf("error: %v", err)
-        }
-        fmt.Printf("--- t:\n%v\n\n", t)
-    
-        d, err := yaml.Marshal(&t)
-        if err != nil {
-                log.Fatalf("error: %v", err)
-        }
-        fmt.Printf("--- t dump:\n%s\n\n", string(d))
-    
-        m := make(map[interface{}]interface{})
-    
-        err = yaml.Unmarshal([]byte(data), &m)
-        if err != nil {
-                log.Fatalf("error: %v", err)
-        }
-        fmt.Printf("--- m:\n%v\n\n", m)
-    
-        d, err = yaml.Marshal(&m)
-        if err != nil {
-                log.Fatalf("error: %v", err)
-        }
-        fmt.Printf("--- m dump:\n%s\n\n", string(d))
-}
-```
-
-This example will generate the following output:
-
-```
---- t:
-{Easy! {2 [3 4]}}
-
---- t dump:
-a: Easy!
-b:
-  c: 2
-  d: [3, 4]
-
-
---- m:
-map[a:Easy! b:map[c:2 d:[3 4]]]
-
---- m dump:
-a: Easy!
-b:
-  c: 2
-  d:
-  - 3
-  - 4
-```
-
-- 
GitLab