diff --git a/.dockerignore b/.dockerignore index 5657f6ea7..e0caea8fc 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,2 @@ -vendor \ No newline at end of file +.idea/ +vendor/ \ No newline at end of file diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index de349fcc0..454ed151b 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -20,12 +20,12 @@ jobs: name: Tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: - go-version: '1.19' + go-version: '1.21' - name: Dependencies run: go mod download @@ -46,12 +46,12 @@ jobs: needs: - tests steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: - go-version: '1.19' + go-version: '1.21' - name: Dependencies run: go mod download @@ -59,13 +59,8 @@ jobs: - name: Download UI run: go run cmd/download_ui/download_ui.go - - name: Run Packr - run: | - go run github.com/gobuffalo/packr/v2/packr2 - git checkout -- ./packrd/dummy.go - - name: Release - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v6 if: startsWith(github.ref, 'refs/tags/v') with: version: latest @@ -81,14 +76,14 @@ jobs: - tests steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Docker build run: | docker build -t $DOCKER_IMAGE_NAME:dev --build-arg VERSION=${{ github.ref_name }} . - name: Log in to the Container registry - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + uses: docker/login-action@v3 if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/master') with: registry: ghcr.io diff --git a/.gitignore b/.gitignore index bf1f332fd..31ce3f49f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ +.idea/ +db/ +dist/ +vendor/ + *.swp main *.test @@ -8,10 +13,6 @@ cayley.json .cayley_history .DS_Store -db/ -dist/ -vendor/ -ui/ packrd/packed-* # The build binary /cayley diff --git a/.goreleaser.yml b/.goreleaser.yml index 614046a26..ecd673e19 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -9,7 +9,6 @@ builds: - windows goarch: - amd64 - - "386" - arm64 - arm ignore: diff --git a/AUTHORS b/AUTHORS index 2cee15ce1..e87f0c9a2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -12,7 +12,7 @@ Alexander Peters Andrew Dunham Bram Leenders Brendan Ball -Denys Smirnov +Denys Smirnov Derek Liang Iddan Aaronsohn Google Inc. diff --git a/CONTRIBUTORS b/CONTRIBUTORS index f61679c5f..e603c16b6 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -13,7 +13,7 @@ Barak Michener Bram Leenders Brendan Ball Connor Newton -Denys Smirnov +Denys Smirnov Derek Liang Gaurav Tiwari Iddan Aaronsohn diff --git a/Dockerfile b/Dockerfile index a7e197ce0..65df3a99b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,7 @@ -FROM golang:1.19 as builder +FROM golang:1.21 as builder ARG VERSION=v0.8.x-dev -# Install packr -RUN go install github.com/gobuffalo/packr/v2/packr2@latest - # Create filesystem for minimal image WORKDIR /fs @@ -21,16 +18,9 @@ WORKDIR /src COPY go.mod go.sum ./ RUN go mod download -# Copy UI download script and execute -COPY cmd/download_ui/ ./cmd/download_ui/ -RUN go run cmd/download_ui/download_ui.go - # Add all the other files ADD . . -# Run packr to generate .go files that pack the static files into bytes that can be bundled into the Go binary. -RUN packr2 - # Pass a Git short SHA as build information to be used for displaying version RUN GIT_SHA=$(git rev-parse --short=12 HEAD); \ go build \ diff --git a/cmd/download_ui/download_ui.go b/cmd/download_ui/download_ui.go index 5bbdaee41..d47f85f56 100644 --- a/cmd/download_ui/download_ui.go +++ b/cmd/download_ui/download_ui.go @@ -15,7 +15,7 @@ const ( version = "v0.8.0" fileURL = "https://github.com/cayleygraph/web/releases/download/" + version + "/web.zip" fileName = "web.zip" - directoryName = "ui" + directoryName = "ui/web" ) func main() { diff --git a/docs/contributing.md b/docs/contributing.md index b3d365183..08edf12ec 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -6,12 +6,6 @@ Join our community on [discourse.cayley.io](https://discourse.cayley.io) or othe ## Simply building Cayley -If your version of Go < 1.13, you need to run: - -```text -export GO111MODULE=on -``` - Follow the instructions for running Cayley locally: ```text @@ -22,19 +16,11 @@ cd cayley # Download dependencies go mod download -# Download web files (optional) +# Update web files (optional) go run cmd/download_ui/download_ui.go - -# Install packr 2 - -go get -u github.com/gobuffalo/packr/v2/packr2 ``` -# Generate static files go modules - -packr2 - # build the binary go build ./cmd/cayley @@ -61,21 +47,11 @@ You can now open the WebUI in your browser: [http://127.0.0.1:64210](http://127. ## Hacking on Cayley -First, you'll need Go [\(version 1.11.x or greater\)](https://golang.org/doc/install) and a Go workspace. This is outlined by the Go team at [http://golang.org/doc/code.html](http://golang.org/doc/code.html) and is sort of the official way of going about it. - -If your version of Go < 1.13, you need to run: - -```text -export GO111MODULE=on -``` - If you just want to build Cayley and check out the source, or use it as a library, a simple `go get github.com/cayleygraph/cayley` will work! But suppose you want to contribute back on your own fork \(and pull requests are welcome!\). A good way to do this is to set up your \$GOPATH and then... ```text -mkdir -p $GOPATH/src/github.com/cayleygraph -cd $GOPATH/src/github.com/cayleygraph git clone https://github.com/$GITHUBUSERNAME/cayley ``` @@ -97,7 +73,7 @@ With that in place, that folder will reflect your local fork, be able to take ch For iterating, it can be helpful to, from the directory, run ```text -packr2 && go build ./cmd/cayley && ./cayley +go build ./cmd/cayley && ./cayley ``` Which will also resolve the relevant static content paths for serving HTTP. @@ -106,16 +82,10 @@ Which will also resolve the relevant static content paths for serving HTTP. ## Running Unit Tests -If your version of Go < 1.13, you need to run: - -```text -export GO111MODULE=on -``` - First, `cd` into the `cayley` project folder and run: ```text -packr && go test ./... +go test ./... ``` If you have a Docker installed, you can also run tests for remote backend implementations: diff --git a/docs/getting-involved/contributing.md b/docs/getting-involved/contributing.md index 26d465050..6b759d54d 100644 --- a/docs/getting-involved/contributing.md +++ b/docs/getting-involved/contributing.md @@ -24,13 +24,9 @@ cd cayley # Download dependencies go mod download -# Download web files (optional) +# Update web files (optional) go run cmd/download_ui/download_ui.go - -# Install packr 2 - -go get -u github.com/gobuffalo/packr/v2/packr2 ``` ## Generate static files go modules @@ -117,7 +113,7 @@ export GO111MODULE=on First, `cd` into the `cayley` project folder and run: ```text -packr && go test ./... +go test ./... ``` If you have a Docker installed, you can also run tests for remote backend implementations: diff --git a/go.mod b/go.mod index 6b592e701..05c8c2c4e 100644 --- a/go.mod +++ b/go.mod @@ -1,38 +1,40 @@ module github.com/cayleygraph/cayley -go 1.19 +go 1.22 + +toolchain go1.22.5 require ( github.com/badgerodon/peg v0.0.0-20130729175151-9e5f7f4d07ca - github.com/cayleygraph/quad v1.2.5 + github.com/cayleygraph/quad v1.3.0 github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 github.com/dennwc/graphql v0.0.0-20180603144102-12cfed44bc5d - github.com/dgraph-io/badger v1.6.0 - github.com/dop251/goja v0.0.0-20230707174833-636fdf960de1 - github.com/fsouza/go-dockerclient v1.2.2 - github.com/go-sql-driver/mysql v1.7.1 - github.com/gobuffalo/packr/v2 v2.8.3 - github.com/gogo/protobuf v1.3.2 - github.com/golang/glog v1.1.1 + github.com/dgraph-io/badger v1.6.2 + github.com/dop251/goja v0.0.0-20240627195025-eb1f15ee67d2 + github.com/fsouza/go-dockerclient v1.11.0 + github.com/go-sql-driver/mysql v1.8.1 + github.com/golang/glog v1.2.1 github.com/hidal-go/hidalgo v0.3.0 - github.com/jackc/pgx v3.6.2+incompatible + github.com/jackc/pgx/v5 v5.6.0 github.com/julienschmidt/httprouter v1.3.0 github.com/lib/pq v1.10.9 - github.com/mattn/go-sqlite3 v1.14.17 + github.com/mattn/go-sqlite3 v1.14.22 github.com/peterh/liner v1.2.2 - github.com/piprate/json-gold v0.3.0 - github.com/prometheus/client_golang v1.16.0 - github.com/spf13/cobra v1.7.0 - github.com/spf13/viper v1.16.0 - github.com/stretchr/testify v1.8.4 + github.com/piprate/json-gold v0.5.0 + github.com/prometheus/client_golang v1.19.1 + github.com/spf13/cobra v1.8.1 + github.com/spf13/viper v1.19.0 + github.com/stretchr/testify v1.9.0 github.com/syndtr/goleveldb v1.0.0 github.com/tylertreat/BoomFilters v0.0.0-20210315201527-1a82519a3e43 - golang.org/x/crypto v0.11.0 - golang.org/x/net v0.12.0 - google.golang.org/appengine v1.6.7 + golang.org/x/crypto v0.25.0 + golang.org/x/net v0.27.0 + google.golang.org/appengine v1.6.8 + google.golang.org/protobuf v1.34.2 ) require ( + filippo.io/edwards25519 v1.1.0 // indirect github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/DataDog/zstd v1.5.0 // indirect @@ -44,94 +46,94 @@ require ( github.com/cenkalti/backoff v2.2.1+incompatible // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/cockroachdb/apd v1.1.0 // indirect github.com/cockroachdb/errors v1.9.0 // indirect github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/pebble v0.0.0-20220318150003-0ad186894f6d // indirect github.com/cockroachdb/redact v1.1.3 // indirect github.com/containerd/containerd v1.7.2 // indirect github.com/containerd/continuity v0.4.1 // indirect + github.com/containerd/log v0.1.0 // indirect github.com/d4l3k/messagediff v1.2.1 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.0 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dlclark/regexp2 v1.10.0 // indirect - github.com/docker/docker v24.0.4+incompatible // indirect + github.com/docker/docker v25.0.4+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/getsentry/sentry-go v0.13.0 // indirect github.com/go-kivik/couchdb v2.0.0+incompatible // indirect github.com/go-kivik/kivik v2.0.0+incompatible // indirect github.com/go-kivik/pouchdb v2.0.1+incompatible // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/go-stack/stack v1.8.1 // indirect - github.com/gobuffalo/logger v1.0.7 // indirect - github.com/gobuffalo/packd v1.0.2 // indirect - github.com/gofrs/uuid v4.4.0+incompatible // indirect + github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.4.0 // indirect github.com/gopherjs/gopherjs v0.0.0-20220221023154-0b2280d3ff96 // indirect github.com/gopherjs/jsbuiltin v0.0.0-20180426082241-50091555e127 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/puddle/v2 v2.2.1 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/karrick/godirwalk v1.17.0 // indirect - github.com/klauspost/compress v1.16.7 // indirect + github.com/klauspost/compress v1.17.2 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/markbates/errx v1.1.0 // indirect - github.com/markbates/oncer v1.0.0 // indirect - github.com/markbates/safe v1.0.1 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/moby/patternmatcher v0.5.0 // indirect + github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/sequential v0.5.0 // indirect + github.com/moby/sys/user v0.1.0 // indirect + github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect + github.com/morikuni/aec v1.0.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b // indirect github.com/opencontainers/runc v1.1.5 // indirect github.com/ory/dockertest v3.3.5+incompatible // indirect github.com/otiai10/copy v1.12.0 // indirect github.com/pborman/uuid v1.2.1 // indirect - github.com/pelletier/go-toml/v2 v2.0.9 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.10.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/pquerna/cachecontrol v0.2.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect - github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/afero v1.9.5 // indirect - github.com/spf13/cast v1.5.1 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/subosito/gotenv v1.4.2 // indirect + github.com/subosito/gotenv v1.6.0 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect go.etcd.io/bbolt v1.3.7 // indirect go.mongodb.org/mongo-driver v1.8.4 // indirect - golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705 // indirect - golang.org/x/mod v0.12.0 // indirect - golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.10.0 // indirect - golang.org/x/term v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect - golang.org/x/tools v0.11.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/protobuf v1.31.0 // indirect + go.uber.org/atomic v1.9.0 // indirect + go.uber.org/multierr v1.9.0 // indirect + golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect + golang.org/x/mod v0.19.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.22.0 // indirect + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/olivere/elastic.v5 v5.0.86 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 1e130d19a..1dfcc15da 100644 --- a/go.sum +++ b/go.sum @@ -1,45 +1,9 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= @@ -60,29 +24,25 @@ github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0 github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/hcsshim v0.10.0-rc.8 h1:YSZVvlIIDD1UxQpJp0h+dnpLUw+TrY0cx8obKsp3bek= +github.com/Microsoft/hcsshim v0.10.0-rc.8/go.mod h1:OEthFdQv/AD2RAdzR6Mm1N1KPCztGKDurW1Z8b8VGMM= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go v1.29.11/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/badgerodon/peg v0.0.0-20130729175151-9e5f7f4d07ca h1:77KAMse6RWRpPfVnIZcAtJ/5ZK/oRCeY94ZjIWSbe0g= github.com/badgerodon/peg v0.0.0-20130729175151-9e5f7f4d07ca/go.mod h1:TWe0N2hv5qvpLHT+K16gYcGBllld4h65dQ/5CNuirmk= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/cayleygraph/quad v1.2.5 h1:su0zl5KJGrLGGyMwbuzO6bK6miJPJnXHETS1DdXKjLY= -github.com/cayleygraph/quad v1.2.5/go.mod h1:cyhGxjj93c2fcs3/vjVQmWmChzcJTz3cu1/GkesNLnY= +github.com/cayleygraph/quad v1.3.0 h1:xg7HOLWWPgvZ4CcvzEpfCwq42L8mzYUR+8V0jtYoBzc= +github.com/cayleygraph/quad v1.3.0/go.mod h1:NadtM7uMm78FskmX++XiOOrNvgkq0E1KvvhQdMseMz4= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -92,19 +52,10 @@ github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= github.com/cockroachdb/datadriven v1.0.1-0.20211007161720-b558070c3be0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= github.com/cockroachdb/datadriven v1.0.1-0.20220214170620-9913f5bc19b7/go.mod h1:hi0MtSY3AYDQNDi83kDkMH5/yqM/CsIrsOITkSoH7KI= @@ -129,30 +80,36 @@ github.com/containerd/containerd v1.7.2 h1:UF2gdONnxO8I6byZXDi5sXWiWvlW3D/sci7dT github.com/containerd/containerd v1.7.2/go.mod h1:afcz74+K10M/+cjGHIVQrCt3RAQhUSCAjJ9iMYhhkuI= github.com/containerd/continuity v0.4.1 h1:wQnVrjIyQ8vhU2sgOiL5T07jo+ouqc2bnKsv5/EqGhU= github.com/containerd/continuity v0.4.1/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dennwc/graphql v0.0.0-20180603144102-12cfed44bc5d h1:QWlaiMNg63HE5qimJd4stjg9l1Ca4BKcgs+UNSWPJ+s= github.com/dennwc/graphql v0.0.0-20180603144102-12cfed44bc5d/go.mod h1:lg9KQn0BgRCSCGNpcGvJp/0Ljf1Yxk8TZq9HSYc43fk= -github.com/dgraph-io/badger v1.6.0 h1:DshxFxZWXUcO0xX476VJC07Xsr6ZCBVRHKZ93Oh7Evo= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= +github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= @@ -160,94 +117,77 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0= github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/docker/docker v24.0.4+incompatible h1:s/LVDftw9hjblvqIeTiGYXBCD95nOEEl7qRsRrIOuQI= -github.com/docker/docker v24.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v25.0.4+incompatible h1:XITZTrq+52tZyZxUOtFIahUf3aH367FLxJzt9vZeAF8= +github.com/docker/docker v25.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja v0.0.0-20230707174833-636fdf960de1 h1:sC/DYk3eEi5cKkpJX1vl+CpAM138dmuW7rutje9Eo4E= -github.com/dop251/goja v0.0.0-20230707174833-636fdf960de1/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= -github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= -github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= +github.com/dop251/goja v0.0.0-20240627195025-eb1f15ee67d2 h1:4Ew88p5s9dwIk5/woUyqI9BD89NgZoUNH4/rM/h2UDg= +github.com/dop251/goja v0.0.0-20240627195025-eb1f15ee67d2/go.mod h1:o31y53rb/qiIAONF7w3FHJZRqqP3fzHUr1HqanthByw= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flimzy/diff v0.1.7 h1:DRbd+lN3lY1xVuQrfqvDNsqBwA6RMbClMs6tS5sqWWk= +github.com/flimzy/diff v0.1.7/go.mod h1:lFJtC7SPsK0EroDmGTSrdtWKAxOk3rO+q+e04LL05Hs= github.com/flimzy/testy v0.1.17 h1:Y+TUugY6s4B/vrOEPo6SUKafc41W5aiX3qUWvhAPMdI= +github.com/flimzy/testy v0.1.17/go.mod h1:3szguN8NXqgq9bt9Gu8TQVj698PJWmyx/VY1frwwKrM= github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/fsouza/go-dockerclient v1.2.2 h1:rFDrkgZUIlruULXD2gRhT8JhqbjA6vHszAIStg/juEY= -github.com/fsouza/go-dockerclient v1.2.2/go.mod h1:KpcjM623fQYE9MZiTGzKhjfxXAV9wbyX2C1cyRHfhl0= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsouza/go-dockerclient v1.11.0 h1:4ZAk6W7rPAtPXm7198EFqA5S68rwnNQORxlOA5OurCA= +github.com/fsouza/go-dockerclient v1.11.0/go.mod h1:0I3TQCRseuPTzqlY4Y3ajfsg2VAdMQoazrkxJTiJg8s= github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= github.com/getsentry/sentry-go v0.13.0 h1:20dgTiUSfxRB/EhMPtxcL9ZEbM1ZdR+W/7f7NWD+xWo= github.com/getsentry/sentry-go v0.13.0/go.mod h1:EOsfu5ZdvKPfeHYV6pTVQnsjfp30+XA7//UooKNumH0= github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kivik/couchdb v2.0.0+incompatible h1:DsXVuGJTng04Guz8tg7jGVQ53RlByEhk+gPB/1yo3Oo= github.com/go-kivik/couchdb v2.0.0+incompatible/go.mod h1:5XJRkAMpBlEVA4q0ktIZjUPYBjoBmRoiWvwUBzP3BOQ= github.com/go-kivik/kivik v2.0.0+incompatible h1:/7hgr29DKv/vlaJsUoyRlOFq0K+3ikz0wTbu+cIs7QY= github.com/go-kivik/kivik v2.0.0+incompatible/go.mod h1:nIuJ8z4ikBrVUSk3Ua8NoDqYKULPNjuddjqRvlSUyyQ= github.com/go-kivik/kiviktest v2.0.0+incompatible h1:y1RyPHqWQr+eFlevD30Tr3ipiPCxK78vRoD3o9YysjI= +github.com/go-kivik/kiviktest v2.0.0+incompatible/go.mod h1:JdhVyzixoYhoIDUt6hRf1yAfYyaDa5/u9SDOindDkfQ= github.com/go-kivik/pouchdb v2.0.1+incompatible h1:v3OWB0/56qXjdlmu9az76nJ5utlbsHyRuB3uRq4sWFg= github.com/go-kivik/pouchdb v2.0.1+incompatible/go.mod h1:U+siUrqLCVxeMU3QjQTYIC3/F/e6EUKm+o5buJb7vpw= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= -github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= -github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs= -github.com/gobuffalo/logger v1.0.7 h1:LTLwWelETXDYyqF/ASf0nxaIcdEOIJNxRokPcfI/xbU= -github.com/gobuffalo/logger v1.0.7/go.mod h1:u40u6Bq3VVvaMcy5sRBclD8SXhBYPS0Qk95ubt+1xJM= -github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT85L4+VY= -github.com/gobuffalo/packd v1.0.2 h1:Yg523YqnOxGIWCp69W12yYBKsoChwI7mtu6ceM9Bwfw= -github.com/gobuffalo/packd v1.0.2/go.mod h1:sUc61tDqGMXON80zpKGp92lDb86Km28jfvX7IAyxFT8= -github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XEWlY= -github.com/gobuffalo/packr/v2 v2.8.3/go.mod h1:0SahksCVcx4IMnigTjiFuyldmTrdTctXsOdiU5KwbKc= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= -github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -257,25 +197,14 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.1 h1:jxpi2eWoU84wbX9iIEyAeeoac3FLuifZpY9tcNUD9kw= -github.com/golang/glog v1.1.1/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -283,9 +212,7 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= @@ -295,48 +222,24 @@ github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20220221023154-0b2280d3ff96 h1:QJq7UBOuoynsywLk+aC75rC2Cbi2+lQRDaLaizhA+fA= github.com/gopherjs/gopherjs v0.0.0-20220221023154-0b2280d3ff96/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= @@ -345,37 +248,15 @@ github.com/gopherjs/jsbuiltin v0.0.0-20180426082241-50091555e127/go.mod h1:7X1ac github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gotestyourself/gotestyourself v2.2.0+incompatible h1:AQwinXlbQR2HvPjQZOmDhRqsv5mZf+Jb1RnSLxcqZcI= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hidal-go/hidalgo v0.3.0 h1:z74GAu6SGbznyEcLbsiFpsFNkcQcSZnKIXdn9Wz85Ek= github.com/hidal-go/hidalgo v0.3.0/go.mod h1:N85Y5d1N68Y1gJ3SYyQ/wHbMdHDZ/yH8Bp3hht1iuPY= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -386,18 +267,19 @@ github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62 github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= -github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 h1:vr3AYkKovP8uR8AvSGGUK1IDqRa5lAAvEkZG1LKaCRc= -github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= -github.com/jackc/pgx v3.6.2+incompatible h1:2zP5OD7kiyR3xzRYMhOcXVvkDZsImVXfj+yIyTQf3/o= -github.com/jackc/pgx v3.6.2+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.6.0 h1:SWJzexBzPL5jb0GEsrPMLIsi/3jOo7RHlzTjcAeDrPY= +github.com/jackc/pgx/v5 v5.6.0/go.mod h1:DNZ/vlrUnhWCoFGxHAG8U2ljioxukquj7utPDgtQdTw= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= @@ -405,9 +287,6 @@ github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0t github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= -github.com/karrick/godirwalk v1.17.0 h1:b4kY7nqDdioR/6qnbHQyDvmA17u5G1cZ6J+CZXwSWoI= -github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= @@ -426,10 +305,9 @@ github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= -github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= +github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -446,23 +324,14 @@ github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= -github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc= -github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY= -github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI= -github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= @@ -471,36 +340,33 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= -github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo= -github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= +github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= +github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= +github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg= +github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= @@ -535,68 +401,60 @@ github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4 github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.9 h1:uH2qQXheeefCCkuBBSLi7jCiSmj3VRh2+Goq2N7Xxu0= -github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/peterh/liner v1.2.2 h1:aJ4AOodmL+JxOZZEL2u9iJf8omNRpqHc/EbrK+3mAXw= github.com/peterh/liner v1.2.2/go.mod h1:xFwJyiKIXJZUKItq5dGHZSTBRAuG/CpeNpWLyiNRNwI= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/piprate/json-gold v0.3.0 h1:a1vHx7Q1jOO1pjCtKwTI/WCzwaQwRt9VM7apK2uy200= -github.com/piprate/json-gold v0.3.0/go.mod h1:OK1z7UgtBZk06n2cDE2OSq1kffmjFFp5/2yhLLCz9UM= +github.com/piprate/json-gold v0.5.0 h1:RmGh1PYboCFcchVFuh2pbSWAZy4XJaqTMU4KQYsApbM= +github.com/piprate/json-gold v0.5.0/go.mod h1:WZ501QQMbZZ+3pXFPhQKzNwS1+jls0oqov3uQ2WasLs= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= -github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= -github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pquerna/cachecontrol v0.2.0 h1:vBXSNuE5MYP9IJ5kjsdo8uq+w41jSPgvba2DEnkRx9k= +github.com/pquerna/cachecontrol v0.2.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= -github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= -github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 h1:pntxY8Ary0t43dCZ5dqY4YTJCObLY1kIXl0uzMv+7DE= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -604,34 +462,31 @@ github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUr github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/gunit v1.1.3/go.mod h1:EH5qMBab2UclzXUcpR8b93eHsIlp9u+pDQIRp5DZNzQ= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= -github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= -github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -640,16 +495,17 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= -github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tylertreat/BoomFilters v0.0.0-20210315201527-1a82519a3e43 h1:QEePdg0ty2r0t1+qwfZmQ4OOl/MB2UXIeJSpIZv56lg= github.com/tylertreat/BoomFilters v0.0.0-20210315201527-1a82519a3e43/go.mod h1:OYRfF6eb5wY9VRFkXJH8FFBi3plw2v+giaIu7P054pM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= @@ -684,180 +540,97 @@ github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/ github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= gitlab.com/flimzy/testy v0.10.2 h1:GQq5CtJK0+ph2c2cD/FAzvTz/OJbxjpMr6Kaf/UerHg= +gitlab.com/flimzy/testy v0.10.2/go.mod h1:tcu652e6AyD5wS8q2JRUI+j5SlwIYsl3yq3ulHyuh8M= go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.mongodb.org/mongo-driver v1.8.4 h1:NruvZPPL0PBcRJKmbswoWSrmHeUvzdxA3GCPfD/NEOA= go.mongodb.org/mongo-driver v1.8.4/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705 h1:ba9YlqfDGTTQ5aZ2fwOoQ1hf32QySyQkR6ODGDzHlnE= -golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -865,44 +638,20 @@ golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210909193231-528a39cd75f3/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -911,34 +660,25 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -946,162 +686,43 @@ golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1111,13 +732,12 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1128,7 +748,6 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= @@ -1138,9 +757,7 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkep gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= @@ -1150,15 +767,9 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/graph/all/all_cgo.go b/graph/all/all_cgo.go index c146b1614..005daa022 100644 --- a/graph/all/all_cgo.go +++ b/graph/all/all_cgo.go @@ -1,4 +1,4 @@ -//+build cgo +//go:build cgo package all diff --git a/graph/graphtest/graphtest.go b/graph/graphtest/graphtest.go index cfb988495..00f4c86aa 100644 --- a/graph/graphtest/graphtest.go +++ b/graph/graphtest/graphtest.go @@ -8,6 +8,10 @@ import ( "testing" "time" + "github.com/cayleygraph/quad" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/graph/graphtest/testutil" "github.com/cayleygraph/cayley/graph/iterator" @@ -16,9 +20,6 @@ import ( "github.com/cayleygraph/cayley/query/shape" "github.com/cayleygraph/cayley/schema" "github.com/cayleygraph/cayley/writer" - "github.com/cayleygraph/quad" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) type Config struct { @@ -100,17 +101,16 @@ func BenchmarkAll(b *testing.B, gen testutil.DatabaseFunc, conf *Config) { // MakeQuadSet makes a simple test graph. // -// +---+ +---+ -// | A |------- ->| F |<-- -// +---+ \------>+---+-/ +---+ \--+---+ -// ------>|#B#| | | E | -// +---+-------/ >+---+ | +---+ -// | C | / v -// +---+ -/ +---+ -// ---- +---+/ |#G#| -// \-->|#D#|------------->+---+ -// +---+ -// +// +---+ +---+ +// | A |------- ->| F |<-- +// +---+ \------>+---+-/ +---+ \--+---+ +// ------>|#B#| | | E | +// +---+-------/ >+---+ | +---+ +// | C | / v +// +---+ -/ +---+ +// ---- +---+/ |#G#| +// \-->|#D#|------------->+---+ +// +---+ func MakeQuadSet() []quad.Quad { return []quad.Quad{ quad.Make("A", "follows", "B", nil), @@ -217,8 +217,7 @@ func IteratedValues(t testing.TB, qs graph.QuadStore, s iterator.Shape) []quad.V } func TestLoadOneQuad(t testing.TB, gen testutil.DatabaseFunc, c *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts) @@ -252,8 +251,7 @@ func TestLoadOneQuad(t testing.TB, gen testutil.DatabaseFunc, c *Config) { } func testLoadDup(t testing.TB, gen testutil.DatabaseFunc, c *Config, single bool) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts) @@ -294,8 +292,7 @@ func TestLoadDupSingle(t testing.TB, gen testutil.DatabaseFunc, c *Config) { } func TestLoadDupRaw(t testing.TB, gen testutil.DatabaseFunc, c *Config) { - qs, _, closer := gen(t) - defer closer() + qs, _ := gen(t) q := quad.Make( "Something", @@ -323,8 +320,7 @@ func TestLoadDupRaw(t testing.TB, gen testutil.DatabaseFunc, c *Config) { func TestWriters(t *testing.T, gen testutil.DatabaseFunc, c *Config) { t.Run("batch", func(t *testing.T) { - qs, _, closer := gen(t) - defer closer() + qs, _ := gen(t) w, err := qs.NewQuadWriter() require.NoError(t, err) @@ -357,8 +353,7 @@ func TestWriters(t *testing.T, gen testutil.DatabaseFunc, c *Config) { name[1] = 'm' } t.Run(string(name), func(t *testing.T) { - qs, _, closer := gen(t) - defer closer() + qs, _ := gen(t) w, err := writer.NewSingle(qs, graph.IgnoreOpts{ IgnoreDup: dup, IgnoreMissing: mis, @@ -421,8 +416,7 @@ func TestWriters(t *testing.T, gen testutil.DatabaseFunc, c *Config) { } func Test1K(t *testing.T, gen testutil.DatabaseFunc, c *Config) { - qs, _, closer := gen(t) - defer closer() + qs, _ := gen(t) pg := c.PageSize if pg == 0 { @@ -447,8 +441,7 @@ func Test1K(t *testing.T, gen testutil.DatabaseFunc, c *Config) { } func Test1KBatch(t *testing.T, gen testutil.DatabaseFunc, c *Config) { - qs, _, closer := gen(t) - defer closer() + qs, _ := gen(t) pg := c.PageSize if pg == 0 { @@ -481,8 +474,7 @@ type ValueSizer interface { } func TestSizes(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts) @@ -546,8 +538,7 @@ func TestSizes(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { func TestIterator(t testing.TB, gen testutil.DatabaseFunc, _ *Config) { ctx := context.TODO() - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -626,8 +617,7 @@ func TestIterator(t testing.TB, gen testutil.DatabaseFunc, _ *Config) { } func TestHasA(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -648,8 +638,7 @@ func TestHasA(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { } func TestSetIterator(t testing.TB, gen testutil.DatabaseFunc, _ *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -746,8 +735,7 @@ func TestSetIterator(t testing.TB, gen testutil.DatabaseFunc, _ *Config) { } func TestDeleteQuad(t testing.TB, gen testutil.DatabaseFunc, _ *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -787,8 +775,7 @@ func TestDeletedFromIterator(t testing.TB, gen testutil.DatabaseFunc, conf *Conf if conf.SkipDeletedFromIterator { t.SkipNow() } - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -807,8 +794,7 @@ func TestDeletedFromIterator(t testing.TB, gen testutil.DatabaseFunc, conf *Conf } func TestLoadTypedQuads(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts) @@ -886,8 +872,7 @@ func TestLoadTypedQuads(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { // TODO(dennwc): add tests to verify that QS behaves in a right way with IgnoreOptions, // returns ErrQuadExists, ErrQuadNotExists is doing rollback. func TestAddRemove(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) if opts == nil { opts = make(graph.Options) @@ -980,8 +965,7 @@ func TestAddRemove(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { func TestIteratorsAndNextResultOrderA(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { ctx := context.TODO() - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -1110,8 +1094,7 @@ func TestCompareTypedValues(t testing.TB, gen testutil.DatabaseFunc, conf *Confi if conf.UnTyped { t.SkipNow() } - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts) @@ -1165,8 +1148,7 @@ func TestCompareTypedValues(t testing.TB, gen testutil.DatabaseFunc, conf *Confi } func TestNodeDelete(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -1202,8 +1184,7 @@ func TestNodeDelete(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { } func TestSchema(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -1234,8 +1215,7 @@ func TestSchema(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { } func TestDeleteReinserted(t testing.TB, gen testutil.DatabaseFunc, _ *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -1265,8 +1245,7 @@ func TestDeleteReinserted(t testing.TB, gen testutil.DatabaseFunc, _ *Config) { } func TestDeleteReinsertedDup(t testing.TB, gen testutil.DatabaseFunc, _ *Config) { - qs, opts, closer := gen(t) - defer closer() + qs, opts := gen(t) w := testutil.MakeWriter(t, qs, opts, MakeQuadSet()...) @@ -1315,8 +1294,7 @@ func irif(format string, args ...interface{}) quad.IRI { func BenchmarkImport(b *testing.B, gen testutil.DatabaseFunc) { b.StopTimer() - qs, _, closer := gen(b) - defer closer() + qs, _ := gen(b) w, err := qs.NewQuadWriter() require.NoError(b, err) diff --git a/graph/graphtest/integration.go b/graph/graphtest/integration.go index 400062cd3..c9341baa7 100644 --- a/graph/graphtest/integration.go +++ b/graph/graphtest/integration.go @@ -58,8 +58,7 @@ func checkIntegration(t testing.TB, force bool) { func TestIntegration(t *testing.T, gen testutil.DatabaseFunc, force bool) { checkIntegration(t, force) - qs, closer := prepare(t, gen) - defer closer() + qs := prepare(t, gen) checkQueries(t, qs, timeout) } @@ -460,14 +459,13 @@ var m1_actors = movie1.save("","movie1").follow(filmToActor) var m2_actors = movie2.save("","movie2").follow(filmToActor) ` -func prepare(t testing.TB, gen testutil.DatabaseFunc) (graph.QuadStore, func()) { - qs, _, closer := gen(t) +func prepare(t testing.TB, gen testutil.DatabaseFunc) graph.QuadStore { + qs, _ := gen(t) const needsLoad = true // TODO: support local setup if needsLoad { qw, err := qs.NewQuadWriter() if err != nil { - closer() require.NoError(t, err) } @@ -480,17 +478,15 @@ func prepare(t testing.TB, gen testutil.DatabaseFunc) (graph.QuadStore, func()) } if err != nil { qw.Close() - closer() require.NoError(t, err) } err = qw.Close() if err != nil { - closer() require.NoError(t, err) } t.Logf("loaded data in %v", time.Since(start)) } - return qs, closer + return qs } func checkQueries(t *testing.T, qs graph.QuadStore, timeout time.Duration) { @@ -565,8 +561,7 @@ func convertToStringList(in []interface{}) []string { } func benchmarkQueries(b *testing.B, gen testutil.DatabaseFunc) { - qs, closer := prepare(b, gen) - defer closer() + qs := prepare(b, gen) for _, bench := range queries { b.Run(bench.message, func(b *testing.B) { diff --git a/graph/graphtest/testutil/testutil.go b/graph/graphtest/testutil/testutil.go index df5b57c8a..70ea93bf5 100644 --- a/graph/graphtest/testutil/testutil.go +++ b/graph/graphtest/testutil/testutil.go @@ -5,14 +5,15 @@ import ( "path/filepath" "testing" - "github.com/cayleygraph/cayley/graph" - "github.com/cayleygraph/cayley/writer" "github.com/cayleygraph/quad" "github.com/cayleygraph/quad/nquads" "github.com/stretchr/testify/require" + + "github.com/cayleygraph/cayley/graph" + "github.com/cayleygraph/cayley/writer" ) -type DatabaseFunc func(t testing.TB) (graph.QuadStore, graph.Options, func()) +type DatabaseFunc func(t testing.TB) (graph.QuadStore, graph.Options) func LoadGraph(t testing.TB, path string) []quad.Quad { var ( diff --git a/graph/kv/bbolt/bolt.go b/graph/kv/bbolt/bolt.go index 555f40e0a..ce3856448 100644 --- a/graph/kv/bbolt/bolt.go +++ b/graph/kv/bbolt/bolt.go @@ -18,11 +18,12 @@ import ( "os" "path/filepath" + hkv "github.com/hidal-go/hidalgo/kv" + bolt "github.com/hidal-go/hidalgo/kv/bbolt" + "github.com/cayleygraph/cayley/clog" "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/graph/kv" - hkv "github.com/hidal-go/hidalgo/kv" - bolt "github.com/hidal-go/hidalgo/kv/bbolt" ) func init() { diff --git a/graph/kv/indexing.go b/graph/kv/indexing.go index a4b5c56a1..6a69f73e2 100644 --- a/graph/kv/indexing.go +++ b/graph/kv/indexing.go @@ -27,11 +27,12 @@ import ( "github.com/cayleygraph/quad" "github.com/cayleygraph/quad/pquads" "github.com/hidal-go/hidalgo/kv/options" + "google.golang.org/protobuf/proto" "github.com/cayleygraph/cayley/clog" "github.com/cayleygraph/cayley/graph" graphlog "github.com/cayleygraph/cayley/graph/log" - "github.com/cayleygraph/cayley/graph/proto" + cproto "github.com/cayleygraph/cayley/graph/proto" "github.com/cayleygraph/cayley/graph/refs" "github.com/hidal-go/hidalgo/kv" @@ -86,7 +87,7 @@ func (ind QuadIndex) Key(vals []uint64) kv.Key { // TODO(dennwc): split into parts? return ind.bucket().AppendBytes(key) } -func (ind QuadIndex) KeyFor(p *proto.Primitive) kv.Key { +func (ind QuadIndex) KeyFor(p *cproto.Primitive) kv.Key { key := make([]byte, 8*len(ind.Dirs)) n := 0 for _, d := range ind.Dirs { @@ -505,10 +506,10 @@ func (qs *QuadStore) applyAddDeltas(ctx context.Context, tx kv.Tx, in []graph.De } deltas.IncNode = nil // resolve and insert all new quads - links := make([]proto.Primitive, 0, len(deltas.QuadAdd)) + links := make([]cproto.Primitive, 0, len(deltas.QuadAdd)) qadd := make(map[[4]uint64]struct{}, len(deltas.QuadAdd)) for _, q := range deltas.QuadAdd { - var link proto.Primitive + var link cproto.Primitive mustBeNew := false var qkey [4]uint64 for i, dir := range quad.Directions { @@ -584,7 +585,7 @@ func (qs *QuadStore) ApplyDeltas(in []graph.Delta, ignoreOpts graph.IgnoreOpts) } if len(deltas.QuadDel) != 0 || len(deltas.DecNode) != 0 { - links := make([]proto.Primitive, 0, len(deltas.QuadDel)) + links := make([]cproto.Primitive, 0, len(deltas.QuadDel)) // resolve all nodes that will be removed dnodes := make(map[refs.ValueHash]uint64, len(deltas.DecNode)) if err := qs.resolveValDeltas(ctx, tx, deltas.DecNode, func(i int, id uint64) { @@ -596,7 +597,7 @@ func (qs *QuadStore) ApplyDeltas(in []graph.Delta, ignoreOpts graph.IgnoreOpts) // check for existence and delete quads fixNodes := make(map[refs.ValueHash]int) for _, q := range deltas.QuadDel { - var link proto.Primitive + var link cproto.Primitive exists := true // resolve values of all quad directions // if any of the direction does not exists, the quad does not exists as well @@ -669,7 +670,7 @@ func (qs *QuadStore) ApplyDeltas(in []graph.Delta, ignoreOpts graph.IgnoreOpts) return tx.Commit(ctx) } -func (qs *QuadStore) indexNode(ctx context.Context, tx kv.Tx, p *proto.Primitive, val quad.Value) error { +func (qs *QuadStore) indexNode(ctx context.Context, tx kv.Tx, p *cproto.Primitive, val quad.Value) error { var err error if val == nil { val, err = pquads.UnmarshalValue(p.Value) @@ -691,7 +692,7 @@ func (qs *QuadStore) indexNode(ctx context.Context, tx kv.Tx, p *proto.Primitive return qs.addToLog(ctx, tx, p) } -func (qs *QuadStore) indexLinks(ctx context.Context, tx kv.Tx, links []proto.Primitive) error { +func (qs *QuadStore) indexLinks(ctx context.Context, tx kv.Tx, links []cproto.Primitive) error { for _, p := range links { if err := qs.indexLink(ctx, tx, &p); err != nil { return err @@ -699,7 +700,7 @@ func (qs *QuadStore) indexLinks(ctx context.Context, tx kv.Tx, links []proto.Pri } return qs.incSize(ctx, tx, int64(len(links))) } -func (qs *QuadStore) indexLink(ctx context.Context, tx kv.Tx, p *proto.Primitive) error { +func (qs *QuadStore) indexLink(ctx context.Context, tx kv.Tx, p *cproto.Primitive) error { var err error qs.indexes.RLock() all := qs.indexes.all @@ -718,7 +719,7 @@ func (qs *QuadStore) indexLink(ctx context.Context, tx kv.Tx, p *proto.Primitive return qs.addToLog(ctx, tx, p) } -func (qs *QuadStore) markAsDead(ctx context.Context, tx kv.Tx, p *proto.Primitive) error { +func (qs *QuadStore) markAsDead(ctx context.Context, tx kv.Tx, p *cproto.Primitive) error { p.Deleted = true //TODO(barakmich): Add tombstone? qs.bloomRemove(p) @@ -729,7 +730,7 @@ func (qs *QuadStore) delLog(ctx context.Context, tx kv.Tx, id uint64) error { return tx.Del(ctx, logIndex.Append(uint64KeyBytes(id))) } -func (qs *QuadStore) markLinksDead(ctx context.Context, tx kv.Tx, links []proto.Primitive) error { +func (qs *QuadStore) markLinksDead(ctx context.Context, tx kv.Tx, links []cproto.Primitive) error { for _, p := range links { if err := qs.markAsDead(ctx, tx, &p); err != nil { return err @@ -875,7 +876,7 @@ func (qs *QuadStore) bestIndexes(dirs []quad.Direction) []QuadIndex { return []QuadIndex{best} } -func (qs *QuadStore) hasPrimitive(ctx context.Context, tx kv.Tx, p *proto.Primitive, get bool) (*proto.Primitive, error) { +func (qs *QuadStore) hasPrimitive(ctx context.Context, tx kv.Tx, p *cproto.Primitive, get bool) (*cproto.Primitive, error) { if !qs.testBloom(p) { mQuadsBloomHit.Inc() return nil, nil @@ -1040,12 +1041,12 @@ func (qs *QuadStore) flushMapBucket(ctx context.Context, tx kv.Tx) error { return nil } -func (qs *QuadStore) indexSchema(tx kv.Tx, p *proto.Primitive) error { +func (qs *QuadStore) indexSchema(tx kv.Tx, p *cproto.Primitive) error { return nil } -func (qs *QuadStore) addToLog(ctx context.Context, tx kv.Tx, p *proto.Primitive) error { - buf, err := p.Marshal() +func (qs *QuadStore) addToLog(ctx context.Context, tx kv.Tx, p *cproto.Primitive) error { + buf, err := proto.Marshal(p) if err != nil { return err } @@ -1056,8 +1057,8 @@ func (qs *QuadStore) addToLog(ctx context.Context, tx kv.Tx, p *proto.Primitive) return nil } -func createNodePrimitive(v quad.Value) (*proto.Primitive, error) { - p := &proto.Primitive{} +func createNodePrimitive(v quad.Value) (*cproto.Primitive, error) { + p := &cproto.Primitive{} b, err := pquads.MarshalValue(v) if err != nil { return p, err @@ -1140,7 +1141,7 @@ func uint64KeyBytes(x uint64) kv.Key { return kv.Key{k} } -func (qs *QuadStore) getPrimitivesFromLog(ctx context.Context, tx kv.Tx, keys []uint64) ([]*proto.Primitive, error) { +func (qs *QuadStore) getPrimitivesFromLog(ctx context.Context, tx kv.Tx, keys []uint64) ([]*cproto.Primitive, error) { bkeys := make([]kv.Key, len(keys)) for i, k := range keys { bkeys[i] = logIndex.Append(uint64KeyBytes(k)) @@ -1150,15 +1151,15 @@ func (qs *QuadStore) getPrimitivesFromLog(ctx context.Context, tx kv.Tx, keys [] return nil, err } mPrimitiveFetch.Add(float64(len(vals))) - out := make([]*proto.Primitive, len(keys)) + out := make([]*cproto.Primitive, len(keys)) var last error for i, v := range vals { if v == nil { mPrimitiveFetchMiss.Inc() continue } - var p proto.Primitive - if err = p.Unmarshal(v); err != nil { + var p cproto.Primitive + if err = proto.Unmarshal(v, &p); err != nil { last = err } else { out[i] = &p @@ -1167,7 +1168,7 @@ func (qs *QuadStore) getPrimitivesFromLog(ctx context.Context, tx kv.Tx, keys [] return out, last } -func (qs *QuadStore) getPrimitiveFromLog(ctx context.Context, tx kv.Tx, k uint64) (*proto.Primitive, error) { +func (qs *QuadStore) getPrimitiveFromLog(ctx context.Context, tx kv.Tx, k uint64) (*cproto.Primitive, error) { out, err := qs.getPrimitivesFromLog(ctx, tx, []uint64{k}) if err != nil { return nil, err @@ -1184,13 +1185,13 @@ func (qs *QuadStore) initBloomFilter(ctx context.Context) error { qs.exists.buf = make([]byte, 3*8) qs.exists.DeletableBloomFilter = boom.NewDeletableBloomFilter(100*1000*1000, 120, 0.05) return kv.View(ctx, qs.db, func(tx kv.Tx) error { - p := proto.Primitive{} + p := cproto.Primitive{} it := tx.Scan(ctx, options.WithPrefixKV(logIndex)) defer it.Close() for it.Next(ctx) { v := it.Val() - p = proto.Primitive{} - err := p.Unmarshal(v) + p = cproto.Primitive{} + err := proto.Unmarshal(v, &p) if err != nil { return err } @@ -1206,7 +1207,7 @@ func (qs *QuadStore) initBloomFilter(ctx context.Context) error { }) } -func (qs *QuadStore) testBloom(p *proto.Primitive) bool { +func (qs *QuadStore) testBloom(p *cproto.Primitive) bool { if qs.exists.disabled { return true // false positives are expected } @@ -1216,7 +1217,7 @@ func (qs *QuadStore) testBloom(p *proto.Primitive) bool { return qs.exists.Test(qs.exists.buf) } -func (qs *QuadStore) bloomRemove(p *proto.Primitive) { +func (qs *QuadStore) bloomRemove(p *cproto.Primitive) { if qs.exists.disabled { return } @@ -1226,7 +1227,7 @@ func (qs *QuadStore) bloomRemove(p *proto.Primitive) { qs.exists.TestAndRemove(qs.exists.buf) } -func (qs *QuadStore) bloomAdd(p *proto.Primitive) { +func (qs *QuadStore) bloomAdd(p *cproto.Primitive) { if qs.exists.disabled { return } @@ -1236,7 +1237,7 @@ func (qs *QuadStore) bloomAdd(p *proto.Primitive) { qs.exists.Add(qs.exists.buf) } -func writePrimToBuf(p *proto.Primitive, buf []byte) { +func writePrimToBuf(p *cproto.Primitive, buf []byte) { quadKeyEnc.PutUint64(buf[0:8], p.Subject) quadKeyEnc.PutUint64(buf[8:16], p.Predicate) quadKeyEnc.PutUint64(buf[16:24], p.Object) diff --git a/graph/kv/kvtest/kvtest.go b/graph/kv/kvtest/kvtest.go index ea7a09f92..8c29b1f2f 100644 --- a/graph/kv/kvtest/kvtest.go +++ b/graph/kv/kvtest/kvtest.go @@ -5,14 +5,15 @@ import ( "reflect" "testing" + "github.com/cayleygraph/quad" + hkv "github.com/hidal-go/hidalgo/kv" + "github.com/stretchr/testify/require" + "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/graph/graphtest" "github.com/cayleygraph/cayley/graph/graphtest/testutil" "github.com/cayleygraph/cayley/graph/kv" "github.com/cayleygraph/cayley/query/shape" - "github.com/cayleygraph/quad" - hkv "github.com/hidal-go/hidalgo/kv" - "github.com/stretchr/testify/require" ) type DatabaseFunc func(t testing.TB) (hkv.KV, graph.Options, func()) @@ -29,7 +30,7 @@ func (c Config) quadStore() *graphtest.Config { } func newQuadStoreFunc(gen DatabaseFunc, bloom bool) testutil.DatabaseFunc { - return func(t testing.TB) (graph.QuadStore, graph.Options, func()) { + return func(t testing.TB) (graph.QuadStore, graph.Options) { return newQuadStore(t, gen, bloom) } } @@ -38,7 +39,7 @@ func NewQuadStoreFunc(gen DatabaseFunc) testutil.DatabaseFunc { return newQuadStoreFunc(gen, true) } -func newQuadStore(t testing.TB, gen DatabaseFunc, bloom bool) (graph.QuadStore, graph.Options, func()) { +func newQuadStore(t testing.TB, gen DatabaseFunc, bloom bool) (graph.QuadStore, graph.Options) { db, opt, closer := gen(t) if opt == nil { opt = make(graph.Options) @@ -58,13 +59,13 @@ func newQuadStore(t testing.TB, gen DatabaseFunc, bloom bool) (graph.QuadStore, closer() require.Fail(t, "create failed", "%v", err) } - return kdb, opt, func() { + t.Cleanup(func() { kdb.Close() - closer() - } + }) + return kdb, opt } -func NewQuadStore(t testing.TB, gen DatabaseFunc) (graph.QuadStore, graph.Options, func()) { +func NewQuadStore(t testing.TB, gen DatabaseFunc) (graph.QuadStore, graph.Options) { return newQuadStore(t, gen, true) } @@ -87,8 +88,7 @@ func TestAll(t *testing.T, gen DatabaseFunc, conf *Config) { func testOptimize(t *testing.T, gen DatabaseFunc, _ *Config) { ctx := context.TODO() - qs, opts, closer := NewQuadStore(t, gen) - defer closer() + qs, opts := NewQuadStore(t, gen) testutil.MakeWriter(t, qs, opts, graphtest.MakeQuadSet()...) diff --git a/graph/kv/registry.go b/graph/kv/registry.go index e83108d70..f39d0f6e8 100644 --- a/graph/kv/registry.go +++ b/graph/kv/registry.go @@ -3,14 +3,15 @@ package kv import ( "strings" - "github.com/cayleygraph/cayley/graph" "github.com/hidal-go/hidalgo/kv" + + "github.com/cayleygraph/cayley/graph" ) func init() { for _, r := range kv.List() { switch r.Name { - case "bolt": + case "bolt", "bbolt": continue // legacy: register manually; see comments in the bolt package } r := r diff --git a/graph/memstore/quadstore_test.go b/graph/memstore/quadstore_test.go index 0330d11a2..1ce42268c 100644 --- a/graph/memstore/quadstore_test.go +++ b/graph/memstore/quadstore_test.go @@ -22,28 +22,28 @@ import ( "github.com/stretchr/testify/require" + "github.com/cayleygraph/quad" + "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/graph/graphtest" "github.com/cayleygraph/cayley/graph/iterator" "github.com/cayleygraph/cayley/graph/refs" "github.com/cayleygraph/cayley/query/shape" "github.com/cayleygraph/cayley/writer" - "github.com/cayleygraph/quad" ) // This is a simple test graph. // -// +---+ +---+ -// | A |------- ->| F |<-- -// +---+ \------>+---+-/ +---+ \--+---+ -// ------>|#B#| | | E | -// +---+-------/ >+---+ | +---+ -// | C | / v -// +---+ -/ +---+ -// ---- +---+/ |#G#| -// \-->|#D#|------------->+---+ -// +---+ -// +// +---+ +---+ +// | A |------- ->| F |<-- +// +---+ \------>+---+-/ +---+ \--+---+ +// ------>|#B#| | | E | +// +---+-------/ >+---+ | +---+ +// | C | / v +// +---+ -/ +---+ +// ---- +---+/ |#G#| +// \-->|#D#|------------->+---+ +// +---+ var simpleGraph = []quad.Quad{ quad.MakeRaw("A", "follows", "B", ""), quad.MakeRaw("C", "follows", "B", ""), @@ -83,16 +83,16 @@ func makeTestStore(data []quad.Quad) (*QuadStore, graph.QuadWriter, []pair) { } func TestMemstore(t *testing.T) { - graphtest.TestAll(t, func(t testing.TB) (graph.QuadStore, graph.Options, func()) { - return New(), nil, func() {} + graphtest.TestAll(t, func(t testing.TB) (graph.QuadStore, graph.Options) { + return New(), nil }, &graphtest.Config{ AlwaysRunIntegration: true, }) } func BenchmarkMemstore(b *testing.B) { - graphtest.BenchmarkAll(b, func(t testing.TB) (graph.QuadStore, graph.Options, func()) { - return New(), nil, func() {} + graphtest.BenchmarkAll(b, func(t testing.TB) (graph.QuadStore, graph.Options) { + return New(), nil }, &graphtest.Config{ AlwaysRunIntegration: true, }) diff --git a/graph/nosql/nosqltest/nosqltest.go b/graph/nosql/nosqltest/nosqltest.go index d00db12b8..4364fdf77 100644 --- a/graph/nosql/nosqltest/nosqltest.go +++ b/graph/nosql/nosqltest/nosqltest.go @@ -23,7 +23,7 @@ func toConfig(c nosql.Traits) graphtest.Config { } } -func NewQuadStore(t testing.TB, gen nosqltest.Database) (graph.QuadStore, graph.Options, func()) { +func NewQuadStore(t testing.TB, gen nosqltest.Database) (graph.QuadStore, graph.Options) { db := gen.Run(t) err := gnosql.Init(db, nil) if err != nil { @@ -36,21 +36,22 @@ func NewQuadStore(t testing.TB, gen nosqltest.Database) (graph.QuadStore, graph. db.Close() require.Fail(t, "create failed", "%v", err) } - return kdb, nil, func() { + t.Cleanup(func() { kdb.Close() - } + }) + return kdb, nil } func TestAll(t *testing.T, gen nosqltest.Database) { c := toConfig(gen.Traits) - graphtest.TestAll(t, func(t testing.TB) (graph.QuadStore, graph.Options, func()) { + graphtest.TestAll(t, func(t testing.TB) (graph.QuadStore, graph.Options) { return NewQuadStore(t, gen) }, &c) } func BenchmarkAll(t *testing.B, gen nosqltest.Database) { c := toConfig(gen.Traits) - graphtest.BenchmarkAll(t, func(t testing.TB) (graph.QuadStore, graph.Options, func()) { + graphtest.BenchmarkAll(t, func(t testing.TB) (graph.QuadStore, graph.Options) { return NewQuadStore(t, gen) }, &c) } diff --git a/graph/nosql/quadstore.go b/graph/nosql/quadstore.go index 34a2987c8..bdbfe9b86 100644 --- a/graph/nosql/quadstore.go +++ b/graph/nosql/quadstore.go @@ -21,6 +21,7 @@ import ( "time" "github.com/hidal-go/hidalgo/legacy/nosql" + "google.golang.org/protobuf/proto" "github.com/cayleygraph/quad" "github.com/cayleygraph/quad/pquads" @@ -311,7 +312,7 @@ func (qs *QuadStore) appendLog(ctx context.Context, deltas []graph.Delta) ([]nos w := qs.batchInsert(colLog) defer w.Close() for _, d := range deltas { - data, err := pquads.MakeQuad(d.Quad).Marshal() + data, err := proto.Marshal(pquads.MakeQuad(d.Quad)) if err != nil { return w.Keys(), err } @@ -467,7 +468,7 @@ func toDocumentValue(opt *Traits, v quad.Value) nosql.Document { var doc nosql.Document encPb := func() { qv := pquads.MakeValue(v) - data, err := qv.Marshal() + data, err := proto.Marshal(qv) if err != nil { panic(err) } @@ -539,7 +540,7 @@ func toQuadValue(opt *Traits, d nosql.Document) (quad.Value, error) { return nil, err } var p pquads.Value - if err := p.Unmarshal(b); err != nil { + if err := proto.Unmarshal(b, &p); err != nil { return nil, fmt.Errorf("couldn't decode value: %v", err) } return p.ToNative(), nil @@ -687,7 +688,9 @@ func (qs *QuadStore) NameOf(v graph.Ref) (quad.Value, error) { return val.(quad.Value), nil } nd, err := qs.db.FindByKey(context.TODO(), colNodes, hash.key()) - if err != nil { + if err == nosql.ErrNotFound { + return nil, nil + } else if err != nil { clog.Errorf("couldn't retrieve node %v: %v", v, err) return nil, err } diff --git a/graph/proto/primitive.pb.go b/graph/proto/primitive.pb.go index d088cf056..ebfa522ae 100644 --- a/graph/proto/primitive.pb.go +++ b/graph/proto/primitive.pb.go @@ -1,35 +1,38 @@ -// Code generated by protoc-gen-gogo. -// source: primitive.proto -// DO NOT EDIT! - -/* - Package proto is a generated protocol buffer package. +// Copyright 2016 The Cayley Authors. All rights reserved. +// +// 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. - It is generated from these files: - primitive.proto +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v4.23.4 +// source: primitive.proto - It has these top-level messages: - Primitive -*/ package proto -import proto1 "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" - -import io "io" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto1.Marshal -var _ = fmt.Errorf -var _ = math.Inf +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto1.GoGoProtoPackageIsVersion2 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type PrimitiveType int32 @@ -46,627 +49,268 @@ const ( PrimitiveType_TIMESTAMP PrimitiveType = 9 ) -var PrimitiveType_name = map[int32]string{ - 0: "LINK", - 1: "IRI", - 2: "STRING", - 3: "BNODE", - 4: "TYPED_STR", - 5: "LANG_STR", - 6: "INT", - 7: "FLOAT", - 8: "BOOL", - 9: "TIMESTAMP", -} -var PrimitiveType_value = map[string]int32{ - "LINK": 0, - "IRI": 1, - "STRING": 2, - "BNODE": 3, - "TYPED_STR": 4, - "LANG_STR": 5, - "INT": 6, - "FLOAT": 7, - "BOOL": 8, - "TIMESTAMP": 9, +// Enum value maps for PrimitiveType. +var ( + PrimitiveType_name = map[int32]string{ + 0: "LINK", + 1: "IRI", + 2: "STRING", + 3: "BNODE", + 4: "TYPED_STR", + 5: "LANG_STR", + 6: "INT", + 7: "FLOAT", + 8: "BOOL", + 9: "TIMESTAMP", + } + PrimitiveType_value = map[string]int32{ + "LINK": 0, + "IRI": 1, + "STRING": 2, + "BNODE": 3, + "TYPED_STR": 4, + "LANG_STR": 5, + "INT": 6, + "FLOAT": 7, + "BOOL": 8, + "TIMESTAMP": 9, + } +) + +func (x PrimitiveType) Enum() *PrimitiveType { + p := new(PrimitiveType) + *p = x + return p } func (x PrimitiveType) String() string { - return proto1.EnumName(PrimitiveType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PrimitiveType) Descriptor() protoreflect.EnumDescriptor { + return file_primitive_proto_enumTypes[0].Descriptor() +} + +func (PrimitiveType) Type() protoreflect.EnumType { + return &file_primitive_proto_enumTypes[0] +} + +func (x PrimitiveType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PrimitiveType.Descriptor instead. +func (PrimitiveType) EnumDescriptor() ([]byte, []int) { + return file_primitive_proto_rawDescGZIP(), []int{0} } -func (PrimitiveType) EnumDescriptor() ([]byte, []int) { return fileDescriptorPrimitive, []int{0} } type Primitive struct { - ID uint64 `protobuf:"varint,1,opt,name=ID,json=iD,proto3" json:"ID,omitempty"` - Subject uint64 `protobuf:"varint,2,opt,name=Subject,json=subject,proto3" json:"Subject,omitempty"` - Predicate uint64 `protobuf:"varint,3,opt,name=Predicate,json=predicate,proto3" json:"Predicate,omitempty"` - Object uint64 `protobuf:"varint,4,opt,name=Object,json=object,proto3" json:"Object,omitempty"` - Label uint64 `protobuf:"varint,5,opt,name=Label,json=label,proto3" json:"Label,omitempty"` - Replaces uint64 `protobuf:"varint,6,opt,name=Replaces,json=replaces,proto3" json:"Replaces,omitempty"` - Timestamp int64 `protobuf:"varint,7,opt,name=Timestamp,json=timestamp,proto3" json:"Timestamp,omitempty"` - Value []byte `protobuf:"bytes,8,opt,name=Value,json=value,proto3" json:"Value,omitempty"` - Deleted bool `protobuf:"varint,9,opt,name=Deleted,json=deleted,proto3" json:"Deleted,omitempty"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + Subject uint64 `protobuf:"varint,2,opt,name=Subject,proto3" json:"Subject,omitempty"` + Predicate uint64 `protobuf:"varint,3,opt,name=Predicate,proto3" json:"Predicate,omitempty"` + Object uint64 `protobuf:"varint,4,opt,name=Object,proto3" json:"Object,omitempty"` + Label uint64 `protobuf:"varint,5,opt,name=Label,proto3" json:"Label,omitempty"` + Replaces uint64 `protobuf:"varint,6,opt,name=Replaces,proto3" json:"Replaces,omitempty"` + Timestamp int64 `protobuf:"varint,7,opt,name=Timestamp,proto3" json:"Timestamp,omitempty"` + Value []byte `protobuf:"bytes,8,opt,name=Value,proto3" json:"Value,omitempty"` + Deleted bool `protobuf:"varint,9,opt,name=Deleted,proto3" json:"Deleted,omitempty"` +} + +func (x *Primitive) Reset() { + *x = Primitive{} + if protoimpl.UnsafeEnabled { + mi := &file_primitive_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Primitive) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Primitive) ProtoMessage() {} + +func (x *Primitive) ProtoReflect() protoreflect.Message { + mi := &file_primitive_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *Primitive) Reset() { *m = Primitive{} } -func (m *Primitive) String() string { return proto1.CompactTextString(m) } -func (*Primitive) ProtoMessage() {} -func (*Primitive) Descriptor() ([]byte, []int) { return fileDescriptorPrimitive, []int{0} } +// Deprecated: Use Primitive.ProtoReflect.Descriptor instead. +func (*Primitive) Descriptor() ([]byte, []int) { + return file_primitive_proto_rawDescGZIP(), []int{0} +} -func (m *Primitive) GetID() uint64 { - if m != nil { - return m.ID +func (x *Primitive) GetID() uint64 { + if x != nil { + return x.ID } return 0 } -func (m *Primitive) GetSubject() uint64 { - if m != nil { - return m.Subject +func (x *Primitive) GetSubject() uint64 { + if x != nil { + return x.Subject } return 0 } -func (m *Primitive) GetPredicate() uint64 { - if m != nil { - return m.Predicate +func (x *Primitive) GetPredicate() uint64 { + if x != nil { + return x.Predicate } return 0 } -func (m *Primitive) GetObject() uint64 { - if m != nil { - return m.Object +func (x *Primitive) GetObject() uint64 { + if x != nil { + return x.Object } return 0 } -func (m *Primitive) GetLabel() uint64 { - if m != nil { - return m.Label +func (x *Primitive) GetLabel() uint64 { + if x != nil { + return x.Label } return 0 } -func (m *Primitive) GetReplaces() uint64 { - if m != nil { - return m.Replaces +func (x *Primitive) GetReplaces() uint64 { + if x != nil { + return x.Replaces } return 0 } -func (m *Primitive) GetTimestamp() int64 { - if m != nil { - return m.Timestamp +func (x *Primitive) GetTimestamp() int64 { + if x != nil { + return x.Timestamp } return 0 } -func (m *Primitive) GetValue() []byte { - if m != nil { - return m.Value +func (x *Primitive) GetValue() []byte { + if x != nil { + return x.Value } return nil } -func (m *Primitive) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *Primitive) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } -func init() { - proto1.RegisterType((*Primitive)(nil), "proto.Primitive") - proto1.RegisterEnum("proto.PrimitiveType", PrimitiveType_name, PrimitiveType_value) -} -func (m *Primitive) Marshal() (dAtA []byte, err error) { - size := m.ProtoSize() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} +var File_primitive_proto protoreflect.FileDescriptor -func (m *Primitive) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.ID != 0 { - dAtA[i] = 0x8 - i++ - i = encodeVarintPrimitive(dAtA, i, uint64(m.ID)) - } - if m.Subject != 0 { - dAtA[i] = 0x10 - i++ - i = encodeVarintPrimitive(dAtA, i, uint64(m.Subject)) - } - if m.Predicate != 0 { - dAtA[i] = 0x18 - i++ - i = encodeVarintPrimitive(dAtA, i, uint64(m.Predicate)) - } - if m.Object != 0 { - dAtA[i] = 0x20 - i++ - i = encodeVarintPrimitive(dAtA, i, uint64(m.Object)) - } - if m.Label != 0 { - dAtA[i] = 0x28 - i++ - i = encodeVarintPrimitive(dAtA, i, uint64(m.Label)) - } - if m.Replaces != 0 { - dAtA[i] = 0x30 - i++ - i = encodeVarintPrimitive(dAtA, i, uint64(m.Replaces)) - } - if m.Timestamp != 0 { - dAtA[i] = 0x38 - i++ - i = encodeVarintPrimitive(dAtA, i, uint64(m.Timestamp)) - } - if len(m.Value) > 0 { - dAtA[i] = 0x42 - i++ - i = encodeVarintPrimitive(dAtA, i, uint64(len(m.Value))) - i += copy(dAtA[i:], m.Value) - } - if m.Deleted { - dAtA[i] = 0x48 - i++ - if m.Deleted { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i++ - } - return i, nil +var file_primitive_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xeb, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x69, + 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x09, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2a, 0x83, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x6d, 0x69, + 0x74, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x49, 0x4e, 0x4b, + 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x52, 0x49, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, + 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x4e, 0x4f, 0x44, 0x45, + 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x52, 0x10, + 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x41, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x52, 0x10, 0x05, 0x12, + 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f, 0x41, + 0x54, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0d, 0x0a, + 0x09, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x09, 0x42, 0x2b, 0x5a, 0x29, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x79, 0x6c, 0x65, + 0x79, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x63, 0x61, 0x79, 0x6c, 0x65, 0x79, 0x2f, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } -func encodeFixed64Primitive(dAtA []byte, offset int, v uint64) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - dAtA[offset+4] = uint8(v >> 32) - dAtA[offset+5] = uint8(v >> 40) - dAtA[offset+6] = uint8(v >> 48) - dAtA[offset+7] = uint8(v >> 56) - return offset + 8 -} -func encodeFixed32Primitive(dAtA []byte, offset int, v uint32) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - return offset + 4 -} -func encodeVarintPrimitive(dAtA []byte, offset int, v uint64) int { - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return offset + 1 -} -func (m *Primitive) ProtoSize() (n int) { - var l int - _ = l - if m.ID != 0 { - n += 1 + sovPrimitive(uint64(m.ID)) - } - if m.Subject != 0 { - n += 1 + sovPrimitive(uint64(m.Subject)) - } - if m.Predicate != 0 { - n += 1 + sovPrimitive(uint64(m.Predicate)) - } - if m.Object != 0 { - n += 1 + sovPrimitive(uint64(m.Object)) - } - if m.Label != 0 { - n += 1 + sovPrimitive(uint64(m.Label)) - } - if m.Replaces != 0 { - n += 1 + sovPrimitive(uint64(m.Replaces)) - } - if m.Timestamp != 0 { - n += 1 + sovPrimitive(uint64(m.Timestamp)) - } - l = len(m.Value) - if l > 0 { - n += 1 + l + sovPrimitive(uint64(l)) - } - if m.Deleted { - n += 2 - } - return n +var ( + file_primitive_proto_rawDescOnce sync.Once + file_primitive_proto_rawDescData = file_primitive_proto_rawDesc +) + +func file_primitive_proto_rawDescGZIP() []byte { + file_primitive_proto_rawDescOnce.Do(func() { + file_primitive_proto_rawDescData = protoimpl.X.CompressGZIP(file_primitive_proto_rawDescData) + }) + return file_primitive_proto_rawDescData } -func sovPrimitive(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n +var file_primitive_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_primitive_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_primitive_proto_goTypes = []any{ + (PrimitiveType)(0), // 0: proto.PrimitiveType + (*Primitive)(nil), // 1: proto.Primitive } -func sozPrimitive(x uint64) (n int) { - return sovPrimitive(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +var file_primitive_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name } -func (m *Primitive) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Primitive: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Primitive: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) - } - m.Subject = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Subject |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Predicate", wireType) - } - m.Predicate = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Predicate |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType) - } - m.Object = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Object |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Label", wireType) - } - m.Label = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Label |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replaces", wireType) - } - m.Replaces = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Replaces |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) - } - m.Timestamp = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Timestamp |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthPrimitive - } - postIndex := iNdEx + byteLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) - if m.Value == nil { - m.Value = []byte{} - } - iNdEx = postIndex - case 9: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Deleted", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPrimitive - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.Deleted = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipPrimitive(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthPrimitive - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipPrimitive(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPrimitive - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break +func init() { file_primitive_proto_init() } +func file_primitive_proto_init() { + if File_primitive_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_primitive_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*Primitive); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil } } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPrimitive - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - return iNdEx, nil - case 1: - iNdEx += 8 - return iNdEx, nil - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPrimitive - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - iNdEx += length - if length < 0 { - return 0, ErrInvalidLengthPrimitive - } - return iNdEx, nil - case 3: - for { - var innerWire uint64 - var start int = iNdEx - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPrimitive - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - innerWire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - innerWireType := int(innerWire & 0x7) - if innerWireType == 4 { - break - } - next, err := skipPrimitive(dAtA[start:]) - if err != nil { - return 0, err - } - iNdEx = start + next - } - return iNdEx, nil - case 4: - return iNdEx, nil - case 5: - iNdEx += 4 - return iNdEx, nil - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } } - panic("unreachable") -} - -var ( - ErrInvalidLengthPrimitive = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowPrimitive = fmt.Errorf("proto: integer overflow") -) - -func init() { proto1.RegisterFile("primitive.proto", fileDescriptorPrimitive) } - -var fileDescriptorPrimitive = []byte{ - // 357 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x3c, 0x91, 0xdf, 0x4a, 0xeb, 0x30, - 0x1c, 0xc7, 0x4f, 0xfa, 0xbf, 0x61, 0x3b, 0x27, 0x84, 0x83, 0x84, 0x21, 0xa3, 0x78, 0x55, 0x04, - 0xb7, 0x0b, 0x9f, 0x60, 0xa3, 0x73, 0x14, 0xbb, 0x76, 0xa4, 0x41, 0xf0, 0x4a, 0xda, 0x2e, 0xce, - 0x4a, 0x4b, 0xcb, 0x96, 0x0e, 0xbc, 0xf6, 0x45, 0x7c, 0x1c, 0x2f, 0x7d, 0x86, 0x79, 0xe9, 0x4b, - 0x48, 0x52, 0xe7, 0x55, 0xf2, 0xf9, 0xfe, 0xf8, 0x7c, 0x93, 0x10, 0xf8, 0xaf, 0xdd, 0x95, 0x75, - 0x29, 0xca, 0x03, 0x9f, 0xb4, 0xbb, 0x46, 0x34, 0xd8, 0x54, 0xcb, 0xe8, 0x6a, 0x5b, 0x8a, 0xa7, - 0x2e, 0x9f, 0x14, 0x4d, 0x3d, 0xdd, 0x36, 0xdb, 0x66, 0xaa, 0xe2, 0xbc, 0x7b, 0x54, 0xa4, 0x40, - 0xed, 0x7a, 0xeb, 0xe2, 0x0b, 0x40, 0x77, 0x7d, 0x6a, 0xc2, 0x7f, 0xa1, 0x16, 0x06, 0x04, 0x78, - 0xc0, 0x37, 0xa8, 0x56, 0x06, 0x98, 0x40, 0x3b, 0xed, 0xf2, 0x67, 0x5e, 0x08, 0xa2, 0xa9, 0xd0, - 0xde, 0xf7, 0x88, 0xcf, 0xa5, 0xc6, 0x37, 0x65, 0x91, 0x09, 0x4e, 0x74, 0x35, 0x73, 0xdb, 0x53, - 0x80, 0xcf, 0xa0, 0x95, 0xf4, 0x9a, 0xa1, 0x46, 0x56, 0xd3, 0x5b, 0xff, 0xa1, 0x19, 0x65, 0x39, - 0xaf, 0x88, 0xa9, 0x62, 0xb3, 0x92, 0x80, 0x47, 0xd0, 0xa1, 0xbc, 0xad, 0xb2, 0x82, 0xef, 0x89, - 0xa5, 0x06, 0xce, 0xee, 0x87, 0xe5, 0x39, 0xac, 0xac, 0xf9, 0x5e, 0x64, 0x75, 0x4b, 0x6c, 0x0f, - 0xf8, 0x3a, 0x75, 0xc5, 0x29, 0x90, 0x7d, 0x77, 0x59, 0xd5, 0x71, 0xe2, 0x78, 0xc0, 0x1f, 0x50, - 0xf3, 0x20, 0x41, 0xde, 0x3a, 0xe0, 0x15, 0x17, 0x7c, 0x43, 0x5c, 0x0f, 0xf8, 0x0e, 0xb5, 0x37, - 0x3d, 0x5e, 0xbe, 0x02, 0x38, 0xfc, 0x7d, 0x2d, 0x7b, 0x69, 0x39, 0x76, 0xa0, 0x11, 0x85, 0xf1, - 0x2d, 0xfa, 0x83, 0x6d, 0xa8, 0x87, 0x34, 0x44, 0x00, 0x43, 0x68, 0xa5, 0x8c, 0x86, 0xf1, 0x12, - 0x69, 0xd8, 0x85, 0xe6, 0x3c, 0x4e, 0x82, 0x05, 0xd2, 0xf1, 0x10, 0xba, 0xec, 0x7e, 0xbd, 0x08, - 0x1e, 0x52, 0x46, 0x91, 0x81, 0x07, 0xd0, 0x89, 0x66, 0xf1, 0x52, 0x91, 0xa9, 0xe4, 0x98, 0x21, - 0x4b, 0x0a, 0x37, 0x51, 0x32, 0x63, 0xc8, 0x96, 0xd5, 0xf3, 0x24, 0x89, 0x90, 0xa3, 0xd4, 0x70, - 0xb5, 0x48, 0xd9, 0x6c, 0xb5, 0x46, 0xee, 0x7c, 0xf0, 0x7e, 0x1c, 0x83, 0x8f, 0xe3, 0x18, 0xbc, - 0x7d, 0x8e, 0x41, 0x6e, 0xa9, 0x8f, 0xb8, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x44, 0x49, - 0x16, 0xd1, 0x01, 0x00, 0x00, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_primitive_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_primitive_proto_goTypes, + DependencyIndexes: file_primitive_proto_depIdxs, + EnumInfos: file_primitive_proto_enumTypes, + MessageInfos: file_primitive_proto_msgTypes, + }.Build() + File_primitive_proto = out.File + file_primitive_proto_rawDesc = nil + file_primitive_proto_goTypes = nil + file_primitive_proto_depIdxs = nil } diff --git a/graph/proto/primitive.proto b/graph/proto/primitive.proto index 82a8eb37c..ec26531e7 100644 --- a/graph/proto/primitive.proto +++ b/graph/proto/primitive.proto @@ -16,11 +16,7 @@ syntax = "proto3"; package proto; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; -//import "google/protobuf/timestamp.proto"; -option (gogoproto.protosizer_all) = true; -option (gogoproto.marshaler_all) = true; -option (gogoproto.unmarshaler_all) = true; +option go_package = "github.com/cayleygraph/cayley/graph/proto"; message Primitive { uint64 ID = 1; diff --git a/graph/proto/primitive_helpers.go b/graph/proto/primitive_helpers.go index 0ca5e60cf..1b19ea8e0 100644 --- a/graph/proto/primitive_helpers.go +++ b/graph/proto/primitive_helpers.go @@ -2,7 +2,7 @@ package proto import "github.com/cayleygraph/quad" -//go:generate protoc --proto_path=$GOPATH/src:. --gogo_out=. primitive.proto +//go:generate protoc --go_opt=paths=source_relative --proto_path=. --go_out=. primitive.proto func (p Primitive) GetDirection(d quad.Direction) uint64 { switch d { diff --git a/graph/proto/serializations.pb.go b/graph/proto/serializations.pb.go index 0e2c30bf8..f6b4c02d0 100644 --- a/graph/proto/serializations.pb.go +++ b/graph/proto/serializations.pb.go @@ -1,848 +1,337 @@ -// Code generated by protoc-gen-gogo. +// Copyright 2015 The Cayley Authors. All rights reserved. +// +// 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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v4.23.4 // source: serializations.proto -// DO NOT EDIT! -/* - Package proto is a generated protocol buffer package. +package proto - It is generated from these files: - serializations.proto +import ( + pquads "github.com/cayleygraph/quad/pquads" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) - It has these top-level messages: - LogDelta - HistoryEntry - NodeData -*/ -package proto +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -import proto1 "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" -import pquads "github.com/cayleygraph/quad/pquads" +type LogDelta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + Quad *pquads.Quad `protobuf:"bytes,2,opt,name=Quad,proto3" json:"Quad,omitempty"` + Action int32 `protobuf:"varint,3,opt,name=Action,proto3" json:"Action,omitempty"` + Timestamp int64 `protobuf:"varint,4,opt,name=Timestamp,proto3" json:"Timestamp,omitempty"` +} -import io "io" +func (x *LogDelta) Reset() { + *x = LogDelta{} + if protoimpl.UnsafeEnabled { + mi := &file_serializations_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto1.Marshal -var _ = fmt.Errorf -var _ = math.Inf +func (x *LogDelta) String() string { + return protoimpl.X.MessageStringOf(x) +} -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto1.GoGoProtoPackageIsVersion2 // please upgrade the proto package +func (*LogDelta) ProtoMessage() {} -type LogDelta struct { - ID uint64 `protobuf:"varint,1,opt,name=ID,json=iD,proto3" json:"ID,omitempty"` - Quad *pquads.Quad `protobuf:"bytes,2,opt,name=Quad,json=quad" json:"Quad,omitempty"` - Action int32 `protobuf:"varint,3,opt,name=Action,json=action,proto3" json:"Action,omitempty"` - Timestamp int64 `protobuf:"varint,4,opt,name=Timestamp,json=timestamp,proto3" json:"Timestamp,omitempty"` +func (x *LogDelta) ProtoReflect() protoreflect.Message { + mi := &file_serializations_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *LogDelta) Reset() { *m = LogDelta{} } -func (m *LogDelta) String() string { return proto1.CompactTextString(m) } -func (*LogDelta) ProtoMessage() {} -func (*LogDelta) Descriptor() ([]byte, []int) { return fileDescriptorSerializations, []int{0} } +// Deprecated: Use LogDelta.ProtoReflect.Descriptor instead. +func (*LogDelta) Descriptor() ([]byte, []int) { + return file_serializations_proto_rawDescGZIP(), []int{0} +} -func (m *LogDelta) GetID() uint64 { - if m != nil { - return m.ID +func (x *LogDelta) GetID() uint64 { + if x != nil { + return x.ID } return 0 } -func (m *LogDelta) GetQuad() *pquads.Quad { - if m != nil { - return m.Quad +func (x *LogDelta) GetQuad() *pquads.Quad { + if x != nil { + return x.Quad } return nil } -func (m *LogDelta) GetAction() int32 { - if m != nil { - return m.Action +func (x *LogDelta) GetAction() int32 { + if x != nil { + return x.Action } return 0 } -func (m *LogDelta) GetTimestamp() int64 { - if m != nil { - return m.Timestamp +func (x *LogDelta) GetTimestamp() int64 { + if x != nil { + return x.Timestamp } return 0 } type HistoryEntry struct { - History []uint64 `protobuf:"varint,1,rep,packed,name=History,json=history" json:"History,omitempty"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *HistoryEntry) Reset() { *m = HistoryEntry{} } -func (m *HistoryEntry) String() string { return proto1.CompactTextString(m) } -func (*HistoryEntry) ProtoMessage() {} -func (*HistoryEntry) Descriptor() ([]byte, []int) { return fileDescriptorSerializations, []int{1} } + History []uint64 `protobuf:"varint,1,rep,packed,name=History,proto3" json:"History,omitempty"` +} -func (m *HistoryEntry) GetHistory() []uint64 { - if m != nil { - return m.History +func (x *HistoryEntry) Reset() { + *x = HistoryEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_serializations_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type NodeData struct { - Name string `protobuf:"bytes,1,opt,name=Name,json=name,proto3" json:"Name,omitempty"` - Size int64 `protobuf:"varint,2,opt,name=Size,json=size,proto3" json:"Size,omitempty"` - Value *pquads.Value `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` +func (x *HistoryEntry) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NodeData) Reset() { *m = NodeData{} } -func (m *NodeData) String() string { return proto1.CompactTextString(m) } -func (*NodeData) ProtoMessage() {} -func (*NodeData) Descriptor() ([]byte, []int) { return fileDescriptorSerializations, []int{2} } +func (*HistoryEntry) ProtoMessage() {} -func (m *NodeData) GetName() string { - if m != nil { - return m.Name +func (x *HistoryEntry) ProtoReflect() protoreflect.Message { + mi := &file_serializations_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (m *NodeData) GetSize() int64 { - if m != nil { - return m.Size - } - return 0 +// Deprecated: Use HistoryEntry.ProtoReflect.Descriptor instead. +func (*HistoryEntry) Descriptor() ([]byte, []int) { + return file_serializations_proto_rawDescGZIP(), []int{1} } -func (m *NodeData) GetValue() *pquads.Value { - if m != nil { - return m.Value +func (x *HistoryEntry) GetHistory() []uint64 { + if x != nil { + return x.History } return nil } -func init() { - proto1.RegisterType((*LogDelta)(nil), "proto.LogDelta") - proto1.RegisterType((*HistoryEntry)(nil), "proto.HistoryEntry") - proto1.RegisterType((*NodeData)(nil), "proto.NodeData") -} -func (m *LogDelta) Marshal() (dAtA []byte, err error) { - size := m.ProtoSize() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} +type NodeData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *LogDelta) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.ID != 0 { - dAtA[i] = 0x8 - i++ - i = encodeVarintSerializations(dAtA, i, uint64(m.ID)) - } - if m.Quad != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintSerializations(dAtA, i, uint64(m.Quad.ProtoSize())) - n1, err := m.Quad.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n1 - } - if m.Action != 0 { - dAtA[i] = 0x18 - i++ - i = encodeVarintSerializations(dAtA, i, uint64(m.Action)) - } - if m.Timestamp != 0 { - dAtA[i] = 0x20 - i++ - i = encodeVarintSerializations(dAtA, i, uint64(m.Timestamp)) - } - return i, nil + Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"` + Size int64 `protobuf:"varint,2,opt,name=Size,proto3" json:"Size,omitempty"` + Value *pquads.Value `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` } -func (m *HistoryEntry) Marshal() (dAtA []byte, err error) { - size := m.ProtoSize() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err +func (x *NodeData) Reset() { + *x = NodeData{} + if protoimpl.UnsafeEnabled { + mi := &file_serializations_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return dAtA[:n], nil } -func (m *HistoryEntry) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.History) > 0 { - dAtA3 := make([]byte, len(m.History)*10) - var j2 int - for _, num := range m.History { - for num >= 1<<7 { - dAtA3[j2] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j2++ - } - dAtA3[j2] = uint8(num) - j2++ - } - dAtA[i] = 0xa - i++ - i = encodeVarintSerializations(dAtA, i, uint64(j2)) - i += copy(dAtA[i:], dAtA3[:j2]) - } - return i, nil +func (x *NodeData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NodeData) Marshal() (dAtA []byte, err error) { - size := m.ProtoSize() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} +func (*NodeData) ProtoMessage() {} -func (m *NodeData) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.Name) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintSerializations(dAtA, i, uint64(len(m.Name))) - i += copy(dAtA[i:], m.Name) - } - if m.Size != 0 { - dAtA[i] = 0x10 - i++ - i = encodeVarintSerializations(dAtA, i, uint64(m.Size)) - } - if m.Value != nil { - dAtA[i] = 0x1a - i++ - i = encodeVarintSerializations(dAtA, i, uint64(m.Value.ProtoSize())) - n4, err := m.Value.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err +func (x *NodeData) ProtoReflect() protoreflect.Message { + mi := &file_serializations_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i += n4 + return ms } - return i, nil + return mi.MessageOf(x) } -func encodeFixed64Serializations(dAtA []byte, offset int, v uint64) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - dAtA[offset+4] = uint8(v >> 32) - dAtA[offset+5] = uint8(v >> 40) - dAtA[offset+6] = uint8(v >> 48) - dAtA[offset+7] = uint8(v >> 56) - return offset + 8 -} -func encodeFixed32Serializations(dAtA []byte, offset int, v uint32) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - return offset + 4 -} -func encodeVarintSerializations(dAtA []byte, offset int, v uint64) int { - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return offset + 1 -} -func (m *LogDelta) ProtoSize() (n int) { - var l int - _ = l - if m.ID != 0 { - n += 1 + sovSerializations(uint64(m.ID)) - } - if m.Quad != nil { - l = m.Quad.ProtoSize() - n += 1 + l + sovSerializations(uint64(l)) - } - if m.Action != 0 { - n += 1 + sovSerializations(uint64(m.Action)) - } - if m.Timestamp != 0 { - n += 1 + sovSerializations(uint64(m.Timestamp)) - } - return n +// Deprecated: Use NodeData.ProtoReflect.Descriptor instead. +func (*NodeData) Descriptor() ([]byte, []int) { + return file_serializations_proto_rawDescGZIP(), []int{2} } -func (m *HistoryEntry) ProtoSize() (n int) { - var l int - _ = l - if len(m.History) > 0 { - l = 0 - for _, e := range m.History { - l += sovSerializations(uint64(e)) - } - n += 1 + sovSerializations(uint64(l)) + l +func (x *NodeData) GetName() string { + if x != nil { + return x.Name } - return n + return "" } -func (m *NodeData) ProtoSize() (n int) { - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovSerializations(uint64(l)) - } - if m.Size != 0 { - n += 1 + sovSerializations(uint64(m.Size)) +func (x *NodeData) GetSize() int64 { + if x != nil { + return x.Size } - if m.Value != nil { - l = m.Value.ProtoSize() - n += 1 + l + sovSerializations(uint64(l)) - } - return n + return 0 } -func sovSerializations(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } +func (x *NodeData) GetValue() *pquads.Value { + if x != nil { + return x.Value } - return n -} -func sozSerializations(x uint64) (n int) { - return sovSerializations(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + return nil } -func (m *LogDelta) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LogDelta: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LogDelta: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Quad", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSerializations - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Quad == nil { - m.Quad = &pquads.Quad{} - } - if err := m.Quad.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) - } - m.Action = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Action |= (int32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) - } - m.Timestamp = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Timestamp |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipSerializations(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSerializations - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +var File_serializations_proto protoreflect.FileDescriptor + +var file_serializations_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0b, 0x71, + 0x75, 0x61, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x72, 0x0a, 0x08, 0x4c, 0x6f, + 0x67, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x04, 0x51, 0x75, 0x61, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x71, 0x75, 0x61, 0x64, 0x73, 0x2e, 0x51, 0x75, + 0x61, 0x64, 0x52, 0x04, 0x51, 0x75, 0x61, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x28, + 0x0a, 0x0c, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18, + 0x0a, 0x07, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, + 0x07, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x57, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x71, + 0x75, 0x61, 0x64, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x61, 0x79, 0x6c, 0x65, 0x79, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x63, 0x61, 0x79, 0x6c, + 0x65, 0x79, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func (m *HistoryEntry) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: HistoryEntry: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: HistoryEntry: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType == 0 { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.History = append(m.History, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthSerializations - } - postIndex := iNdEx + packedLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - for iNdEx < postIndex { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.History = append(m.History, v) - } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field History", wireType) - } - default: - iNdEx = preIndex - skippy, err := skipSerializations(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSerializations - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +var ( + file_serializations_proto_rawDescOnce sync.Once + file_serializations_proto_rawDescData = file_serializations_proto_rawDesc +) + +func file_serializations_proto_rawDescGZIP() []byte { + file_serializations_proto_rawDescOnce.Do(func() { + file_serializations_proto_rawDescData = protoimpl.X.CompressGZIP(file_serializations_proto_rawDescData) + }) + return file_serializations_proto_rawDescData } -func (m *NodeData) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: NodeData: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: NodeData: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSerializations - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Size", wireType) - } - m.Size = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Size |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSerializations - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSerializations - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Value == nil { - m.Value = &pquads.Value{} - } - if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSerializations(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSerializations - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +var file_serializations_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_serializations_proto_goTypes = []any{ + (*LogDelta)(nil), // 0: proto.LogDelta + (*HistoryEntry)(nil), // 1: proto.HistoryEntry + (*NodeData)(nil), // 2: proto.NodeData + (*pquads.Quad)(nil), // 3: pquads.Quad + (*pquads.Value)(nil), // 4: pquads.Value } -func skipSerializations(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSerializations - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break +var file_serializations_proto_depIdxs = []int32{ + 3, // 0: proto.LogDelta.Quad:type_name -> pquads.Quad + 4, // 1: proto.NodeData.value:type_name -> pquads.Value + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_serializations_proto_init() } +func file_serializations_proto_init() { + if File_serializations_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_serializations_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*LogDelta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil } } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSerializations - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } + file_serializations_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*HistoryEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil } - return iNdEx, nil - case 1: - iNdEx += 8 - return iNdEx, nil - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSerializations - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - iNdEx += length - if length < 0 { - return 0, ErrInvalidLengthSerializations - } - return iNdEx, nil - case 3: - for { - var innerWire uint64 - var start int = iNdEx - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSerializations - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - innerWire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - innerWireType := int(innerWire & 0x7) - if innerWireType == 4 { - break - } - next, err := skipSerializations(dAtA[start:]) - if err != nil { - return 0, err - } - iNdEx = start + next + } + file_serializations_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*NodeData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil } - return iNdEx, nil - case 4: - return iNdEx, nil - case 5: - iNdEx += 4 - return iNdEx, nil - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) } } - panic("unreachable") -} - -var ( - ErrInvalidLengthSerializations = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowSerializations = fmt.Errorf("proto: integer overflow") -) - -func init() { proto1.RegisterFile("serializations.proto", fileDescriptorSerializations) } - -var fileDescriptorSerializations = []byte{ - // 311 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x90, 0xdf, 0x4a, 0xf3, 0x30, - 0x18, 0xc6, 0xc9, 0x9a, 0xfd, 0xcb, 0xf6, 0x7d, 0x07, 0x41, 0xa4, 0x0c, 0x19, 0x61, 0x9e, 0xe4, - 0xc4, 0x16, 0x26, 0x5e, 0x80, 0x52, 0x41, 0x41, 0x06, 0x46, 0xd1, 0xe3, 0x77, 0x5b, 0xec, 0x02, - 0xed, 0x52, 0x93, 0x54, 0xe8, 0xae, 0xc6, 0xcb, 0xf1, 0xd0, 0x6b, 0x98, 0x37, 0x22, 0x49, 0x37, - 0xf0, 0x24, 0x79, 0x9e, 0x5f, 0xf2, 0x92, 0x1f, 0x21, 0x27, 0x56, 0x1a, 0x05, 0x85, 0xda, 0x81, - 0x53, 0x7a, 0x6b, 0x93, 0xca, 0x68, 0xa7, 0x69, 0x37, 0x6c, 0x93, 0x8b, 0x5c, 0xb9, 0x4d, 0xbd, - 0x4c, 0x56, 0xba, 0x4c, 0x73, 0x9d, 0xeb, 0x34, 0xe0, 0x65, 0xfd, 0x16, 0x5a, 0x28, 0x21, 0xb5, - 0x53, 0x93, 0xab, 0x3f, 0xd7, 0x57, 0xd0, 0x14, 0xb2, 0xc9, 0x0d, 0x54, 0x9b, 0x43, 0x4e, 0xdf, - 0x6b, 0x58, 0xa7, 0x95, 0x5f, 0x6d, 0xc8, 0x87, 0xc7, 0x66, 0x86, 0x0c, 0x1e, 0x74, 0x9e, 0xc9, - 0xc2, 0x01, 0xfd, 0x4f, 0x3a, 0xf7, 0x59, 0x8c, 0x18, 0xe2, 0x58, 0x74, 0x54, 0x46, 0x19, 0xc1, - 0x8f, 0x35, 0xac, 0xe3, 0x0e, 0x43, 0x7c, 0x34, 0x1f, 0x27, 0xed, 0x78, 0xe2, 0x99, 0xc0, 0x3e, - 0xd3, 0x53, 0xd2, 0xbb, 0x5e, 0x79, 0xf7, 0x38, 0x62, 0x88, 0x77, 0x45, 0x0f, 0x42, 0xa3, 0x67, - 0x64, 0xf8, 0xac, 0x4a, 0x69, 0x1d, 0x94, 0x55, 0x8c, 0x19, 0xe2, 0x91, 0x18, 0xba, 0x23, 0x98, - 0x71, 0x32, 0xbe, 0x53, 0xd6, 0x69, 0xd3, 0xdc, 0x6e, 0x9d, 0x69, 0x68, 0x4c, 0xfa, 0x87, 0x1e, - 0x23, 0x16, 0x71, 0x2c, 0xfa, 0x9b, 0xb6, 0xce, 0x5e, 0xc9, 0x60, 0xa1, 0xd7, 0x32, 0x03, 0x07, - 0x94, 0x12, 0xbc, 0x80, 0x52, 0x06, 0xbf, 0xa1, 0xc0, 0x5b, 0x28, 0xa5, 0x67, 0x4f, 0x6a, 0x27, - 0x83, 0x61, 0x24, 0xb0, 0x55, 0x3b, 0x49, 0xcf, 0x49, 0xf7, 0x03, 0x8a, 0x5a, 0x06, 0xa5, 0xd1, - 0xfc, 0xdf, 0x51, 0xfb, 0xc5, 0x43, 0xd1, 0x9e, 0xdd, 0x8c, 0xbf, 0xf6, 0x53, 0xf4, 0xbd, 0x9f, - 0xa2, 0xcf, 0x9f, 0x29, 0x5a, 0xf6, 0xc2, 0x5f, 0x5c, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0xc4, - 0x7e, 0x15, 0x5d, 0x90, 0x01, 0x00, 0x00, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_serializations_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_serializations_proto_goTypes, + DependencyIndexes: file_serializations_proto_depIdxs, + MessageInfos: file_serializations_proto_msgTypes, + }.Build() + File_serializations_proto = out.File + file_serializations_proto_rawDesc = nil + file_serializations_proto_goTypes = nil + file_serializations_proto_depIdxs = nil } diff --git a/graph/proto/serializations.proto b/graph/proto/serializations.proto index 6cbb237ff..b9c58ed72 100644 --- a/graph/proto/serializations.proto +++ b/graph/proto/serializations.proto @@ -16,11 +16,9 @@ syntax = "proto3"; package proto; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; -import "github.com/cayleygraph/quad/pquads/quads.proto"; -option (gogoproto.protosizer_all) = true; -option (gogoproto.marshaler_all) = true; -option (gogoproto.unmarshaler_all) = true; +option go_package = "github.com/cayleygraph/cayley/graph/proto"; + +import "quads.proto"; message LogDelta { uint64 ID = 1; diff --git a/graph/proto/serializations_helpers.go b/graph/proto/serializations_helpers.go index 2df06026e..414804f69 100644 --- a/graph/proto/serializations_helpers.go +++ b/graph/proto/serializations_helpers.go @@ -5,7 +5,8 @@ import ( "github.com/cayleygraph/quad/pquads" ) -//go:generate protoc --proto_path=$GOPATH/src:. --gogo_out=. serializations.proto +//go:generate curl -LO https://github.com/cayleygraph/quad/raw/v1.3.0/pquads/quads.proto +//go:generate protoc --go_opt=paths=source_relative --proto_path=. --go_out=. serializations.proto // GetNativeValue returns the value stored in Node. func (m *NodeData) GetNativeValue() quad.Value { diff --git a/graph/quadwriter.go b/graph/quadwriter.go index 0ddf98937..e1f3c4adf 100644 --- a/graph/quadwriter.go +++ b/graph/quadwriter.go @@ -26,8 +26,9 @@ import ( "errors" "io" - "github.com/cayleygraph/cayley/graph/iterator" "github.com/cayleygraph/quad" + + "github.com/cayleygraph/cayley/graph/iterator" ) type Procedure int8 @@ -98,34 +99,26 @@ func (e *DeltaError) Error() string { return e.Delta.Action.String() + " " + e.Delta.Quad.String() + ": " + e.Err.Error() } +func (e *DeltaError) Unwrap() error { + return e.Err +} + // IsQuadExist returns whether an error is a DeltaError // with the Err field equal to ErrQuadExists. func IsQuadExist(err error) bool { - if err == ErrQuadExists { - return true - } - de, ok := err.(*DeltaError) - return ok && de.Err == ErrQuadExists + return errors.Is(err, ErrQuadExists) } // IsQuadNotExist returns whether an error is a DeltaError // with the Err field equal to ErrQuadNotExist. func IsQuadNotExist(err error) bool { - if err == ErrQuadNotExist { - return true - } - de, ok := err.(*DeltaError) - return ok && de.Err == ErrQuadNotExist + return errors.Is(err, ErrQuadNotExist) } // IsInvalidAction returns whether an error is a DeltaError // with the Err field equal to ErrInvalidAction. func IsInvalidAction(err error) bool { - if err == ErrInvalidAction { - return true - } - de, ok := err.(*DeltaError) - return ok && de.Err == ErrInvalidAction + return errors.Is(err, ErrInvalidAction) } var ( diff --git a/graph/sql/cockroach/cockroach.go b/graph/sql/cockroach/cockroach.go index dcdcb9704..4a9ad7e47 100644 --- a/graph/sql/cockroach/cockroach.go +++ b/graph/sql/cockroach/cockroach.go @@ -3,15 +3,18 @@ package cockroach import ( "bytes" "database/sql" + "errors" "fmt" "strings" + "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/pgconn" + _ "github.com/jackc/pgx/v5/stdlib" // registers "pgx" driver + "github.com/cayleygraph/cayley/clog" "github.com/cayleygraph/cayley/graph" graphlog "github.com/cayleygraph/cayley/graph/log" csql "github.com/cayleygraph/cayley/graph/sql" - "github.com/jackc/pgx" - _ "github.com/jackc/pgx/stdlib" // registers "pgx" driver ) const Type = "cockroach" @@ -52,7 +55,15 @@ func init() { // AmbiguousCommitError represents an error that left a transaction in an // ambiguous state: unclear if it committed or not. type AmbiguousCommitError struct { - error + Err error +} + +func (e *AmbiguousCommitError) Error() string { + return e.Err.Error() +} + +func (e *AmbiguousCommitError) Unwrap() error { + return e.Err } // retryTxCockroach runs the transaction and will retry in case of a retryable error. @@ -81,8 +92,11 @@ func retryTxCockroach(tx *sql.Tx, stmts func() error) error { // for either the standard PG errcode SerializationFailureError:40001 or the Cockroach extension // errcode RetriableError:CR000. The Cockroach extension has been removed server-side, but support // for it has been left here for now to maintain backwards compatibility. - pgErr, ok := err.(pgx.PgError) - if retryable := ok && (pgErr.Code == "CR000" || pgErr.Code == "40001"); !retryable { + var pgErr *pgconn.PgError + if !errors.As(err, &pgErr) { + return err + } + if retryable := pgErr.Code == "CR000" || pgErr.Code == "40001"; !retryable { if released { err = &AmbiguousCommitError{err} } @@ -95,8 +109,8 @@ func retryTxCockroach(tx *sql.Tx, stmts func() error) error { } func convError(err error) error { - e, ok := err.(pgx.PgError) - if !ok { + var e *pgconn.PgError + if !errors.As(err, &e) { return err } switch e.Code { @@ -108,9 +122,10 @@ func convError(err error) error { func convInsertError(err error) error { if err == nil { - return err + return nil } - if pe, ok := err.(pgx.PgError); ok { + var pe *pgconn.PgError + if errors.As(err, &pe) { if pe.Code == "23505" { // TODO: reference to delta return &graph.DeltaError{Err: graph.ErrQuadExists} diff --git a/graph/sql/cockroach/cockroach_test.go b/graph/sql/cockroach/cockroach_test.go index 358b94c61..0afbc2da1 100644 --- a/graph/sql/cockroach/cockroach_test.go +++ b/graph/sql/cockroach/cockroach_test.go @@ -1,27 +1,31 @@ +//go:build docker // +build docker package cockroach import ( + "context" "database/sql" "net" "strconv" "testing" + "time" + + "github.com/jackc/pgx/v5" + _ "github.com/jackc/pgx/v5/stdlib" "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/graph/sql/sqltest" "github.com/cayleygraph/cayley/internal/dock" - "github.com/jackc/pgx" - _ "github.com/jackc/pgx/stdlib" ) -func makeCockroach(t testing.TB) (string, graph.Options, func()) { +func makeCockroach(t testing.TB) (string, graph.Options) { var conf dock.Config - conf.Image = "cockroachdb/cockroach:v1.1.5" - conf.Cmd = []string{"start", "--insecure"} + conf.Image = "cockroachdb/cockroach:latest-v24.1" + conf.Cmd = []string{"start-single-node", "--insecure"} - addr, closer := dock.RunAndWait(t, conf, "26257", func(addr string) bool { + addr := dock.RunAndWait(t, conf, "26257", func(addr string) bool { host, portStr, err := net.SplitHostPort(addr) if err != nil { return false @@ -30,33 +34,36 @@ func makeCockroach(t testing.TB) (string, graph.Options, func()) { if err != nil { return false } - conn, err := pgx.Connect(pgx.ConnConfig{ - Host: host, - Port: uint16(port), - User: "root", - }) + + cconf, err := pgx.ParseConfig("") if err != nil { return false } - conn.Close() + cconf.Host = host + cconf.Port = uint16(port) + cconf.User = "root" + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + conn, err := pgx.ConnectConfig(ctx, cconf) + if err != nil { + return false + } + conn.Close(ctx) return true }) addr = `postgresql://root@` + addr db, err := sql.Open("pgx", addr+`?sslmode=disable`) if err != nil { - closer() t.Fatal(err) } defer db.Close() const dbName = "cayley" if _, err = db.Exec("CREATE DATABASE " + dbName); err != nil { - closer() t.Fatal(err) } addr = addr + `/` + dbName + `?sslmode=disable` - return addr, nil, func() { - closer() - } + return addr, nil } var conf = &sqltest.Config{ diff --git a/graph/sql/database.go b/graph/sql/database.go index 71a1b4135..140dbee3f 100644 --- a/graph/sql/database.go +++ b/graph/sql/database.go @@ -5,9 +5,10 @@ import ( "fmt" "strings" - "github.com/cayleygraph/cayley/graph" - "github.com/cayleygraph/cayley/graph/log" "github.com/cayleygraph/quad" + + "github.com/cayleygraph/cayley/graph" + graphlog "github.com/cayleygraph/cayley/graph/log" ) var types = make(map[string]Registration) @@ -31,6 +32,7 @@ type Registration struct { ConditionalIndexes bool // database supports conditional indexes FillFactor bool // database supports fill percent on indexes NoForeignKeys bool // database has no support for FKs + CustomNullTime bool // driver doesn't support sql.NullTime QueryDialect NoOffsetWithoutLimit bool // SELECT ... OFFSET can be used only with LIMIT diff --git a/graph/sql/mysql/mysql.go b/graph/sql/mysql/mysql.go index eac05e3b5..01ead36dd 100644 --- a/graph/sql/mysql/mysql.go +++ b/graph/sql/mysql/mysql.go @@ -5,12 +5,13 @@ import ( "fmt" "strings" + "github.com/cayleygraph/quad" + "github.com/go-sql-driver/mysql" + "github.com/cayleygraph/cayley/clog" "github.com/cayleygraph/cayley/graph" - "github.com/cayleygraph/cayley/graph/log" + graphlog "github.com/cayleygraph/cayley/graph/log" csql "github.com/cayleygraph/cayley/graph/sql" - "github.com/cayleygraph/quad" - "github.com/go-sql-driver/mysql" ) const Type = "mysql" @@ -32,6 +33,7 @@ func init() { TimeType: `DATETIME(6)`, QueryDialect: QueryDialect, NoOffsetWithoutLimit: true, + CustomNullTime: true, Error: func(err error) error { return err }, diff --git a/graph/sql/mysql/mysql_test.go b/graph/sql/mysql/mysql_test.go index 6c401a3ff..d52b00a55 100644 --- a/graph/sql/mysql/mysql_test.go +++ b/graph/sql/mysql/mysql_test.go @@ -1,3 +1,4 @@ +//go:build docker // +build docker package mysql @@ -11,7 +12,7 @@ import ( ) func makeMysqlVersion(image string) sqltest.DatabaseFunc { - return func(t testing.TB) (string, graph.Options, func()) { + return func(t testing.TB) (string, graph.Options) { var conf dock.Config conf.Image = image @@ -21,17 +22,15 @@ func makeMysqlVersion(image string) sqltest.DatabaseFunc { `MYSQL_DATABASE=testdb`, } - addr, closer := dock.RunAndWait(t, conf, "3306", nil) + addr := dock.RunAndWait(t, conf, "3306", nil) addr = `root:root@tcp(` + addr + `)/testdb` - return addr, nil, func() { - closer() - } + return addr, nil } } const ( - mysqlImage = "mysql:5.7" - mariadbImage = "mariadb:10" + mysqlImage = "mysql:8" + mariadbImage = "mariadb:11" ) func TestMysql(t *testing.T) { diff --git a/graph/sql/postgres/postgres_test.go b/graph/sql/postgres/postgres_test.go index dfe315367..6bd1a6159 100644 --- a/graph/sql/postgres/postgres_test.go +++ b/graph/sql/postgres/postgres_test.go @@ -1,3 +1,4 @@ +//go:build docker // +build docker package postgres @@ -5,21 +6,22 @@ package postgres import ( "testing" + "github.com/lib/pq" + "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/graph/sql/sqltest" "github.com/cayleygraph/cayley/internal/dock" - "github.com/lib/pq" ) -func makePostgres(t testing.TB) (string, graph.Options, func()) { +func makePostgres(t testing.TB) (string, graph.Options) { var conf dock.Config - conf.Image = "postgres:9.5" + conf.Image = "postgres:16" conf.OpenStdin = true conf.Tty = true conf.Env = []string{`POSTGRES_PASSWORD=postgres`} - addr, closer := dock.RunAndWait(t, conf, "5432", func(addr string) bool { + addr := dock.RunAndWait(t, conf, "5432", func(addr string) bool { conn, err := pq.Open(`postgres://postgres:postgres@` + addr + `/postgres?sslmode=disable`) if err != nil { return false @@ -28,9 +30,7 @@ func makePostgres(t testing.TB) (string, graph.Options, func()) { return true }) addr = `postgres://postgres:postgres@` + addr + `/postgres?sslmode=disable` - return addr, nil, func() { - closer() - } + return addr, nil } var conf = &sqltest.Config{ diff --git a/graph/sql/quadstore.go b/graph/sql/quadstore.go index 72bb06707..2834fb57a 100644 --- a/graph/sql/quadstore.go +++ b/graph/sql/quadstore.go @@ -9,14 +9,15 @@ import ( "sync" "time" + "github.com/cayleygraph/quad" + "github.com/cayleygraph/quad/pquads" + "github.com/cayleygraph/cayley/clog" "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/graph/iterator" graphlog "github.com/cayleygraph/cayley/graph/log" "github.com/cayleygraph/cayley/graph/refs" "github.com/cayleygraph/cayley/internal/lru" - "github.com/cayleygraph/quad" - "github.com/cayleygraph/quad/pquads" ) func registerQuadStore(name, typ string) { @@ -650,17 +651,32 @@ func (qs *QuadStore) NameOf(v graph.Ref) (quad.Value, error) { FROM nodes WHERE hash = ` + qs.flavor.Placeholder(1) + ` LIMIT 1;` c := qs.db.QueryRow(query, hash.SQLValue()) var ( - data []byte - str sql.NullString - typ sql.NullString - lang sql.NullString - iri sql.NullBool - bnode sql.NullBool - vint sql.NullInt64 - vbool sql.NullBool - vfloat sql.NullFloat64 - vtime NullTime + data []byte + str sql.NullString + typ sql.NullString + lang sql.NullString + iri sql.NullBool + bnode sql.NullBool + vint sql.NullInt64 + vbool sql.NullBool + vfloat sql.NullFloat64 + vtimeStd sql.NullTime + vtimeCustom NullTime ) + var ( + vtimeScan any + vtimeTime *time.Time + vtimeValid *bool + ) + if qs.flavor.CustomNullTime { + vtimeScan = &vtimeCustom + vtimeTime = &vtimeCustom.Time + vtimeValid = &vtimeCustom.Valid + } else { + vtimeScan = &vtimeStd + vtimeTime = &vtimeStd.Time + vtimeValid = &vtimeStd.Valid + } if err := c.Scan( &data, &str, @@ -671,7 +687,7 @@ func (qs *QuadStore) NameOf(v graph.Ref) (quad.Value, error) { &vint, &vbool, &vfloat, - &vtime, + vtimeScan, ); err != nil { if err != sql.ErrNoRows { return nil, fmt.Errorf("error executing value lookup: %w", err) @@ -702,8 +718,8 @@ func (qs *QuadStore) NameOf(v graph.Ref) (quad.Value, error) { val = quad.Bool(vbool.Bool) } else if vfloat.Valid { val = quad.Float(vfloat.Float64) - } else if vtime.Valid { - val = quad.Time(vtime.Time) + } else if *vtimeValid { + val = quad.Time(vtimeTime.UTC()) } else { qv, err := pquads.UnmarshalValue(data) if err != nil { diff --git a/graph/sql/sqlite/sqlite.go b/graph/sql/sqlite/sqlite.go index e9e263b87..98ef52463 100644 --- a/graph/sql/sqlite/sqlite.go +++ b/graph/sql/sqlite/sqlite.go @@ -1,4 +1,4 @@ -//+build cgo +//go:build cgo package sqlite @@ -8,12 +8,13 @@ import ( "regexp" "strings" + "github.com/cayleygraph/quad" + sqlite3 "github.com/mattn/go-sqlite3" + "github.com/cayleygraph/cayley/clog" "github.com/cayleygraph/cayley/graph" graphlog "github.com/cayleygraph/cayley/graph/log" csql "github.com/cayleygraph/cayley/graph/sql" - "github.com/cayleygraph/quad" - sqlite3 "github.com/mattn/go-sqlite3" ) const Type = "sqlite" diff --git a/graph/sql/sqlite/sqlite_test.go b/graph/sql/sqlite/sqlite_test.go index 7dccc3f72..c916fc8d1 100644 --- a/graph/sql/sqlite/sqlite_test.go +++ b/graph/sql/sqlite/sqlite_test.go @@ -1,10 +1,9 @@ -//+build cgo +//go:build cgo package sqlite import ( "fmt" - "io/ioutil" "os" "testing" @@ -12,14 +11,15 @@ import ( "github.com/cayleygraph/cayley/graph/sql/sqltest" ) -func makeSqlite(t testing.TB) (string, graph.Options, func()) { - tmpFile, err := ioutil.TempFile("", fmt.Sprintf("cayley_test_%s*", Type)) +func makeSqlite(t testing.TB) (string, graph.Options) { + tmpFile, err := os.CreateTemp("", fmt.Sprintf("cayley_test_%s*", Type)) if err != nil { t.Fatalf("Could not create working directory: %v", err) } - return fmt.Sprintf("file:%s?_loc=UTC", tmpFile.Name()), nil, func() { + t.Cleanup(func() { os.RemoveAll(tmpFile.Name()) - } + }) + return fmt.Sprintf("file:%s?_loc=UTC", tmpFile.Name()), nil } var conf = &sqltest.Config{ diff --git a/graph/sql/sqltest/sqltest.go b/graph/sql/sqltest/sqltest.go index 7ffd41255..71a1ede62 100644 --- a/graph/sql/sqltest/sqltest.go +++ b/graph/sql/sqltest/sqltest.go @@ -4,12 +4,13 @@ import ( "testing" "unicode/utf8" + "github.com/cayleygraph/quad" + "github.com/stretchr/testify/require" + "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/graph/graphtest" "github.com/cayleygraph/cayley/graph/graphtest/testutil" "github.com/cayleygraph/cayley/graph/sql" - "github.com/cayleygraph/quad" - "github.com/stretchr/testify/require" ) type Config struct { @@ -51,30 +52,27 @@ func BenchmarkAll(t *testing.B, typ string, fnc DatabaseFunc, c *Config) { }) } -type DatabaseFunc func(t testing.TB) (string, graph.Options, func()) +type DatabaseFunc func(t testing.TB) (string, graph.Options) func makeDatabaseFunc(typ string, create DatabaseFunc) testutil.DatabaseFunc { - return func(t testing.TB) (graph.QuadStore, graph.Options, func()) { - addr, opts, closer := create(t) + return func(t testing.TB) (graph.QuadStore, graph.Options) { + addr, opts := create(t) if err := sql.Init(typ, addr, opts); err != nil { - closer() t.Fatal(err) } qs, err := sql.New(typ, addr, opts) if err != nil { - closer() t.Fatal(err) } - return qs, nil, func() { + t.Cleanup(func() { qs.Close() - closer() - } + }) + return qs, nil } } func testZeroRune(t testing.TB, create testutil.DatabaseFunc) { - qs, opts, closer := create(t) - defer closer() + qs, opts := create(t) w := testutil.MakeWriter(t, qs, opts) diff --git a/internal/dock/dock.go b/internal/dock/dock.go index caa05c8b0..a40b55bc7 100644 --- a/internal/dock/dock.go +++ b/internal/dock/dock.go @@ -1,3 +1,4 @@ +//go:build docker // +build docker package dock @@ -11,7 +12,7 @@ import ( "testing" "time" - "github.com/fsouza/go-dockerclient" + docker "github.com/fsouza/go-dockerclient" ) var ( @@ -27,7 +28,7 @@ type fullConfig struct { docker.HostConfig } -func run(t testing.TB, conf fullConfig) (addr string, closer func()) { +func run(t testing.TB, conf fullConfig) (addr string) { if testing.Short() { t.SkipNow() } @@ -54,22 +55,19 @@ func run(t testing.TB, conf fullConfig) (addr string, closer func()) { if err != nil { t.Skip(err) } - - closer = func() { + t.Cleanup(func() { cli.RemoveContainer(docker.RemoveContainerOptions{ ID: cont.ID, Force: true, }) - } + }) if err := cli.StartContainer(cont.ID, &conf.HostConfig); err != nil { - closer() t.Skip(err) } info, err := cli.InspectContainer(cont.ID) if err != nil { - closer() t.Skip(err) } addr = info.NetworkSettings.IPAddress @@ -96,7 +94,7 @@ func randPort() int { const localhost = "127.0.0.1" -func RunAndWait(t testing.TB, conf Config, port string, check func(string) bool) (addr string, closer func()) { +func RunAndWait(t testing.TB, conf Config, port string, check func(string) bool) (addr string) { fconf := fullConfig{Config: conf.Config} if runtime.GOOS != "linux" { lport := strconv.Itoa(randPort()) @@ -110,7 +108,7 @@ func RunAndWait(t testing.TB, conf Config, port string, check func(string) bool) } port = lport } - addr, closer = run(t, fconf) + addr = run(t, fconf) if runtime.GOOS != "linux" { // VM ports are automatically exposed on localhost addr = localhost @@ -127,10 +125,9 @@ func RunAndWait(t testing.TB, conf Config, port string, check func(string) bool) } } if !ok { - closer() t.Fatal("Container check fails.") } - return addr, closer + return addr } const wait = time.Second * 5 diff --git a/internal/http/http-packr.go b/internal/http/http-packr.go deleted file mode 100644 index ecbd03f03..000000000 --- a/internal/http/http-packr.go +++ /dev/null @@ -1,8 +0,0 @@ -// +build !skippackr -// Code generated by github.com/gobuffalo/packr/v2. DO NOT EDIT. - -// You can use the "packr clean" command to clean up this, -// and any other packr generated files. -package http - -import _ "github.com/cayleygraph/cayley/packrd" diff --git a/internal/http/http.go b/internal/http/http.go index 503ddd96b..8d473b788 100644 --- a/internal/http/http.go +++ b/internal/http/http.go @@ -17,19 +17,18 @@ package http import ( "encoding/json" "fmt" + "io/fs" "net/http" "time" - "github.com/gobuffalo/packr/v2" "github.com/julienschmidt/httprouter" "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/internal/gephi" cayleyhttp "github.com/cayleygraph/cayley/server/http" + "github.com/cayleygraph/cayley/ui" ) -var ui = packr.New("UI", "../../ui") - func jsonResponse(w http.ResponseWriter, code int, err interface{}) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(code) @@ -47,6 +46,10 @@ type Config struct { } func SetupRoutes(handle *graph.Handle, cfg *Config) error { + ui, err := fs.Sub(ui.FS, "web") + if err != nil { + return err + } r := httprouter.New() // Health check @@ -70,7 +73,7 @@ func SetupRoutes(handle *graph.Handle, cfg *Config) error { api2.SetQueryTimeout(cfg.Timeout) // For non API requests serve the UI - r.NotFound = http.FileServer(ui) + r.NotFound = http.FileServer(http.FS(ui)) http.Handle("/", CORS(LogRequest(r))) diff --git a/packrd/dummy.go b/packrd/dummy.go deleted file mode 100644 index 02f31bf47..000000000 --- a/packrd/dummy.go +++ /dev/null @@ -1,5 +0,0 @@ -package packrd - -import _ "github.com/gobuffalo/packr/v2" - -// This file exists to allow building the binary without embedded data. diff --git a/query/path/pathtest/pathtest.go b/query/path/pathtest/pathtest.go index a3eb0a18a..21b8b98ae 100644 --- a/query/path/pathtest/pathtest.go +++ b/query/path/pathtest/pathtest.go @@ -22,14 +22,15 @@ import ( "testing" "time" + "github.com/cayleygraph/quad" + "github.com/stretchr/testify/require" + "github.com/cayleygraph/cayley/graph" "github.com/cayleygraph/cayley/graph/graphtest/testutil" "github.com/cayleygraph/cayley/graph/iterator" "github.com/cayleygraph/cayley/query/path" "github.com/cayleygraph/cayley/query/shape" _ "github.com/cayleygraph/cayley/writer" - "github.com/cayleygraph/quad" - "github.com/stretchr/testify/require" ) // This is a simple test graph. @@ -45,22 +46,21 @@ import ( // \-->| #dani# |------------>+--------+ // +--------+ -func makeTestStore(t testing.TB, fnc testutil.DatabaseFunc, quads ...quad.Quad) (graph.QuadStore, func()) { +func makeTestStore(t testing.TB, fnc testutil.DatabaseFunc, quads ...quad.Quad) graph.QuadStore { if len(quads) == 0 { quads = testutil.LoadGraph(t, "data/testdata.nq") } var ( - qs graph.QuadStore - opts graph.Options - closer = func() {} + qs graph.QuadStore + opts graph.Options ) if fnc != nil { - qs, opts, closer = fnc(t) + qs, opts = fnc(t) } else { qs, _ = graph.NewQuadStore("memstore", "", nil) } _ = testutil.MakeWriter(t, qs, opts, quads...) - return qs, closer + return qs } func runTopLevel(qs graph.QuadStore, path *path.Path, opt bool) ([]quad.Value, error) { @@ -533,8 +533,7 @@ func RunTestMorphisms(t *testing.T, fnc testutil.DatabaseFunc) { } { ftest(t, fnc) } - qs, closer := makeTestStore(t, fnc) - defer closer() + qs := makeTestStore(t, fnc) for _, test := range testSet(qs) { for _, opt := range []bool{true, false} { @@ -594,7 +593,7 @@ func RunTestMorphisms(t *testing.T, fnc testutil.DatabaseFunc) { } func testFollowRecursive(t *testing.T, fnc testutil.DatabaseFunc) { - qs, closer := makeTestStore(t, fnc, []quad.Quad{ + qs := makeTestStore(t, fnc, []quad.Quad{ quad.MakeIRI("a", "parent", "b", ""), quad.MakeIRI("b", "parent", "c", ""), quad.MakeIRI("c", "parent", "d", ""), @@ -602,7 +601,6 @@ func testFollowRecursive(t *testing.T, fnc testutil.DatabaseFunc) { quad.MakeIRI("d", "parent", "e", ""), quad.MakeIRI("d", "labels", "tag", ""), }...) - defer closer() qu := path.StartPath(qs, quad.IRI("a")).FollowRecursive( path.StartMorphism().Out(quad.IRI("parent")), 0, nil, @@ -660,7 +658,7 @@ func (b byTags) Swap(i, j int) { } func testFollowRecursiveHas(t *testing.T, fnc testutil.DatabaseFunc) { - qs, closer := makeTestStore(t, fnc, []quad.Quad{ + qs := makeTestStore(t, fnc, []quad.Quad{ quad.MakeIRI("1", "relatesTo", "x", ""), quad.MakeIRI("2", "relatesTo", "x", ""), quad.MakeIRI("3", "relatesTo", "y", ""), @@ -668,7 +666,6 @@ func testFollowRecursiveHas(t *testing.T, fnc testutil.DatabaseFunc) { quad.MakeIRI("2", "knows", "3", ""), quad.MakeIRI("2", "knows", "1", ""), }...) - defer closer() qu := path.StartPath(qs, quad.IRI("1")).FollowRecursive( path.StartMorphism().Tag("pid").Out(quad.IRI("knows")), 2, nil, diff --git a/tools.go b/tools.go deleted file mode 100644 index 506e420b5..000000000 --- a/tools.go +++ /dev/null @@ -1,7 +0,0 @@ -//+build tools - -// This file pins a version of tools used for Cayley development in the Go mod. It's ignored during the build. - -package cayley - -import _ "github.com/gobuffalo/packr/v2/packr2" diff --git a/ui/embed.go b/ui/embed.go new file mode 100644 index 000000000..d09614c86 --- /dev/null +++ b/ui/embed.go @@ -0,0 +1,6 @@ +package ui + +import "embed" + +//go:embed web +var FS embed.FS diff --git a/ui/web/asset-manifest.json b/ui/web/asset-manifest.json new file mode 100644 index 000000000..9735924cf --- /dev/null +++ b/ui/web/asset-manifest.json @@ -0,0 +1,25 @@ +{ + "files": { + "main.css": "/static/css/main.72fe53e6.chunk.css", + "main.js": "/static/js/main.84d3ab8c.chunk.js", + "main.js.map": "/static/js/main.84d3ab8c.chunk.js.map", + "runtime-main.js": "/static/js/runtime-main.0686c6e7.js", + "runtime-main.js.map": "/static/js/runtime-main.0686c6e7.js.map", + "static/css/2.6b51f286.chunk.css": "/static/css/2.6b51f286.chunk.css", + "static/js/2.7d84b3fa.chunk.js": "/static/js/2.7d84b3fa.chunk.js", + "static/js/2.7d84b3fa.chunk.js.map": "/static/js/2.7d84b3fa.chunk.js.map", + "index.html": "/index.html", + "precache-manifest.5316e0e4a35813e95b82d4799f1bb55c.js": "/precache-manifest.5316e0e4a35813e95b82d4799f1bb55c.js", + "service-worker.js": "/service-worker.js", + "static/css/2.6b51f286.chunk.css.map": "/static/css/2.6b51f286.chunk.css.map", + "static/css/main.72fe53e6.chunk.css.map": "/static/css/main.72fe53e6.chunk.css.map", + "static/media/logo.svg": "/static/media/logo.ca711468.svg" + }, + "entrypoints": [ + "static/js/runtime-main.0686c6e7.js", + "static/css/2.6b51f286.chunk.css", + "static/js/2.7d84b3fa.chunk.js", + "static/css/main.72fe53e6.chunk.css", + "static/js/main.84d3ab8c.chunk.js" + ] +} \ No newline at end of file diff --git a/ui/web/favicon.ico b/ui/web/favicon.ico new file mode 100644 index 000000000..65af93e13 Binary files /dev/null and b/ui/web/favicon.ico differ diff --git a/ui/web/gizmo.d.ts b/ui/web/gizmo.d.ts new file mode 100644 index 000000000..1669d207b --- /dev/null +++ b/ui/web/gizmo.d.ts @@ -0,0 +1,208 @@ +/** + * Both `.Morphism()` and `.Vertex()` create path objects, which provide the following traversal methods. + * Note that `.Vertex()` returns a query object, which is a subclass of path object. + * + * For these examples, suppose we have the following graph: + * + * ``` + * +-------+ +------+ + * | alice |----- ->| fred |<-- + * +-------+ \---->+-------+-/ +------+ \-+-------+ + * ----->| #bob# | | |*emily*| + * +---------+--/ --->+-------+ | +-------+ + * | charlie | / v + * +---------+ / +--------+ + * \--- +--------+ |*#greg#*| + * \-->| #dani# |------------>+--------+ + * +--------+ + * ``` + * + * Where every link is a `` relationship, and the nodes with an extra `#` in the name have an extra `` link. As in, + * + * ``` + * -- --> "cool_person" + * ``` + * + * Perhaps these are the influencers in our community. So too are extra `*`s in the name -- these are our smart people, + * according to the `` label, eg, the quad: + * + * ``` + * "smart_person" . + * ``` + */ +interface Path { + /** Execute the query and adds the results, with all tags, as a string-to-string (tag to node) map in the output set, one for each path that a traversal could take. */ + all(): void; + /** Alias for intersect. */ + and(path: Path): Path; + /** Alias for tag. */ + as(...tags: string[]): Path; + /** Return current path to a set of nodes on a given tag, preserving all constraints. + * If still valid, a path will now consider their vertex to be the same one as the previously tagged one, with the added constraint that it was valid all the way here. Useful for traversing back in queries and taking another route for things that have matched so far. */ + back(tag?: string): Path; + /** Follow the predicate in either direction. Same as out or in. */ + both(path: Path, ...tags: string[]): Path; + /** Return a number of results and returns it as a value. */ + count(): number; + /** Alias for Except */ + difference(path: Path): Path; + /** Removes all paths which match query from current path. In a set-theoretic sense, this is (A - B). While `g.V().Except(path)` to achieve `U - B = !B` is supported, it's often very slow. */ + except(path: Path): Path; + /** Apply constraints to a set of nodes. Can be used to filter values by range or match strings. */ + filter(...args: any): Path; + /** The way to use a path prepared with Morphism. Applies the path chain on the morphism object to the current path. + * Starts as if at the g.M() and follows through the morphism path. */ + follow(path: Path): Path; + /** The same as follow but follows the chain in the reverse direction. Flips "In" and "Out" where appropriate, +the net result being a virtual predicate followed in the reverse direction. Starts at the end of the morphism and follows it backwards (with appropriate flipped directions) to the g.M() location. */ + followR(path: Path): Path; + /** The same as follow but follows the chain recursively. Starts as if at the g.M() and follows through the morphism path multiple times, returning all nodes encountered. */ + followRecursive(path: Path): Path; + /** Call callback(data) for each result, where data is the tag-to-string map as in All case. + * @param [limit] An integer value on the first `limit` paths to process. + * @param callback: A javascript function of the form `function(data)` + */ + forEach(callback: (data: { [key: string]: any }) => void): void; + forEach( + limit: number, + callback: (data: { [key: string]: any }) => void + ): void; + /** Alias for forEach. */ + map(callback: (data: { [key: string]: any }) => void): void; + map(limit: number, callback: (data: { [key: string]: any }) => void): void; + /** The same as All, but limited to the first N unique nodes at the end of the path, and each of their possible traversals. */ + getLimit(limit: number): void; + /** Filter all paths which are, at this point, on the subject for the given predicate and object, +but do not follow the path, merely filter the possible paths. Usually useful for starting with all nodes, or limiting to a subset depending on some predicate/value pair. + * @param predicate A string for a predicate node. + * @param object A string for a object node or a set of filters to find it. + */ + has(predicate: string, object: string): Path; + /** The same as Has, but sets constraint in reverse direction. */ + hasR(predicate: string, object: string): Path; + /** The inverse of out. Starting with the nodes in `path` on the object, follow the quads with predicates defined by `predicatePath` to their subjects. + * @param [predicatePath] One of: + * * null or undefined: All predicates pointing into this node + * * a string: The predicate name to follow into this node + * * a list of strings: The predicates to follow into this node + * * a query path object: The target of which is a set of predicates to follow. + * @param [tags] One of: + * * null or undefined: No tags + * * a string: A single tag to add the predicate used to the output set. + * * a list of strings: Multiple tags to use as keys to save the predicate used to the output set. + */ + in(predicatePath?: Path, ...tags: string[]): Path; + /** Get the list of predicates that are pointing in to a node. */ + inPredicates(): Path; + /** Filter all paths by the result of another query path. This is essentially a join where, at the stage of each path, a node is shared. */ + intersect(path: Path): Path; + /** Filter all paths to ones which, at this point, are on the given node. + * @param node: A string for a node. Can be repeated or a list of strings. + */ + is(node: string, ...nodes: string[]): Path; + /** Set (or remove) the subgraph context to consider in the following traversals. + * Affects all in(), out(), and both() calls that follow it. The default LabelContext is null (all subgraphs). + * @param predicatePath One of: + * * null or undefined: In future traversals, consider all edges, regardless of subgraph. + * * a string: The name of the subgraph to restrict traversals to. + * * a list of strings: A set of subgraphs to restrict traversals to. + * * a query path object: The target of which is a set of subgraphs. + * @param tags One of: + * * null or undefined: No tags + * * a string: A single tag to add the last traversed label to the output set. + * * a list of strings: Multiple tags to use as keys to save the label used to the output set. + */ + labelContext(labelPath: Path, ...tags: string[]): Path; + /** Get the list of inbound and outbound quad labels */ + labels(): Path; + /** Limit a number of nodes for current path. */ + limit(limit: number): Path; + /** Alias for Union. */ + or(path: Path): Path; + /** The work-a-day way to get between nodes, in the forward direction. Starting with the nodes in `path` on the subject, follow the quads with predicates defined by `predicatePath` to their objects. + * @param predicatePath (Optional): One of: + * * null or undefined: All predicates pointing out from this node + * * a string: The predicate name to follow out from this node + * * a list of strings: The predicates to follow out from this node + * * a query path object: The target of which is a set of predicates to follow. + * @param tags (Optional): One of: + * * null or undefined: No tags + * * a string: A single tag to add the predicate used to the output set. + * * a list of strings: Multiple tags to use as keys to save the predicate used to the output set. + */ + out(predicatePath?: Path, ...tags: string[]): Path; + /** Get the list of predicates that are pointing out from a node. */ + outPredicates(): Path; + /** Save the object of all quads with predicate into tag, without traversal. + * @param predicate A string for a predicate node. + * @param tag A string for a tag key to store the object node. + */ + save(predicate: string, tag: string): Path; + /** The same as save, but returns empty tags if predicate does not exists. */ + saveOpt(predicate: string, tag: string): Path; + /** The same as saveOpt, but tags values via reverse predicate. */ + saveOptR(predicate: string, tag: string): Path; + /** The same as save, but tags values via reverse predicate. */ + saveR(predicate: string, tag: string): Path; + /** Tag the list of predicates that are pointing in to a node. */ + saveInPredicates(tag: string): Path; + /** Tag the list of predicates that are pointing out from a node. */ + saveOutPredicates(tag: string): Path; + /** Skip a number of nodes for current path. + * @param offset: A number of nodes to skip. + */ + skip(offset: number): Path; + /** Save a list of nodes to a given tag. In order to save your work or learn more about how a path got to the end, we have tags. +The simplest thing to do is to add a tag anywhere you'd like to put each node in the result set. + * @param tag: A string or list of strings to act as a result key. The value for tag was the vertex the path was on at the time it reached "Tag" */ + tag(...tags: string[]): Path; + /** + * The same as toArray, but instead of a list of top-level nodes, returns an Array of tag-to-string dictionaries, much as All would, except inside the JS environment. + */ + tagArray(): void; + /** The same as TagArray, but limited to one result node. Returns a tag-to-string map. */ + tagValue(): void; + /** Execute a query and returns the results at the end of the query path as an JS array. */ + toArray(): void; + /** The same as ToArray, but limited to one result node. */ + toValue(): void; + /** Return the combined paths of the two queries. Notice that it's per-path, not per-node. Once again, if multiple paths reach the same destination, they might have had different ways of getting there (and different tags). See also: `Path.prototype.tag()` */ + union(path: Path): Path; + /** Remove duplicate values from the path. */ + unique(): Path; +} + +interface Graph { + /** A shorthand for Vertex. */ + V(...nodeId: string[]): Path; + /** A shorthand for Morphism */ + M(): Path; + /** Start a query path at the given vertex/vertices. No ids means "all vertices". */ + Vertex(...nodeId: string[]): Path; + /** Create a morphism path object. Unqueryable on it's own, defines one end of the path. +Saving these to variables with */ + Morphism(): Path; + /** Load all namespaces saved to graph. */ + loadNamespaces(): void; + /** Register all default namespaces for automatic IRI resolution. */ + addDefaultNamespaces(): void; + /** Associate prefix with a given IRI namespace. */ + addNamespace(): void; + /** Add data programmatically to the JSON result list. Can be any JSON type. */ + emit(): void; + /** Create an IRI values from a given string. */ + IRI(): string; +} + +/** This is the only special object in the environment, generates the query objects. +Under the hood, they're simple objects that get compiled to a Go iterator tree when executed. */ +declare var graph: Graph; + +/** Alias of graph. This is the only special object in the environment, generates the query objects. +Under the hood, they're simple objects that get compiled to a Go iterator tree when executed. */ +declare var g: Graph; + +interface RegexFilter {} + +/** Filter by match a regular expression ([syntax](https://github.com/google/re2/wiki/Syntax)). By default works only on literals unless includeIRIs is set to `true`. */ +declare function regex(expression: string, includeIRIs?: boolean): RegexFilter; diff --git a/ui/web/index.html b/ui/web/index.html new file mode 100644 index 000000000..5bad4b87a --- /dev/null +++ b/ui/web/index.html @@ -0,0 +1 @@ +Cayley
\ No newline at end of file diff --git a/ui/web/logo192.png b/ui/web/logo192.png new file mode 100644 index 000000000..fc44b0a37 Binary files /dev/null and b/ui/web/logo192.png differ diff --git a/ui/web/logo512.png b/ui/web/logo512.png new file mode 100644 index 000000000..a4e47a654 Binary files /dev/null and b/ui/web/logo512.png differ diff --git a/ui/web/manifest.json b/ui/web/manifest.json new file mode 100644 index 000000000..a04baa91f --- /dev/null +++ b/ui/web/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "Cayley", + "name": "Cayley", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/ui/web/precache-manifest.5316e0e4a35813e95b82d4799f1bb55c.js b/ui/web/precache-manifest.5316e0e4a35813e95b82d4799f1bb55c.js new file mode 100644 index 000000000..05d4217dc --- /dev/null +++ b/ui/web/precache-manifest.5316e0e4a35813e95b82d4799f1bb55c.js @@ -0,0 +1,30 @@ +self.__precacheManifest = (self.__precacheManifest || []).concat([ + { + "revision": "04b3493090e1efb6ffc5ded2f5343ae0", + "url": "/index.html" + }, + { + "revision": "8fcf0599cb1e0923f5dd", + "url": "/static/css/2.6b51f286.chunk.css" + }, + { + "revision": "c254b9a695b5dbe62b1f", + "url": "/static/css/main.72fe53e6.chunk.css" + }, + { + "revision": "8fcf0599cb1e0923f5dd", + "url": "/static/js/2.7d84b3fa.chunk.js" + }, + { + "revision": "c254b9a695b5dbe62b1f", + "url": "/static/js/main.84d3ab8c.chunk.js" + }, + { + "revision": "d18b22d979014e3125a8", + "url": "/static/js/runtime-main.0686c6e7.js" + }, + { + "revision": "ca71146870e23a16db96ef358169e8fa", + "url": "/static/media/logo.ca711468.svg" + } +]); \ No newline at end of file diff --git a/ui/web/robots.txt b/ui/web/robots.txt new file mode 100644 index 000000000..01b0f9a10 --- /dev/null +++ b/ui/web/robots.txt @@ -0,0 +1,2 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * diff --git a/ui/web/service-worker.js b/ui/web/service-worker.js new file mode 100644 index 000000000..9813d31f0 --- /dev/null +++ b/ui/web/service-worker.js @@ -0,0 +1,39 @@ +/** + * Welcome to your Workbox-powered service worker! + * + * You'll need to register this file in your web app and you should + * disable HTTP caching for this file too. + * See https://goo.gl/nhQhGp + * + * The rest of the code is auto-generated. Please don't update this file + * directly; instead, make changes to your Workbox build configuration + * and re-run your build process. + * See https://goo.gl/2aRDsh + */ + +importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); + +importScripts( + "/precache-manifest.5316e0e4a35813e95b82d4799f1bb55c.js" +); + +self.addEventListener('message', (event) => { + if (event.data && event.data.type === 'SKIP_WAITING') { + self.skipWaiting(); + } +}); + +workbox.core.clientsClaim(); + +/** + * The workboxSW.precacheAndRoute() method efficiently caches and responds to + * requests for URLs in the manifest. + * See https://goo.gl/S9QRab + */ +self.__precacheManifest = [].concat(self.__precacheManifest || []); +workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); + +workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("/index.html"), { + + blacklist: [/^\/_/,/\/[^/?]+\.[^/]+$/], +}); diff --git a/ui/web/static/css/2.6b51f286.chunk.css b/ui/web/static/css/2.6b51f286.chunk.css new file mode 100644 index 000000000..6fce20244 --- /dev/null +++ b/ui/web/static/css/2.6b51f286.chunk.css @@ -0,0 +1,52 @@ +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/.mdc-card{border-radius:4px;background-color:#fff;background-color:var(--mdc-theme-surface,#fff);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);display:flex;flex-direction:column;box-sizing:border-box}.mdc-card--outlined{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border:1px solid #e0e0e0}.mdc-card__media{position:relative;box-sizing:border-box;background-repeat:no-repeat;background-position:50%;background-size:cover}.mdc-card__media:before{display:block;content:""}.mdc-card__media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__media--square:before{margin-top:100%}.mdc-card__media--16-9:before{margin-top:56.25%}.mdc-card__media-content{position:absolute;top:0;right:0;bottom:0;left:0;box-sizing:border-box}.mdc-card__primary-action{display:flex;flex-direction:column;box-sizing:border-box;position:relative;outline:none;color:inherit;text-decoration:none;cursor:pointer;overflow:hidden}.mdc-card__primary-action:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__primary-action:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;min-height:52px;padding:8px}.mdc-card__actions--full-bleed{padding:0}.mdc-card__action-buttons,.mdc-card__action-icons{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}.mdc-card__action-icons{color:rgba(0,0,0,.6);flex-grow:1;justify-content:flex-end}.mdc-card__action-buttons+.mdc-card__action-icons{margin-left:16px;margin-right:0}.mdc-card__action-buttons+.mdc-card__action-icons[dir=rtl],[dir=rtl] .mdc-card__action-buttons+.mdc-card__action-icons{margin-left:0;margin-right:16px}.mdc-card__action{display:inline-flex;flex-direction:row;align-items:center;box-sizing:border-box;justify-content:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdc-card__action:focus{outline:none}.mdc-card__action--button{margin-left:0;margin-right:8px;padding:0 8px}.mdc-card__action--button[dir=rtl],[dir=rtl] .mdc-card__action--button{margin-left:8px;margin-right:0}.mdc-card__action--button:last-child,.mdc-card__action--button:last-child[dir=rtl],[dir=rtl] .mdc-card__action--button:last-child{margin-left:0;margin-right:0}.mdc-card__actions--full-bleed .mdc-card__action--button{justify-content:space-between;width:100%;height:auto;max-height:none;margin:0;padding:8px 16px;text-align:left}.mdc-card__actions--full-bleed .mdc-card__action--button[dir=rtl],[dir=rtl] .mdc-card__actions--full-bleed .mdc-card__action--button{text-align:right}.mdc-card__action--icon{margin:-6px 0;padding:12px}.mdc-card__action--icon:not(:disabled){color:rgba(0,0,0,.6)}.mdc-card__primary-action{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0,0,0,0);will-change:transform,opacity}.mdc-card__primary-action:after,.mdc-card__primary-action:before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-card__primary-action:before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-card__primary-action.mdc-ripple-upgraded:before{-webkit-transform:scale(1);-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-card__primary-action.mdc-ripple-upgraded:after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-card__primary-action.mdc-ripple-upgraded--unbounded:after{top:0;top:var(--mdc-ripple-top,0);left:0;left:var(--mdc-ripple-left,0)}.mdc-card__primary-action.mdc-ripple-upgraded--foreground-activation:after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-card__primary-action.mdc-ripple-upgraded--foreground-deactivation:after{-webkit-animation:mdc-ripple-fg-opacity-out .15s;animation:mdc-ripple-fg-opacity-out .15s;-webkit-transform:translate(0) scale(1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-card__primary-action:after,.mdc-card__primary-action:before{top:-50%;left:-50%;width:200%;height:200%}.mdc-card__primary-action.mdc-ripple-upgraded:after{width:100%;width:var(--mdc-ripple-fg-size,100%);height:100%;height:var(--mdc-ripple-fg-size,100%)}.mdc-card__primary-action:after,.mdc-card__primary-action:before{background-color:#000}.mdc-card__primary-action:hover:before{opacity:.04}.mdc-card__primary-action.mdc-ripple-upgraded--background-focused:before,.mdc-card__primary-action:not(.mdc-ripple-upgraded):focus:before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}.mdc-card__primary-action:not(.mdc-ripple-upgraded):after{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mdc-card__primary-action:not(.mdc-ripple-upgraded):active:after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}.mdc-card__primary-action.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:0.12} +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/.mdc-tab-scroller{overflow-y:hidden}.mdc-tab-scroller__test{position:absolute;top:-9999px;width:100px;height:100px;overflow-x:scroll}.mdc-tab-scroller__scroll-area{-webkit-overflow-scrolling:touch;display:flex;overflow-x:hidden}.mdc-tab-scroller__scroll-area::-webkit-scrollbar,.mdc-tab-scroller__test::-webkit-scrollbar{display:none}.mdc-tab-scroller__scroll-area--scroll{overflow-x:scroll}.mdc-tab-scroller__scroll-content{position:relative;display:flex;flex:1 0 auto;-webkit-transform:none;transform:none;will-change:transform}.mdc-tab-scroller--align-start .mdc-tab-scroller__scroll-content{justify-content:flex-start}.mdc-tab-scroller--align-end .mdc-tab-scroller__scroll-content{justify-content:flex-end}.mdc-tab-scroller--align-center .mdc-tab-scroller__scroll-content{justify-content:center}.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-area{-webkit-overflow-scrolling:auto}.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-content{transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);-webkit-transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),-webkit-transform .25s cubic-bezier(.4,0,.2,1)} +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator>.mdc-tab-indicator__content--underline{background-color:#6200ee;background-color:var(--mdc-theme-primary,#6200ee);height:2px}.mdc-tab-indicator>.mdc-tab-indicator__content--icon{color:#018786;color:var(--mdc-theme-secondary,#018786);height:34px;font-size:34px}.mdc-tab-indicator__content{-webkit-transform-origin:left;transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;width:100%}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active>.mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator>.mdc-tab-indicator__content{transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);-webkit-transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),-webkit-transform .25s cubic-bezier(.4,0,.2,1)}.mdc-tab-indicator--no-transition>.mdc-tab-indicator__content{-webkit-transition:none;transition:none}.mdc-tab-indicator--fade>.mdc-tab-indicator__content{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade>.mdc-tab-indicator__content{-webkit-transition-delay:.1s;transition-delay:.1s} +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/.mdc-tab-bar{width:100%} +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/.mdc-tab{position:relative;font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:2.25rem;font-weight:500;letter-spacing:.0892857143em;text-decoration:none;text-transform:uppercase;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;height:48px;padding:0 24px;border:none;outline:none;background:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1}.mdc-tab .mdc-tab__icon,.mdc-tab .mdc-tab__text-label{color:#000;color:var(--mdc-theme-on-surface,#000)}.mdc-tab .mdc-tab__icon{fill:currentColor}.mdc-tab::-moz-focus-inner{padding:0;border:0}.mdc-tab--min-width{flex:0 1 auto}.mdc-tab__ripple{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0,0,0,0);will-change:transform,opacity;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.mdc-tab__ripple:after,.mdc-tab__ripple:before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-tab__ripple:before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-tab__ripple.mdc-ripple-upgraded:before{-webkit-transform:scale(1);-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-tab__ripple.mdc-ripple-upgraded:after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-tab__ripple.mdc-ripple-upgraded--unbounded:after{top:0;top:var(--mdc-ripple-top,0);left:0;left:var(--mdc-ripple-left,0)}.mdc-tab__ripple.mdc-ripple-upgraded--foreground-activation:after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-tab__ripple.mdc-ripple-upgraded--foreground-deactivation:after{-webkit-animation:mdc-ripple-fg-opacity-out .15s;animation:mdc-ripple-fg-opacity-out .15s;-webkit-transform:translate(0) scale(1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-tab__ripple:after,.mdc-tab__ripple:before{top:-50%;left:-50%;width:200%;height:200%}.mdc-tab__ripple.mdc-ripple-upgraded:after{width:100%;width:var(--mdc-ripple-fg-size,100%);height:100%;height:var(--mdc-ripple-fg-size,100%)}.mdc-tab__ripple:after,.mdc-tab__ripple:before{background-color:#6200ee}@supports not (-ms-ime-align:auto){.mdc-tab__ripple:after,.mdc-tab__ripple:before{background-color:#6200ee;background-color:var(--mdc-theme-primary,#6200ee)}}.mdc-tab__ripple:hover:before{opacity:.04}.mdc-tab__ripple.mdc-ripple-upgraded--background-focused:before,.mdc-tab__ripple:not(.mdc-ripple-upgraded):focus:before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}.mdc-tab__ripple:not(.mdc-ripple-upgraded):after{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mdc-tab__ripple:not(.mdc-ripple-upgraded):active:after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}.mdc-tab__ripple.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:0.12}.mdc-tab__content{position:relative;display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__icon,.mdc-tab__text-label{-webkit-transition:color .15s linear,opacity .15s linear;transition:color .15s linear,opacity .15s linear;z-index:2}.mdc-tab__text-label{display:inline-block;opacity:.6;line-height:1}.mdc-tab__icon{width:24px;height:24px;opacity:.54;font-size:24px}.mdc-tab--stacked{height:72px}.mdc-tab--stacked .mdc-tab__content{flex-direction:column;align-items:center;justify-content:space-between}.mdc-tab--stacked .mdc-tab__icon{padding-top:12px}.mdc-tab--stacked .mdc-tab__text-label{padding-bottom:16px}.mdc-tab--active .mdc-tab__icon,.mdc-tab--active .mdc-tab__text-label{color:#6200ee;color:var(--mdc-theme-primary,#6200ee)}.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mdc-tab--active .mdc-tab__icon,.mdc-tab--active .mdc-tab__text-label{-webkit-transition-delay:.1s;transition-delay:.1s;opacity:1}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:8px;padding-right:0}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label[dir=rtl],[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:0;padding-right:8px} +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/.mdc-typography{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.mdc-typography--headline1{font-size:6rem;line-height:6rem;letter-spacing:-.015625em}.mdc-typography--headline1,.mdc-typography--headline2{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-weight:300;text-decoration:inherit;text-transform:inherit}.mdc-typography--headline2{font-size:3.75rem;line-height:3.75rem;letter-spacing:-.0083333333em}.mdc-typography--headline3{font-size:3rem;line-height:3.125rem;letter-spacing:normal}.mdc-typography--headline3,.mdc-typography--headline4{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-weight:400;text-decoration:inherit;text-transform:inherit}.mdc-typography--headline4{font-size:2.125rem;line-height:2.5rem;letter-spacing:.0073529412em}.mdc-typography--headline5{font-size:1.5rem;font-weight:400;letter-spacing:normal}.mdc-typography--headline5,.mdc-typography--headline6{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:2rem;text-decoration:inherit;text-transform:inherit}.mdc-typography--headline6{font-size:1.25rem;font-weight:500;letter-spacing:.0125em}.mdc-typography--subtitle1{font-size:1rem;line-height:1.75rem;font-weight:400;letter-spacing:.009375em}.mdc-typography--subtitle1,.mdc-typography--subtitle2{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-decoration:inherit;text-transform:inherit}.mdc-typography--subtitle2{font-size:.875rem;line-height:1.375rem;font-weight:500;letter-spacing:.0071428571em}.mdc-typography--body1{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.5rem;font-weight:400;letter-spacing:.03125em;text-decoration:inherit;text-transform:inherit}.mdc-typography--body2{font-size:.875rem;letter-spacing:.0178571429em}.mdc-typography--body2,.mdc-typography--caption{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:1.25rem;font-weight:400;text-decoration:inherit;text-transform:inherit}.mdc-typography--caption{font-size:.75rem;letter-spacing:.0333333333em}.mdc-typography--button{font-size:.875rem;line-height:2.25rem;letter-spacing:.0892857143em}.mdc-typography--button,.mdc-typography--overline{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-weight:500;text-decoration:none;text-transform:uppercase}.mdc-typography--overline{font-size:.75rem;line-height:2rem;letter-spacing:.1666666667em} +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/@-webkit-keyframes mdc-select-float-native-control{0%{-webkit-transform:translateY(8px);transform:translateY(8px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes mdc-select-float-native-control{0%{-webkit-transform:translateY(8px);transform:translateY(8px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}.mdc-line-ripple{position:absolute;bottom:0;left:0;width:100%;height:2px;-webkit-transform:scaleX(0);transform:scaleX(0);transition:opacity .18s cubic-bezier(.4,0,.2,1),-webkit-transform .18s cubic-bezier(.4,0,.2,1);-webkit-transition:opacity .18s cubic-bezier(.4,0,.2,1),-webkit-transform .18s cubic-bezier(.4,0,.2,1);transition:transform .18s cubic-bezier(.4,0,.2,1),opacity .18s cubic-bezier(.4,0,.2,1);transition:transform .18s cubic-bezier(.4,0,.2,1),opacity .18s cubic-bezier(.4,0,.2,1),-webkit-transform .18s cubic-bezier(.4,0,.2,1);opacity:0;z-index:2}.mdc-line-ripple--active{-webkit-transform:scaleX(1);transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating{opacity:0}.mdc-notched-outline{display:flex;position:absolute;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}.mdc-notched-outline[dir=rtl],[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;-webkit-transition:border .15s cubic-bezier(.4,0,.2,1);transition:border .15s cubic-bezier(.4,0,.2,1);border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}.mdc-notched-outline__leading[dir=rtl],.mdc-notched-outline__trailing,[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{flex-grow:1}.mdc-notched-outline__trailing[dir=rtl],[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 24px)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;top:17px;bottom:auto;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.33333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl],[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{padding:0}.mdc-floating-label{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.75rem;font-weight:400;letter-spacing:.009375em;text-decoration:inherit;text-transform:inherit;position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;transition:color .15s cubic-bezier(.4,0,.2,1),-webkit-transform .15s cubic-bezier(.4,0,.2,1);-webkit-transition:color .15s cubic-bezier(.4,0,.2,1),-webkit-transform .15s cubic-bezier(.4,0,.2,1);transition:transform .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1);transition:transform .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),-webkit-transform .15s cubic-bezier(.4,0,.2,1);line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}.mdc-floating-label[dir=rtl],[dir=rtl] .mdc-floating-label{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto;-webkit-transform:translateY(-50%) scale(.75);transform:translateY(-50%) scale(.75)}.mdc-floating-label--shake{-webkit-animation:mdc-floating-label-shake-float-above-standard .25s 1;animation:mdc-floating-label-shake-float-above-standard .25s 1}@-webkit-keyframes mdc-floating-label-shake-float-above-standard{0%{-webkit-transform:translateX(0) translateY(-50%) scale(.75);transform:translateX(0) translateY(-50%) scale(.75)}33%{-webkit-animation-timing-function:cubic-bezier(.5,0,.701732,.495819);animation-timing-function:cubic-bezier(.5,0,.701732,.495819);-webkit-transform:translateX(4%) translateY(-50%) scale(.75);transform:translateX(4%) translateY(-50%) scale(.75)}66%{-webkit-animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);-webkit-transform:translateX(-4%) translateY(-50%) scale(.75);transform:translateX(-4%) translateY(-50%) scale(.75)}to{-webkit-transform:translateX(0) translateY(-50%) scale(.75);transform:translateX(0) translateY(-50%) scale(.75)}}@keyframes mdc-floating-label-shake-float-above-standard{0%{-webkit-transform:translateX(0) translateY(-50%) scale(.75);transform:translateX(0) translateY(-50%) scale(.75)}33%{-webkit-animation-timing-function:cubic-bezier(.5,0,.701732,.495819);animation-timing-function:cubic-bezier(.5,0,.701732,.495819);-webkit-transform:translateX(4%) translateY(-50%) scale(.75);transform:translateX(4%) translateY(-50%) scale(.75)}66%{-webkit-animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);-webkit-transform:translateX(-4%) translateY(-50%) scale(.75);transform:translateX(-4%) translateY(-50%) scale(.75)}to{-webkit-transform:translateX(0) translateY(-50%) scale(.75);transform:translateX(0) translateY(-50%) scale(.75)}}.mdc-select--with-leading-icon:not(.mdc-select--disabled) .mdc-select__icon{color:#000;color:var(--mdc-theme-on-surface,#000)}.mdc-select--with-leading-icon .mdc-select__icon{display:inline-block;position:absolute;bottom:16px;box-sizing:border-box;width:24px;height:24px;border:none;background-color:transparent;fill:currentColor;opacity:.54;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdc-select__icon:not([tabindex]),.mdc-select__icon[tabindex="-1"]{cursor:default;pointer-events:none}.mdc-select-helper-text{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.75rem;line-height:1.25rem;font-weight:400;letter-spacing:.0333333333em;text-decoration:inherit;text-transform:inherit;display:block;line-height:normal;margin:0;-webkit-transition:opacity .18s cubic-bezier(.4,0,.2,1);transition:opacity .18s cubic-bezier(.4,0,.2,1);opacity:0;will-change:opacity}.mdc-select-helper-text:before{display:inline-block;width:0;height:16px;content:"";vertical-align:0}.mdc-select-helper-text--persistent{-webkit-transition:none;transition:none;opacity:1;will-change:auto}.mdc-select{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0,0,0,0);will-change:transform,opacity;display:inline-flex;position:relative;box-sizing:border-box;height:56px;overflow:hidden;will-change:opacity,transform,color}.mdc-select:not(.mdc-select--disabled){background-color:#f5f5f5}.mdc-select:after,.mdc-select:before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-select:before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-select.mdc-ripple-upgraded:before{-webkit-transform:scale(1);-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-select.mdc-ripple-upgraded:after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-select.mdc-ripple-upgraded--unbounded:after{top:0;top:var(--mdc-ripple-top,0);left:0;left:var(--mdc-ripple-left,0)}.mdc-select.mdc-ripple-upgraded--foreground-activation:after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-select.mdc-ripple-upgraded--foreground-deactivation:after{-webkit-animation:mdc-ripple-fg-opacity-out .15s;animation:mdc-ripple-fg-opacity-out .15s;-webkit-transform:translate(0) scale(1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-select:after,.mdc-select:before{top:-50%;left:-50%;width:200%;height:200%}.mdc-select.mdc-ripple-upgraded:after{width:100%;width:var(--mdc-ripple-fg-size,100%);height:100%;height:var(--mdc-ripple-fg-size,100%)}.mdc-select:after,.mdc-select:before{background-color:rgba(0,0,0,.87)}.mdc-select:hover:before{opacity:.04}.mdc-select.mdc-ripple-upgraded--background-focused:before,.mdc-select:not(.mdc-ripple-upgraded):focus:before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}.mdc-select:not(.mdc-select--disabled) .mdc-select__native-control,.mdc-select:not(.mdc-select--disabled) .mdc-select__selected-text{color:rgba(0,0,0,.87)}.mdc-select:not(.mdc-select--disabled) .mdc-floating-label{color:rgba(0,0,0,.6)}.mdc-select:not(.mdc-select--disabled) .mdc-select__native-control,.mdc-select:not(.mdc-select--disabled) .mdc-select__selected-text{border-bottom-color:rgba(0,0,0,.42)}.mdc-select:not(.mdc-select--disabled)+.mdc-select-helper-text{color:rgba(0,0,0,.6)}.mdc-select,.mdc-select__native-control{border-radius:4px 4px 0 0}.mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-line-ripple{background-color:#6200ee;background-color:var(--mdc-theme-primary,#6200ee)}.mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-floating-label{color:rgba(98,0,238,.87)}.mdc-select:not(.mdc-select--disabled) .mdc-select__native-control:hover{border-bottom-color:rgba(0,0,0,.87)}.mdc-select .mdc-floating-label--float-above{-webkit-transform:translateY(-70%) scale(.75);transform:translateY(-70%) scale(.75)}.mdc-select .mdc-floating-label{left:16px;right:auto;top:21px;pointer-events:none}.mdc-select .mdc-floating-label[dir=rtl],[dir=rtl] .mdc-select .mdc-floating-label{left:auto;right:16px}.mdc-select.mdc-select--with-leading-icon .mdc-floating-label{left:48px;right:auto}.mdc-select.mdc-select--with-leading-icon .mdc-floating-label[dir=rtl],[dir=rtl] .mdc-select.mdc-select--with-leading-icon .mdc-floating-label{left:auto;right:48px}.mdc-select.mdc-select--outlined .mdc-floating-label{left:4px;right:auto;top:17px}.mdc-select.mdc-select--outlined .mdc-floating-label[dir=rtl],[dir=rtl] .mdc-select.mdc-select--outlined .mdc-floating-label{left:auto;right:4px}.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label{left:36px;right:auto}.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label[dir=rtl],[dir=rtl] .mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label{left:auto;right:36px}.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above{left:36px;right:auto}.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above[dir=rtl],[dir=rtl] .mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above{left:auto;right:36px}.mdc-select__dropdown-icon{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='7 10 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' opacity='.54' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E") no-repeat 50%;left:auto;right:8px;position:absolute;bottom:16px;width:24px;height:24px;transition:-webkit-transform .15s cubic-bezier(.4,0,.2,1);-webkit-transition:-webkit-transform .15s cubic-bezier(.4,0,.2,1);transition:transform .15s cubic-bezier(.4,0,.2,1);transition:transform .15s cubic-bezier(.4,0,.2,1),-webkit-transform .15s cubic-bezier(.4,0,.2,1);pointer-events:none}.mdc-select__dropdown-icon[dir=rtl],[dir=rtl] .mdc-select__dropdown-icon{left:8px;right:auto}.mdc-select--focused .mdc-select__dropdown-icon{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='7 10 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%236200ee' fill-rule='evenodd' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E") no-repeat 50%;-webkit-transform:rotate(180deg) translateY(-5px);transform:rotate(180deg) translateY(-5px);transition:-webkit-transform .15s cubic-bezier(.4,0,.2,1);-webkit-transition:-webkit-transform .15s cubic-bezier(.4,0,.2,1);transition:transform .15s cubic-bezier(.4,0,.2,1);transition:transform .15s cubic-bezier(.4,0,.2,1),-webkit-transform .15s cubic-bezier(.4,0,.2,1)}.mdc-select__native-control{padding-top:20px}.mdc-select.mdc-select--focused .mdc-line-ripple:after{-webkit-transform:scaleY(2);transform:scaleY(2);opacity:1}.mdc-select+.mdc-select-helper-text{margin-right:12px;margin-left:12px}.mdc-select--outlined+.mdc-select-helper-text{margin-right:16px;margin-left:16px}.mdc-select--focused+.mdc-select-helper-text:not(.mdc-select-helper-text--validation-msg){opacity:1}.mdc-select__selected-text{min-width:200px;padding-top:22px}.mdc-select__native-control,.mdc-select__selected-text{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.75rem;font-weight:400;letter-spacing:.009375em;text-decoration:inherit;text-transform:inherit;box-sizing:border-box;width:100%;height:56px;padding:20px 52px 4px 16px;border:none;border-bottom:1px solid;outline:none;background-color:transparent;color:inherit;white-space:nowrap;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mdc-select__native-control[dir=rtl],.mdc-select__selected-text[dir=rtl],[dir=rtl] .mdc-select__native-control,[dir=rtl] .mdc-select__selected-text{padding-left:52px;padding-right:16px}.mdc-select__native-control::-ms-expand,.mdc-select__selected-text::-ms-expand{display:none}.mdc-select__native-control::-ms-value,.mdc-select__selected-text::-ms-value{background-color:transparent;color:inherit}@-moz-document url-prefix(""){.mdc-select__native-control,.mdc-select__selected-text{text-indent:-2px}}.mdc-select--outlined{border:none;overflow:visible}.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.24)}.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.87)}.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:2px;border-color:#6200ee;border-color:var(--mdc-theme-primary,#6200ee)}.mdc-select--outlined .mdc-floating-label--shake{-webkit-animation:mdc-floating-label-shake-float-above-text-field-outlined .25s 1;animation:mdc-floating-label-shake-float-above-text-field-outlined .25s 1}.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-radius:4px 0 0 4px}.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl],.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing,[dir=rtl] .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-radius:0 4px 4px 0}.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl],[dir=rtl] .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-radius:4px 0 0 4px}.mdc-select--outlined .mdc-select__native-control{border-radius:4px}.mdc-select--outlined:after,.mdc-select--outlined:before{content:none}.mdc-select--outlined:not(.mdc-select--disabled){background-color:transparent}.mdc-select--outlined .mdc-floating-label--float-above{-webkit-transform:translateY(-144%) scale(1);transform:translateY(-144%) scale(1);font-size:.75rem}.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{-webkit-transform:translateY(-130%) scale(.75);transform:translateY(-130%) scale(.75);font-size:1rem}.mdc-select--outlined .mdc-select__native-control,.mdc-select--outlined .mdc-select__selected-text{display:flex;padding:12px 52px 12px 16px;border:none;background-color:transparent;z-index:1}.mdc-select--outlined .mdc-select__native-control[dir=rtl],.mdc-select--outlined .mdc-select__selected-text[dir=rtl],[dir=rtl] .mdc-select--outlined .mdc-select__native-control,[dir=rtl] .mdc-select--outlined .mdc-select__selected-text{padding-left:52px;padding-right:16px}.mdc-select--outlined .mdc-select__selected-text{padding-top:14px}.mdc-select--outlined .mdc-select__icon{z-index:2}.mdc-select--outlined .mdc-floating-label{line-height:1.15rem;pointer-events:auto}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-floating-label{color:#b00020;color:var(--mdc-theme-error,#b00020)}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__native-control,.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__selected-text{border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error,#b00020)}.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-line-ripple{background-color:#b00020;background-color:var(--mdc-theme-error,#b00020)}.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-floating-label{color:#b00020}.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--invalid+.mdc-select-helper-text--validation-msg{color:#b00020;color:var(--mdc-theme-error,#b00020)}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__native-control:hover{border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error,#b00020)}.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#b00020;border-color:var(--mdc-theme-error,#b00020)}.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:2px;border-color:#b00020;border-color:var(--mdc-theme-error,#b00020)}.mdc-select--invalid .mdc-select__dropdown-icon{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='7 10 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23b00020' fill-rule='evenodd' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E") no-repeat 50%}.mdc-select--invalid+.mdc-select-helper-text--validation-msg{opacity:1}.mdc-select--required .mdc-floating-label:after{content:"*"}.mdc-select--disabled{background-color:#fafafa;cursor:default;pointer-events:none}.mdc-select--disabled .mdc-floating-label{color:rgba(0,0,0,.37)}.mdc-select--disabled .mdc-select__dropdown-icon{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='7 10 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' opacity='.37' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E") no-repeat 50%}.mdc-select--disabled .mdc-line-ripple{display:none}.mdc-select--disabled .mdc-select__icon{color:rgba(0,0,0,.37)}.mdc-select--disabled .mdc-select__native-control,.mdc-select--disabled .mdc-select__selected-text{color:rgba(0,0,0,.37);border-bottom-style:dotted}.mdc-select--disabled .mdc-select__selected-text{pointer-events:none}.mdc-select--disabled.mdc-select--outlined{background-color:transparent}.mdc-select--disabled.mdc-select--outlined .mdc-select__native-control,.mdc-select--disabled.mdc-select--outlined .mdc-select__selected-text{border-bottom-style:none}.mdc-select--disabled.mdc-select--outlined .mdc-notched-outline__leading,.mdc-select--disabled.mdc-select--outlined .mdc-notched-outline__notch,.mdc-select--disabled.mdc-select--outlined .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.16)}.mdc-select--with-leading-icon .mdc-select__icon{left:16px;right:auto}.mdc-select--with-leading-icon .mdc-select__icon[dir=rtl],[dir=rtl] .mdc-select--with-leading-icon .mdc-select__icon{left:auto;right:16px}.mdc-select--with-leading-icon .mdc-select__native-control,.mdc-select--with-leading-icon .mdc-select__selected-text{padding-left:48px;padding-right:32px}.mdc-select--with-leading-icon .mdc-select__native-control[dir=rtl],.mdc-select--with-leading-icon .mdc-select__selected-text[dir=rtl],[dir=rtl] .mdc-select--with-leading-icon .mdc-select__native-control,[dir=rtl] .mdc-select--with-leading-icon .mdc-select__selected-text{padding-left:32px;padding-right:48px}.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above{-webkit-transform:translateY(-144%) translateX(-32px) scale(1);transform:translateY(-144%) translateX(-32px) scale(1)}.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above[dir=rtl],[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above{-webkit-transform:translateY(-144%) translateX(32px) scale(1);transform:translateY(-144%) translateX(32px) scale(1)}.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{-webkit-transform:translateY(-130%) translateX(-32px) scale(.75);transform:translateY(-130%) translateX(-32px) scale(.75)}.mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{-webkit-transform:translateY(-130%) translateX(32px) scale(.75);transform:translateY(-130%) translateX(32px) scale(.75)}.mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--shake{-webkit-animation:mdc-floating-label-shake-float-above-select-outlined-leading-icon .25s 1;animation:mdc-floating-label-shake-float-above-select-outlined-leading-icon .25s 1}.mdc-select--with-leading-icon.mdc-select--outlined[dir=rtl] .mdc-floating-label--shake,[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--shake{-webkit-animation:mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl .25s 1;animation:mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl .25s 1}.mdc-select--with-leading-icon.mdc-select__menu .mdc-list-item__text,.mdc-select--with-leading-icon.mdc-select__menu .mdc-list-item__text[dir=rtl],[dir=rtl] .mdc-select--with-leading-icon.mdc-select__menu .mdc-list-item__text{padding-left:32px;padding-right:32px}.mdc-select__menu .mdc-list .mdc-list-item--selected{color:#000;color:var(--mdc-theme-on-surface,#000)}.mdc-select__menu .mdc-list .mdc-list-item--selected:after,.mdc-select__menu .mdc-list .mdc-list-item--selected:before{background-color:#000}@supports not (-ms-ime-align:auto){.mdc-select__menu .mdc-list .mdc-list-item--selected:after,.mdc-select__menu .mdc-list .mdc-list-item--selected:before{background-color:#000;background-color:var(--mdc-theme-on-surface,#000)}}.mdc-select__menu .mdc-list .mdc-list-item--selected:hover:before{opacity:.04}.mdc-select__menu .mdc-list .mdc-list-item--selected.mdc-ripple-upgraded--background-focused:before,.mdc-select__menu .mdc-list .mdc-list-item--selected:not(.mdc-ripple-upgraded):focus:before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}.mdc-select__menu .mdc-list .mdc-list-item--selected:not(.mdc-ripple-upgraded):after{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mdc-select__menu .mdc-list .mdc-list-item--selected:not(.mdc-ripple-upgraded):active:after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}.mdc-select__menu .mdc-list .mdc-list-item--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:0.12}@-webkit-keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon{0%{-webkit-transform:translateX(-32px) translateY(-130%) scale(.75);transform:translateX(-32px) translateY(-130%) scale(.75)}33%{-webkit-animation-timing-function:cubic-bezier(.5,0,.701732,.495819);animation-timing-function:cubic-bezier(.5,0,.701732,.495819);-webkit-transform:translateX(calc(4% - 32px)) translateY(-130%) scale(.75);transform:translateX(calc(4% - 32px)) translateY(-130%) scale(.75)}66%{-webkit-animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);-webkit-transform:translateX(calc(-4% - 32px)) translateY(-130%) scale(.75);transform:translateX(calc(-4% - 32px)) translateY(-130%) scale(.75)}to{-webkit-transform:translateX(-32px) translateY(-130%) scale(.75);transform:translateX(-32px) translateY(-130%) scale(.75)}}@keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon{0%{-webkit-transform:translateX(-32px) translateY(-130%) scale(.75);transform:translateX(-32px) translateY(-130%) scale(.75)}33%{-webkit-animation-timing-function:cubic-bezier(.5,0,.701732,.495819);animation-timing-function:cubic-bezier(.5,0,.701732,.495819);-webkit-transform:translateX(calc(4% - 32px)) translateY(-130%) scale(.75);transform:translateX(calc(4% - 32px)) translateY(-130%) scale(.75)}66%{-webkit-animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);-webkit-transform:translateX(calc(-4% - 32px)) translateY(-130%) scale(.75);transform:translateX(calc(-4% - 32px)) translateY(-130%) scale(.75)}to{-webkit-transform:translateX(-32px) translateY(-130%) scale(.75);transform:translateX(-32px) translateY(-130%) scale(.75)}}@-webkit-keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl{0%{-webkit-transform:translateX(32px) translateY(-130%) scale(.75);transform:translateX(32px) translateY(-130%) scale(.75)}33%{-webkit-animation-timing-function:cubic-bezier(.5,0,.701732,.495819);animation-timing-function:cubic-bezier(.5,0,.701732,.495819);-webkit-transform:translateX(calc(4% - -32px)) translateY(-130%) scale(.75);transform:translateX(calc(4% - -32px)) translateY(-130%) scale(.75)}66%{-webkit-animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);-webkit-transform:translateX(calc(-4% - -32px)) translateY(-130%) scale(.75);transform:translateX(calc(-4% - -32px)) translateY(-130%) scale(.75)}to{-webkit-transform:translateX(32px) translateY(-130%) scale(.75);transform:translateX(32px) translateY(-130%) scale(.75)}}@keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl{0%{-webkit-transform:translateX(32px) translateY(-130%) scale(.75);transform:translateX(32px) translateY(-130%) scale(.75)}33%{-webkit-animation-timing-function:cubic-bezier(.5,0,.701732,.495819);animation-timing-function:cubic-bezier(.5,0,.701732,.495819);-webkit-transform:translateX(calc(4% - -32px)) translateY(-130%) scale(.75);transform:translateX(calc(4% - -32px)) translateY(-130%) scale(.75)}66%{-webkit-animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);-webkit-transform:translateX(calc(-4% - -32px)) translateY(-130%) scale(.75);transform:translateX(calc(-4% - -32px)) translateY(-130%) scale(.75)}to{-webkit-transform:translateX(32px) translateY(-130%) scale(.75);transform:translateX(32px) translateY(-130%) scale(.75)}} +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/.mdc-button{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:2.25rem;font-weight:500;letter-spacing:.0892857143em;text-decoration:none;text-transform:uppercase;padding:0 8px;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;height:36px;border:none;outline:none;line-height:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none;overflow:hidden;vertical-align:middle;border-radius:4px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{background-color:transparent;color:rgba(0,0,0,.37);cursor:default;pointer-events:none}.mdc-button.mdc-button--dense{border-radius:4px}.mdc-button:not(:disabled){background-color:transparent}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;width:18px;height:18px;font-size:18px;vertical-align:top}.mdc-button .mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button .mdc-button__icon{margin-left:8px;margin-right:0}.mdc-button:not(:disabled){color:#6200ee;color:var(--mdc-theme-primary,#6200ee)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}.mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button__label+.mdc-button__icon{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--outlined .mdc-button__icon,.mdc-button--raised .mdc-button__icon,.mdc-button--unelevated .mdc-button__icon{margin-left:-4px;margin-right:8px}.mdc-button--outlined .mdc-button__icon[dir=rtl],.mdc-button--outlined .mdc-button__label+.mdc-button__icon,.mdc-button--raised .mdc-button__icon[dir=rtl],.mdc-button--raised .mdc-button__label+.mdc-button__icon,.mdc-button--unelevated .mdc-button__icon[dir=rtl],.mdc-button--unelevated .mdc-button__label+.mdc-button__icon,[dir=rtl] .mdc-button--outlined .mdc-button__icon,[dir=rtl] .mdc-button--raised .mdc-button__icon,[dir=rtl] .mdc-button--unelevated .mdc-button__icon{margin-left:8px;margin-right:-4px}.mdc-button--outlined .mdc-button__label+.mdc-button__icon[dir=rtl],.mdc-button--raised .mdc-button__label+.mdc-button__icon[dir=rtl],.mdc-button--unelevated .mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--outlined .mdc-button__label+.mdc-button__icon,[dir=rtl] .mdc-button--raised .mdc-button__label+.mdc-button__icon,[dir=rtl] .mdc-button--unelevated .mdc-button__label+.mdc-button__icon{margin-left:-4px;margin-right:8px}.mdc-button--raised,.mdc-button--unelevated{padding:0 16px}.mdc-button--raised:disabled,.mdc-button--unelevated:disabled{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.37)}.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:#6200ee}@supports not (-ms-ime-align:auto){.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:#6200ee;background-color:var(--mdc-theme-primary,#6200ee)}}.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){color:#fff;color:var(--mdc-theme-on-primary,#fff)}.mdc-button--raised{box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);-webkit-transition:box-shadow .28s cubic-bezier(.4,0,.2,1);transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.mdc-button--raised:focus,.mdc-button--raised:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mdc-button--raised:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdc-button--raised:disabled{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.mdc-button--outlined{border-style:solid;padding:0 14px;border-width:2px}.mdc-button--outlined:disabled{border-color:rgba(0,0,0,.37)}.mdc-button--outlined:not(:disabled){border-color:#6200ee;border-color:var(--mdc-theme-primary,#6200ee)}.mdc-button--dense{height:32px;font-size:.8125rem}.mdc-button{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0,0,0,0);will-change:transform,opacity}.mdc-button:after,.mdc-button:before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-button:before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-button.mdc-ripple-upgraded:before{-webkit-transform:scale(1);-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-button.mdc-ripple-upgraded:after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-button.mdc-ripple-upgraded--unbounded:after{top:0;top:var(--mdc-ripple-top,0);left:0;left:var(--mdc-ripple-left,0)}.mdc-button.mdc-ripple-upgraded--foreground-activation:after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-button.mdc-ripple-upgraded--foreground-deactivation:after{-webkit-animation:mdc-ripple-fg-opacity-out .15s;animation:mdc-ripple-fg-opacity-out .15s;-webkit-transform:translate(0) scale(1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-button:after,.mdc-button:before{top:-50%;left:-50%;width:200%;height:200%}.mdc-button.mdc-ripple-upgraded:after{width:100%;width:var(--mdc-ripple-fg-size,100%);height:100%;height:var(--mdc-ripple-fg-size,100%)}.mdc-button:after,.mdc-button:before{background-color:#6200ee}@supports not (-ms-ime-align:auto){.mdc-button:after,.mdc-button:before{background-color:#6200ee;background-color:var(--mdc-theme-primary,#6200ee)}}.mdc-button:hover:before{opacity:.04}.mdc-button.mdc-ripple-upgraded--background-focused:before,.mdc-button:not(.mdc-ripple-upgraded):focus:before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}.mdc-button:not(.mdc-ripple-upgraded):after{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mdc-button:not(.mdc-ripple-upgraded):active:after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}.mdc-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:0.12}.mdc-button--raised:after,.mdc-button--raised:before,.mdc-button--unelevated:after,.mdc-button--unelevated:before{background-color:#fff}@supports not (-ms-ime-align:auto){.mdc-button--raised:after,.mdc-button--raised:before,.mdc-button--unelevated:after,.mdc-button--unelevated:before{background-color:#fff;background-color:var(--mdc-theme-on-primary,#fff)}}.mdc-button--raised:hover:before,.mdc-button--unelevated:hover:before{opacity:.08}.mdc-button--raised.mdc-ripple-upgraded--background-focused:before,.mdc-button--raised:not(.mdc-ripple-upgraded):focus:before,.mdc-button--unelevated.mdc-ripple-upgraded--background-focused:before,.mdc-button--unelevated:not(.mdc-ripple-upgraded):focus:before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.24}.mdc-button--raised:not(.mdc-ripple-upgraded):after,.mdc-button--unelevated:not(.mdc-ripple-upgraded):after{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mdc-button--raised:not(.mdc-ripple-upgraded):active:after,.mdc-button--unelevated:not(.mdc-ripple-upgraded):active:after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.24}.mdc-button--raised.mdc-ripple-upgraded,.mdc-button--unelevated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:0.24} +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/.mdc-list{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.75rem;font-weight:400;letter-spacing:.009375em;text-decoration:inherit;text-transform:inherit;line-height:1.5rem;margin:0;padding:8px 0;list-style-type:none;color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.mdc-list-item__secondary-text{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.mdc-list-item__graphic{background-color:transparent;color:rgba(0,0,0,.38);color:var(--mdc-theme-text-icon-on-background,rgba(0,0,0,.38))}.mdc-list-item__meta{color:rgba(0,0,0,.38);color:var(--mdc-theme-text-hint-on-background,rgba(0,0,0,.38))}.mdc-list-group__subheader{color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.mdc-list--dense{padding-top:4px;padding-bottom:4px;font-size:.812rem}.mdc-list-item{display:flex;position:relative;align-items:center;justify-content:flex-start;height:48px;padding:0 16px;overflow:hidden}.mdc-list-item:focus{outline:none}.mdc-list-item--activated,.mdc-list-item--activated .mdc-list-item__graphic,.mdc-list-item--selected,.mdc-list-item--selected .mdc-list-item__graphic{color:#6200ee;color:var(--mdc-theme-primary,#6200ee)}.mdc-list-item--disabled{color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.38))}.mdc-list-item__graphic{margin-left:0;margin-right:32px;width:24px;height:24px;flex-shrink:0;align-items:center;justify-content:center;fill:currentColor}.mdc-list-item[dir=rtl] .mdc-list-item__graphic,[dir=rtl] .mdc-list-item .mdc-list-item__graphic{margin-left:32px;margin-right:0}.mdc-list .mdc-list-item__graphic{display:inline-flex}.mdc-list-item__meta{margin-left:auto;margin-right:0}.mdc-list-item[dir=rtl] .mdc-list-item__meta,[dir=rtl] .mdc-list-item .mdc-list-item__meta{margin-left:0;margin-right:auto}.mdc-list-item__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item__text[for]{pointer-events:none}.mdc-list-item__primary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-top:0;line-height:normal;margin-bottom:-20px;display:block}.mdc-list-item__primary-text:before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item__primary-text:after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list--dense .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list--dense .mdc-list-item__primary-text:before{display:inline-block;width:0;height:24px;content:"";vertical-align:0}.mdc-list--dense .mdc-list-item__primary-text:after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item__secondary-text{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:1.25rem;font-weight:400;letter-spacing:.0178571429em;text-decoration:inherit;text-transform:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-top:0;line-height:normal;display:block}.mdc-list-item__secondary-text:before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list--dense .mdc-list-item__secondary-text{display:block;margin-top:0;line-height:normal;font-size:inherit}.mdc-list--dense .mdc-list-item__secondary-text:before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list--dense .mdc-list-item{height:40px}.mdc-list--dense .mdc-list-item__graphic{margin-left:0;margin-right:36px;width:20px;height:20px}.mdc-list-item[dir=rtl] .mdc-list--dense .mdc-list-item__graphic,[dir=rtl] .mdc-list-item .mdc-list--dense .mdc-list-item__graphic{margin-left:36px;margin-right:0}.mdc-list--avatar-list .mdc-list-item{height:56px}.mdc-list--avatar-list .mdc-list-item__graphic{margin-left:0;margin-right:16px;width:40px;height:40px;border-radius:50%}.mdc-list-item[dir=rtl] .mdc-list--avatar-list .mdc-list-item__graphic,[dir=rtl] .mdc-list-item .mdc-list--avatar-list .mdc-list-item__graphic{margin-left:16px;margin-right:0}.mdc-list--two-line .mdc-list-item__text{align-self:flex-start}.mdc-list--two-line .mdc-list-item{height:72px}.mdc-list--avatar-list.mdc-list--dense .mdc-list-item,.mdc-list--two-line.mdc-list--dense .mdc-list-item{height:60px}.mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic{margin-left:0;margin-right:20px;width:36px;height:36px}.mdc-list-item[dir=rtl] .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic,[dir=rtl] .mdc-list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic{margin-left:20px;margin-right:0}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item{cursor:pointer}a.mdc-list-item{color:inherit;text-decoration:none}.mdc-list-divider{height:0;margin:0;border:none;border-bottom:1px solid;border-bottom-color:rgba(0,0,0,.12)}.mdc-list-divider--padded{margin:0 16px}.mdc-list-divider--inset{margin-left:72px;margin-right:0;width:calc(100% - 72px)}.mdc-list-group[dir=rtl] .mdc-list-divider--inset,[dir=rtl] .mdc-list-group .mdc-list-divider--inset{margin-left:0;margin-right:72px}.mdc-list-divider--inset.mdc-list-divider--padded{width:calc(100% - 88px)}.mdc-list-group .mdc-list{padding:0}.mdc-list-group__subheader{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.75rem;font-weight:400;letter-spacing:.009375em;text-decoration:inherit;text-transform:inherit;margin:.75rem 16px}@-webkit-keyframes mdc-ripple-fg-radius-in{0%{-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transform:translate(0) scale(1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(0) scale(1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{0%{-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transform:translate(0) scale(1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(0) scale(1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{0%{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:0;opacity:var(--mdc-ripple-fg-opacity,0)}}@keyframes mdc-ripple-fg-opacity-in{0%{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:0;opacity:var(--mdc-ripple-fg-opacity,0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{0%{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0;opacity:var(--mdc-ripple-fg-opacity,0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{0%{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0;opacity:var(--mdc-ripple-fg-opacity,0)}to{opacity:0}}.mdc-ripple-surface--test-edge-var-bug{--mdc-ripple-surface-test-edge-var:1px solid #000;visibility:hidden}.mdc-ripple-surface--test-edge-var-bug:before{border:var(--mdc-ripple-surface-test-edge-var)}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0,0,0,0);will-change:transform,opacity}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:after,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded:before{-webkit-transform:scale(1);-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale,1))}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded:after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--unbounded:after{top:0;top:var(--mdc-ripple-top,0);left:0;left:var(--mdc-ripple-left,0)}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--foreground-activation:after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--foreground-deactivation:after{-webkit-animation:mdc-ripple-fg-opacity-out .15s;animation:mdc-ripple-fg-opacity-out .15s;-webkit-transform:translate(0) scale(1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:after,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:before{top:-50%;left:-50%;width:200%;height:200%}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded:after{width:100%;width:var(--mdc-ripple-fg-size,100%);height:100%;height:var(--mdc-ripple-fg-size,100%)}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:after,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:before{background-color:#000}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:hover:before{opacity:.04}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--background-focused:before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded):focus:before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded):after{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded):active:after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:0.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:before{opacity:.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:after,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:before{background-color:#6200ee}@supports not (-ms-ime-align:auto){:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:after,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:before{background-color:#6200ee;background-color:var(--mdc-theme-primary,#6200ee)}}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:hover:before{opacity:.16}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated.mdc-ripple-upgraded--background-focused:before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded):focus:before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.24}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded):after{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded):active:after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.24}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:0.24}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:before{opacity:.08}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:after,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:before{background-color:#6200ee}@supports not (-ms-ime-align:auto){:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:after,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:before{background-color:#6200ee;background-color:var(--mdc-theme-primary,#6200ee)}}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:hover:before{opacity:.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected.mdc-ripple-upgraded--background-focused:before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded):focus:before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.2}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded):after{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded):active:after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.2}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:0.2}.rmwc-icon--image{min-width:1em;min-height:1em;background-repeat:no-repeat;font-size:1.5rem;background-size:1em;background-position:50%}.rmwc-icon--size-xsmall{font-size:1.125rem;width:1em;height:1em}.rmwc-icon--size-small{font-size:1.25rem;width:1em;height:1em}.rmwc-icon--size-medium{font-size:1.5rem;width:1em;height:1em}.rmwc-icon--size-large{font-size:2.25rem;width:1em;height:1em}.rmwc-icon--size-xlarge{font-size:3rem;width:1em;height:1em} + +/*! + Material Components for the Web + Copyright (c) 2019 Google Inc. + License: MIT +*/.mdc-drawer{background-color:#fff;border-radius:0 0 0 0;z-index:6;width:256px;display:flex;flex-direction:column;flex-shrink:0;box-sizing:border-box;height:100%;transition-property:-webkit-transform;-webkit-transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);border-right:1px solid;border-color:rgba(0,0,0,.12);overflow:hidden}.mdc-drawer .mdc-drawer__title{color:rgba(0,0,0,.87)}.mdc-drawer .mdc-drawer__subtitle,.mdc-drawer .mdc-list-group__subheader,.mdc-drawer .mdc-list-item__graphic{color:rgba(0,0,0,.6)}.mdc-drawer .mdc-list-item{color:rgba(0,0,0,.87)}.mdc-drawer .mdc-list-item--activated .mdc-list-item__graphic{color:#6200ee}.mdc-drawer .mdc-list-item--activated{color:rgba(98,0,238,.87)}.mdc-drawer[dir=rtl],[dir=rtl] .mdc-drawer{border-radius:0 0 0 0}.mdc-drawer .mdc-list-item{border-radius:4px}.mdc-drawer.mdc-drawer--open:not(.mdc-drawer--closing)+.mdc-drawer-app-content{margin-left:256px;margin-right:0}.mdc-drawer.mdc-drawer--open:not(.mdc-drawer--closing)+.mdc-drawer-app-content[dir=rtl],[dir=rtl] .mdc-drawer.mdc-drawer--open:not(.mdc-drawer--closing)+.mdc-drawer-app-content{margin-left:0;margin-right:256px}.mdc-drawer[dir=rtl],[dir=rtl] .mdc-drawer{border-right-width:0;border-left-width:1px;border-right-style:none;border-left-style:solid}.mdc-drawer .mdc-list-item{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:1.375rem;font-weight:500;letter-spacing:.0071428571em;text-decoration:inherit;text-transform:inherit;height:40px;margin:8px;padding:0 8px}.mdc-drawer .mdc-list-item:first-child{margin-top:2px}.mdc-drawer .mdc-list-item:last-child{margin-bottom:0}.mdc-drawer .mdc-list-group__subheader{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:1.25rem;font-weight:400;letter-spacing:.0178571429em;text-decoration:inherit;text-transform:inherit;display:block;line-height:normal;margin:0;padding:0 16px}.mdc-drawer .mdc-list-group__subheader:before{display:inline-block;width:0;height:24px;content:"";vertical-align:0}.mdc-drawer .mdc-list-divider{margin:3px 0 4px}.mdc-drawer .mdc-list-item__graphic,.mdc-drawer .mdc-list-item__text{pointer-events:none}.mdc-drawer--animate{-webkit-transform:translateX(-100%);transform:translateX(-100%)}.mdc-drawer--animate[dir=rtl],[dir=rtl] .mdc-drawer--animate{-webkit-transform:translateX(100%);transform:translateX(100%)}.mdc-drawer--opening{-webkit-transition-duration:.25s;transition-duration:.25s}.mdc-drawer--opening,.mdc-drawer--opening[dir=rtl],[dir=rtl] .mdc-drawer--opening{-webkit-transform:translateX(0);transform:translateX(0)}.mdc-drawer--closing{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transition-duration:.2s;transition-duration:.2s}.mdc-drawer--closing[dir=rtl],[dir=rtl] .mdc-drawer--closing{-webkit-transform:translateX(100%);transform:translateX(100%)}.mdc-drawer__header{flex-shrink:0;box-sizing:border-box;min-height:64px;padding:0 16px 4px}.mdc-drawer__title{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1.25rem;line-height:2rem;font-weight:500;letter-spacing:.0125em;text-decoration:inherit;text-transform:inherit;display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-drawer__title:before{display:inline-block;width:0;height:36px;content:"";vertical-align:0}.mdc-drawer__title:after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-drawer__subtitle{font-family:Roboto,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:1.25rem;font-weight:400;letter-spacing:.0178571429em;text-decoration:inherit;text-transform:inherit;display:block;margin-top:0;line-height:normal;margin-bottom:0}.mdc-drawer__subtitle:before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-drawer__content{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.mdc-drawer--dismissible{left:0;right:auto;display:none;position:absolute}.mdc-drawer--dismissible[dir=rtl],[dir=rtl] .mdc-drawer--dismissible{left:auto;right:0}.mdc-drawer--dismissible.mdc-drawer--open{display:flex}.mdc-drawer-app-content{position:relative}.mdc-drawer-app-content,.mdc-drawer-app-content[dir=rtl],[dir=rtl] .mdc-drawer-app-content{margin-left:0;margin-right:0}.mdc-drawer--modal{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);left:0;right:auto;display:none;position:fixed}.mdc-drawer--modal+.mdc-drawer-scrim{background-color:rgba(0,0,0,.32)}.mdc-drawer--modal[dir=rtl],[dir=rtl] .mdc-drawer--modal{left:auto;right:0}.mdc-drawer--modal.mdc-drawer--open{display:flex}.mdc-drawer-scrim{display:none;position:fixed;top:0;left:0;width:100%;height:100%;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);z-index:5}.mdc-drawer--open+.mdc-drawer-scrim{display:block}.mdc-drawer--animate+.mdc-drawer-scrim{opacity:0}.mdc-drawer--opening+.mdc-drawer-scrim{-webkit-transition-duration:.25s;transition-duration:.25s;opacity:1}.mdc-drawer--closing+.mdc-drawer-scrim{-webkit-transition-duration:.2s;transition-duration:.2s;opacity:0} +/*# sourceMappingURL=2.6b51f286.chunk.css.map */ \ No newline at end of file diff --git a/ui/web/static/css/2.6b51f286.chunk.css.map b/ui/web/static/css/2.6b51f286.chunk.css.map new file mode 100644 index 000000000..359d26dcc --- /dev/null +++ b/ui/web/static/css/2.6b51f286.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["mdc.card.css","webpack:///packages/mdc-card/mdc-card.scss","webpack:///packages/material-components-web/node_modules/@material/shape/_mixins.scss","webpack:///packages/material-components-web/node_modules/@material/theme/_mixins.scss","webpack:///packages/material-components-web/node_modules/@material/elevation/_mixins.scss","webpack:///packages/material-components-web/node_modules/@material/rtl/_mixins.scss","webpack:///packages/material-components-web/node_modules/@material/ripple/_mixins.scss","mdc.tab-scroller.css","webpack:///packages/mdc-tab-scroller/mdc-tab-scroller.scss","webpack:///packages/material-components-web/node_modules/@material/tab/_mixins.scss","mdc.tab-indicator.css","webpack:///packages/mdc-tab-indicator/mdc-tab-indicator.scss","webpack:///packages/mdc-tab-indicator/_mixins.scss","mdc.tab-bar.css","webpack:///packages/mdc-tab-bar/mdc-tab-bar.scss","webpack:///packages/mdc-tab-bar/_mixins.scss","mdc.tab.css","webpack:///stdin","webpack:///packages/material-components-web/node_modules/@material/tab-indicator/_mixins.scss","webpack:///packages/material-components-web/node_modules/@material/typography/_mixins.scss","webpack:///packages/mdc-tab/_mixins.scss","mdc.typography.css","webpack:///packages/mdc-typography/mdc-typography.scss","mdc.select.css","webpack:///packages/mdc-select/mdc-select.scss","webpack:///packages/material-components-web/node_modules/@material/line-ripple/mdc-line-ripple.scss","webpack:///packages/material-components-web/node_modules/@material/notched-outline/mdc-notched-outline.scss","webpack:///packages/material-components-web/node_modules/@material/floating-label/mdc-floating-label.scss","webpack:///packages/material-components-web/node_modules/@material/floating-label/_mixins.scss","webpack:///packages/mdc-select/icon/_mixins.scss","webpack:///packages/mdc-select/icon/mdc-select-icon.scss","webpack:///packages/mdc-select/helper-text/mdc-select-helper-text.scss","webpack:///packages/mdc-select/_mixins.scss","webpack:///packages/mdc-select/helper-text/_mixins.scss","webpack:///packages/material-components-web/node_modules/@material/notched-outline/_mixins.scss","mdc.button.css","webpack:///packages/mdc-button/mdc-button.scss","mdc.list.css","webpack:///packages/mdc-list/mdc-list.scss","webpack:///packages/material-components-web/node_modules/@material/ripple/_keyframes.scss","icon.css","mdc.drawer.css","webpack:///packages/mdc-drawer/mdc-drawer.scss","webpack:///packages/mdc-drawer/_mixins.scss","webpack:///packages/material-components-web/node_modules/@material/list/_mixins.scss","webpack:///packages/mdc-drawer/dismissible/mdc-drawer-dismissible.scss","webpack:///packages/mdc-drawer/modal/mdc-drawer-modal.scss"],"names":[],"mappings":"AAAA;;;;CAIC,CC4CC,UCVE,iBAAA,CCmGI,qBAAA,CAAA,8CAAA,CC/DJ,gGAAA,CH6PF,YAAA,CACA,qBAAA,CACA,qBD3TF,CC4CE,oBGgBE,iFAAA,CHqOA,wBD1RJ,CC8CE,iBAEI,iBAAA,CACA,qBAAA,CACA,2BAAA,CACA,uBAAA,CACA,qBD5CN,CC+CI,wBAEI,aAAA,CACA,UD9CR,CCmDE,6BAEI,8BAAA,CACA,+BDjDN,CCqDE,4BAEI,iCAAA,CACA,kCDnDN,CC+QE,gCAGI,eD9QN,CC2QE,8BAGI,iBD1QN,CCuDE,yBAEI,iBAAA,CACA,KAAA,CACA,OAAA,CACA,QAAA,CACA,MAAA,CACA,qBDrDN,CC6DE,0BA8MA,YAAA,CACA,qBAAA,CACA,qBAAA,CA5MI,iBAAA,CACA,YAAA,CACA,aAAA,CACA,oBAAA,CACA,cAAA,CACA,eD1DN,CC8DE,sCAEI,8BAAA,CACA,+BD5DN,CCgEE,qCAEI,iCAAA,CACA,kCD9DN,CCsEE,mBAqLA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,qBAAA,CApLI,eAAA,CACA,WDlEN,CCsEE,+BAEI,SDpEN,CCwEE,kDAsKA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,qBDzOF,CCuEE,wBE1FI,oBAAA,CFgGA,WAAA,CACA,wBDxEN,CC4EE,kDI0EA,gBAAA,CAEA,cLjJF,CKvCI,uHA4LA,aAAA,CAEA,iBLjJJ,CCyEE,kBA0IA,mBAAA,CACA,kBAAA,CACA,kBAAA,CACA,qBAAA,CAzII,sBAAA,CACA,cAAA,CACA,wBAAA,CAAA,qBAAA,CAAA,oBAAA,CAAA,gBDlEN,CCqEI,wBAEI,YDpER,CC6EE,0BI4CA,aAAA,CAEA,gBAAA,CJ1CI,aDzEN,CKrEI,uEA4LA,eAAA,CAEA,cLnHJ,CK3EI,kIAsLF,aAAA,CAEA,cLjGF,CCiEE,yDAEI,6BAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,QAAA,CACA,gBAAA,CAEA,eD/DN,CKlGI,qIJuKI,gBDjER,CC0EE,wBAII,aAAA,CAGA,YD5EN,CCgFE,uCEpLI,oBHwGN,CC0FE,0BK7KE,sBAAA,CACA,mBAAA,CACA,kBAAA,CACA,uBAAA,CACA,+BAAA,CACA,iCAAA,CAEA,yCAAA,CACA,6BN+JJ,CM5JE,iEAGI,iBAAA,CACA,iBAAA,CACA,SAAA,CACA,mBAAA,CACA,UN4JN,CMxJE,iCAGI,mEAAA,CAAA,2DAAA,CAMA,SNmJN,CM7IE,qDAEI,0BAAA,CAAA,qDAAA,CAAA,kBAAA,CAAA,6CN+IN,CM3IE,oDAEI,KAAA,CAEA,MAAA,CACA,0BAAA,CAAA,kBAAA,CACA,sCAAA,CAAA,8BN8IN,CM1IE,+DAEI,KAAA,CAAA,2BAAA,CAEA,MAAA,CAAA,6BN2IN,CMvIE,2EAEI,+FAAA,CAAA,uFNyIN,CMnIE,6EAEI,gDAAA,CAAA,wCAAA,CAKA,uCAAA,CAAA,qGAAA,CAAA,+BAAA,CAAA,6FNkIN,CMkBE,iEAGI,QAAA,CAEA,SAAA,CACA,UAAA,CACA,WNlBN,CMsBE,oDAEI,UAAA,CAAA,oCAAA,CACA,WAAA,CAAA,qCNrBN,CMrIE,iEHzGI,qBHiPN,CMtHE,uCAGI,WNsHN,CMjGE,0IAII,gCAAA,CAAA,wBAAA,CAIA,WN6FN,CMhFI,0DAEI,sCAAA,CAAA,8BNiFR,CM7EI,iEAEI,gCAAA,CAAA,wBAAA,CAKA,WN0ER,CMrEE,8CAEI,4BNsEN;AOtVA;;;;CAIC,CCuBD,kBACE,iBDCF,CCGA,wBACE,iBAAA,CACA,WAAA,CACA,WAAA,CACA,YAAA,CACA,iBDAF,CCGA,+BACE,gCAAA,CACA,YAAA,CACA,iBDAF,CCKE,6FACE,YDDJ,CCMA,uCACE,iBDHF,CCMA,kCCQE,iBAAA,CDLA,YAAA,CACA,aAAA,CACA,sBAAA,CAAA,cAAA,CACA,qBDHF,CCMA,iEACE,0BDHF,CCMA,+DACE,wBDHF,CCMA,kEACE,sBDHF,CCMA,4DACE,+BDHF,CCMA,+DACE,yDAAA,CAAA,iEAAA,CAAA,iDAAA,CAAA,gGDDF;AGnFA;;;;CAIC,CCwBD,mBAME,YAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CACA,mBAAA,CACA,SDiBF,CE5BE,0DT2GM,wBAAA,CAAA,iDAAA,CSpGJ,UF0BJ,CEdE,qDTwFM,aAAA,CAAA,wCAAA,CSjFJ,WAAA,CACA,cFcJ,CC3BA,4BACE,6BAAA,CAAA,qBAAA,CACA,SDmCF,CChCA,uCACE,mBAAA,CACA,UDmCF,CChCA,kCACE,iBAAA,CACA,aDmCF,CChCA,uDACE,SDmCF,CC/BA,+CACE,yDAAA,CAAA,iEAAA,CAAA,iDAAA,CAAA,gGDoCF,CChCA,8DACE,uBAAA,CAAA,eDmCF,CChCA,qDACE,sCAAA,CAAA,8BDmCF,CC/BA,+EACE,4BAAA,CAAA,oBDkCF;AGjHA;;;;CAIC,CCuBD,aCHE,UF2BF;AGnDA;;;;CAIC,CC4BD,SCNE,iBAAA,CCgCI,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,iBAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,4BAAA,CAAA,oBAAA,CAAA,wBAAA,CFpBJ,YAAA,CACA,aAAA,CACA,sBAAA,CACA,qBAAA,CACA,WAAA,CACA,cAAA,CACA,WAAA,CACA,YAAA,CACA,eAAA,CACA,iBAAA,CACA,kBAAA,CACA,cAAA,CACA,uBAAA,CACA,SDyEF,CI1FE,sDjBuGM,UAAA,CAAA,sCaFR,CIrGE,wBAGE,iBJkGJ,CCjFE,2BACE,SAAA,CACA,QDmFJ,CC/EA,oBACE,aDkFF,CC/EA,iBXyCI,sBAAA,CACA,mBAAA,CACA,kBAAA,CACA,uBAAA,CACA,+BAAA,CACA,iCAAA,CAEA,yCAAA,CACA,6BAAA,CW5CF,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CACA,eDsFF,CV5CE,+CAGI,iBAAA,CACA,iBAAA,CACA,SAAA,CACA,mBAAA,CACA,UU4CN,CVxCE,wBAGI,mEAAA,CAAA,2DAAA,CAMA,SUmCN,CV7BE,4CAEI,0BAAA,CAAA,qDAAA,CAAA,kBAAA,CAAA,6CU+BN,CV3BE,2CAEI,KAAA,CAEA,MAAA,CACA,0BAAA,CAAA,kBAAA,CACA,sCAAA,CAAA,8BU8BN,CV1BE,sDAEI,KAAA,CAAA,2BAAA,CAEA,MAAA,CAAA,6BU2BN,CVvBE,kEAEI,+FAAA,CAAA,uFUyBN,CVnBE,oEAEI,gDAAA,CAAA,wCAAA,CAKA,uCAAA,CAAA,qGAAA,CAAA,+BAAA,CAAA,6FUkBN,CVkIE,+CAGI,QAAA,CAEA,SAAA,CACA,UAAA,CACA,WUlIN,CVsIE,2CAEI,UAAA,CAAA,oCAAA,CACA,WAAA,CAAA,qCUrIN,CVrBE,+CHxEI,wBagGN,CbxFU,mCAEE,+CAEE,wBAAA,CAAA,iDayFZ,CACF,CVZE,8BAGI,WUYN,CVSE,wHAII,gCAAA,CAAA,wBAAA,CAIA,WUbN,CV0BI,iDAEI,sCAAA,CAAA,8BUzBR,CV6BI,wDAEI,gCAAA,CAAA,wBAAA,CAKA,WUhCR,CVqCE,qCAEI,4BUpCN,CC/JA,kBCnDE,iBAAA,CDsDA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,mBDiKF,CC9JA,oCAEE,wDAAA,CAAA,gDAAA,CACA,SDiKF,CC9JA,qBACE,oBAAA,CACA,UAAA,CAKA,aD6JF,CC1JA,eACE,UAAA,CACA,WAAA,CACA,WAAA,CACA,cD6JF,CC1JA,kBACE,WD6JF,CC1JA,oCACE,qBAAA,CACA,kBAAA,CACA,6BD6JF,CC1JA,iCACE,gBD6JF,CC1JA,uCACE,mBD6JF,CIxPE,sEjBuGM,aAAA,CAAA,sCa6JR,CIpQE,gCAGE,iBJiQJ,CClKE,sEAEE,4BAAA,CAAA,oBAAA,CACA,SDoKJ,CChKA,oEZwHE,gBAAA,CAEA,eW6CF,CXrOI,2JA4LA,cAAA,CAEA,iBW6CJ;AKxTA;;;;CAIC,CCuBC,gBAgBI,6BAAA,CAAA,iCAAA,CAAA,kCDlCN,CCuBI,2BA0BE,cAAA,CAAA,gBAAA,CAAA,yBDrCN,CCWI,sDA0BE,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,eAAA,CAAA,uBAAA,CAAA,sBDzBN,CCDI,2BA0BE,iBAAA,CAAA,mBAAA,CAAA,6BDzBN,CCDI,2BA0BE,cAAA,CAAA,oBAAA,CAAA,qBDbN,CCbI,sDA0BE,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,eAAA,CAAA,uBAAA,CAAA,sBDDN,CCzBI,2BA0BE,kBAAA,CAAA,kBAAA,CAAA,4BDDN,CCzBI,2BA0BE,gBAAA,CAAA,eAAA,CAAA,qBDWN,CCrCI,sDA0BE,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,uBAAA,CAAA,sBDuBN,CCjDI,2BA0BE,iBAAA,CAAA,eAAA,CAAA,sBDuBN,CCjDI,2BA0BE,cAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,wBDmCN,CC7DI,sDA0BE,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,uBAAA,CAAA,sBD+CN,CCzEI,2BA0BE,iBAAA,CAAA,oBAAA,CAAA,eAAA,CAAA,4BD+CN,CCzEI,uBA0BE,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,cAAA,CAAA,kBAAA,CAAA,eAAA,CAAA,uBAAA,CAAA,uBAAA,CAAA,sBD2DN,CCrFI,uBA0BE,iBAAA,CAAA,4BDuEN,CCjGI,gDA0BE,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,uBAAA,CAAA,sBDmFN,CC7GI,yBA0BE,gBAAA,CAAA,4BDmFN,CC7GI,wBA0BE,iBAAA,CAAA,mBAAA,CAAA,4BD+FN,CCzHI,kDA0BE,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,eAAA,CAAA,oBAAA,CAAA,wBD2GN,CCrII,0BA0BE,gBAAA,CAAA,gBAAA,CAAA,4BD2GN;AErKA;;;;CAIC,CCkBD,mDACE,GACE,iCAAA,CAAA,yBAAA,CACA,SDfF,CCkBA,GACE,+BAAA,CAAA,uBAAA,CACA,SDfF,CACF,CCMA,2CACE,GACE,iCAAA,CAAA,yBAAA,CACA,SDHF,CCMA,GACE,+BAAA,CAAA,uBAAA,CACA,SDHF,CACF,CEEE,iBACE,iBAAA,CACA,QAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,2BAAA,CAAA,mBAAA,CACA,8FAAA,CAAA,sGAAA,CAAA,sFAAA,CAAA,qIAAA,CACA,SAAA,CACA,SFGJ,CEAE,yBACE,2BAAA,CAAA,mBAAA,CACA,SFIJ,CEDE,+BACE,SFIJ,CGtBE,qBACE,YAAA,CACA,iBAAA,CACA,OAAA,CACA,MAAA,CACA,qBAAA,CACA,UAAA,CACA,cAAA,CACA,WAAA,CAEA,eAAA,CACA,mBHyBJ,ClBWI,6DqBhCE,gBHyBN,CGtBI,yFAGE,qBAAA,CACA,WAAA,CACA,sDAAA,CAAA,8CAAA,CACA,oBAAA,CACA,uBAAA,CACA,mBHsBN,CGnBI,8BrBwMF,qBAAA,CAEA,iBAAA,CqBvMI,UHuBN,CGpBI,8GrBwMA,gBAAA,CAEA,sBkBzKJ,CGjCI,+BAGE,WH8BN,ClBrBI,iFA4LA,qBAAA,CAEA,iBkBnKJ,CGjCI,4BACE,aAAA,CACA,UAAA,CACA,2BHmCN,CGhCI,yCACE,oBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,cHkCN,CG/BI,sDACE,kBHiCN,CG9BI,gEACE,oBHgCN,CG3BI,0DrBoKF,cAAA,CAEA,iBAAA,CqBnKI,eHgCN,ClBrDI,uIA4LA,gBAAA,CAEA,ekBnIJ,CGjCI,2DACE,SHoCN,CI1GE,oBRwBI,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,cAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,wBAAA,CAAA,uBAAA,CAAA,sBAAA,CQrBF,iBAAA,CAEA,MAAA,CAEA,iCAAA,CAAA,yBAAA,CACA,4FAAA,CAAA,oGAAA,CAAA,oFAAA,CAAA,mIAAA,CAIA,mBAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,eAAA,CAGA,qBJmHJ,ClB5FI,2DsBnBE,OAAA,CAEA,SAAA,CAEA,kCAAA,CAAA,0BAAA,CAEA,gBJoHN,CIhHE,iCACE,WAAA,CCHE,6CAAA,CAAA,qCLsHN,CKhHE,2BACE,sEAAA,CAAA,8DLyHJ,CK9JE,iEACE,GACE,2DAAA,CAAA,mDLkKJ,CK/JE,IACE,oEAAA,CAAA,4DAAA,CACA,4DAAA,CAAA,oDLmKJ,CKhKE,IACE,2EAAA,CAAA,mEAAA,CACA,6DAAA,CAAA,qDLoKJ,CKjKE,GACE,2DAAA,CAAA,mDLoKJ,CACF,CKrLE,yDACE,GACE,2DAAA,CAAA,mDLyLJ,CKtLE,IACE,oEAAA,CAAA,4DAAA,CACA,4DAAA,CAAA,oDL0LJ,CKvLE,IACE,2EAAA,CAAA,mEAAA,CACA,6DAAA,CAAA,qDL2LJ,CKxLE,GACE,2DAAA,CAAA,mDL2LJ,CACF,CMzLE,4E1BkFM,UAAA,CAAA,sCoBoLR,CMxRE,iDACE,oBAAA,CACA,iBAAA,CACA,WAAA,CACA,qBAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,4BAAA,CACA,iBAAA,CACA,WAAA,CACA,oBAAA,CACA,cAAA,CACA,wBAAA,CAAA,qBAAA,CAAA,oBAAA,CAAA,gBN6RJ,COpTA,mEAEE,cAAA,CACA,mBPuTF,CQ3TA,wBZgCM,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,4BAAA,CAAA,uBAAA,CAAA,sBAAA,CAoBF,aAAA,CAGA,kBAAA,CYnDF,QAAA,CACA,uDAAA,CAAA,+CAAA,CACA,SAAA,CACA,mBRwUF,CJrRE,+BA0BA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CAzBI,gBIwRN,CQ5UA,oCACE,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,gBR+UF,CNhVA,YXmEI,sBAAA,CACA,mBAAA,CACA,kBAAA,CACA,uBAAA,CACA,+BAAA,CACA,iCAAA,CAEA,yCAAA,CACA,6BAAA,CWpDF,mBAAA,CACA,iBAAA,CACA,qBAAA,CACA,WAAA,CACA,eAAA,CAEA,mCMqUF,CS/VE,uC7B2CI,wBoBuTN,CjBvRE,qCAGI,iBAAA,CACA,iBAAA,CACA,SAAA,CACA,mBAAA,CACA,UiBuRN,CjBnRE,mBAGI,mEAAA,CAAA,2DAAA,CAMA,SiB8QN,CjBxQE,uCAEI,0BAAA,CAAA,qDAAA,CAAA,kBAAA,CAAA,6CiB0QN,CjBtQE,sCAEI,KAAA,CAEA,MAAA,CACA,0BAAA,CAAA,kBAAA,CACA,sCAAA,CAAA,8BiByQN,CjBrQE,iDAEI,KAAA,CAAA,2BAAA,CAEA,MAAA,CAAA,6BiBsQN,CjBlQE,6DAEI,+FAAA,CAAA,uFiBoQN,CjB9PE,+DAEI,gDAAA,CAAA,wCAAA,CAKA,uCAAA,CAAA,qGAAA,CAAA,+BAAA,CAAA,6FiB6PN,CjBzGE,qCAGI,QAAA,CAEA,SAAA,CACA,UAAA,CACA,WiByGN,CjBrGE,sCAEI,UAAA,CAAA,oCAAA,CACA,WAAA,CAAA,qCiBsGN,CjBhQE,qCHzGI,gCoB4WN,CjBjPE,yBAGI,WiBiPN,CjB5NE,8GAII,gCAAA,CAAA,wBAAA,CAIA,WiBwNN,CSlSE,qI7BjFI,qBoBuXN,CSlYE,2D7BWI,oBoB0XN,CS9RE,qI7B5FI,mCoB8XN,CU5aE,+D9B8CI,oBoBiYN,CS9WE,wC9BjEE,yBqBkbJ,CStUE,4E7BTM,wBAAA,CAAA,iDoBoVR,CS7aI,+E7BoCE,wBoB4YN,CSzaE,yE7B6BI,mCoB+YN,CKzaE,6CAQI,6CAAA,CAAA,qCLqaN,CSvQE,gC3BmCA,SAAA,CAEA,UAAA,C2BlCE,QAAA,CACA,mBT2QJ,ClBlaI,mFA4LA,SAAA,CAEA,UkB0OJ,CS7QI,8D3B2BF,SAAA,CAEA,UkBsPF,ClB9aI,+IA4LA,SAAA,CAEA,UkBsPJ,CSnRI,qD3BqBF,QAAA,CAEA,UAAA,C2BpBI,QTuRN,ClB3bI,6HA4LA,SAAA,CAEA,SkBmQJ,CSzRM,mF3BcJ,SAAA,CAEA,UkB+QF,ClBvcI,yLA4LA,SAAA,CAEA,UkB+QJ,CSlSQ,gG3BWN,SAAA,CAEA,UkB2RF,ClBndI,mNA4LA,SAAA,CAEA,UkB2RJ,CNjeE,2BegIA,iOAAA,C3B8DA,SAAA,CAEA,SAAA,CY5LE,iBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,yDAAA,CAAA,iEAAA,CAAA,iDAAA,CAAA,gGAAA,CACA,mBMueJ,ClBxeI,yEA4LA,QAAA,CAEA,UkBgTJ,CN3eI,gDeqHF,oOAAA,CflHI,iDAAA,CAAA,yCAAA,CACA,yDAAA,CAAA,iEAAA,CAAA,iDAAA,CAAA,gGM+eN,CN3eE,4BACE,gBM6eJ,CNzeI,uDACE,2BAAA,CAAA,mBAAA,CACA,SM4eN,CStLI,oCACE,iBAAA,CACA,gBTyLN,CStLI,8CACE,iBAAA,CACA,gBTwLN,CSnLE,0FACE,STsLJ,CSnUE,2BACE,eAAA,CACA,gBTsUJ,CSnUE,uDbhOI,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,cAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,wBAAA,CAAA,uBAAA,CAAA,sBAAA,CamPF,qBAAA,CACA,UAAA,CACA,WAAA,CAEA,0BAAA,CAEA,WAAA,CAAA,uBAAA,CACA,YAAA,CACA,4BAAA,CACA,aAAA,CACA,kBAAA,CACA,cAAA,CACA,uBAAA,CAAA,oBAAA,CAAA,eToUJ,ClBhjBI,oJA4LA,iBAAA,CAEA,kBkB0XJ,CStWI,+EACE,YTyWN,CStWI,6EACE,4BAAA,CACA,aTyWN,CSrWI,8BAfF,uDAgBI,gBTyWJ,CACF,CN7iBA,sBe8QE,WAAA,CACA,gBTmSF,CW5nBE,4O/BuDI,4BoB6kBN,CWpoBE,27B/BuDI,4BoBolBN,CWnoBE,uWAGE,gBAAA,C/BiGI,oBAAA,CAAA,6CoBoiBR,CKrmBE,iDACE,iFAAA,CAAA,yEL+mBJ,CWloBE,yEhChBE,yBqBspBJ,CWxnBE,+OhC9BE,yBqB8pBJ,ClBvnBI,uKHlCI,yBqB6pBR,CS/kBE,kD9BnFE,iBqBqqBJ,CjB9gBE,yDAQM,YiBygBR,CSrqBE,iD7B2CI,4BoB6nBN,CKvpBE,uDAQI,4CAAA,CAAA,oCAAA,CMWF,gBXwoBJ,CK3pBE,2KAQI,8CAAA,CAAA,sCAAA,CMqBA,cXsoBN,CSrWE,mGAIE,YAAA,CAEA,2BAAA,CACA,WAAA,CACA,4BAAA,CACA,ST6WJ,ClBjqBI,4OA4LA,iBAAA,CAEA,kBkB2eJ,CSlXE,iDACE,gBToXJ,CSjXE,wCACE,STmXJ,CShXE,0CACE,mBAAA,CACA,mBTkXJ,CSvrBE,oE7BgEM,aAAA,CAAA,oCoB6nBR,CStlBE,uJ7BvCM,2BAAA,CAAA,kDoBmoBR,CS1nBE,qF7BTM,wBAAA,CAAA,+CoBwoBR,CSjuBI,wF7BoCE,aoBgsBN,CUxuBE,4G9B6FM,aAAA,CAAA,oCoBgpBR,CSluBE,kF7BkFM,2BAAA,CAAA,kDoBqpBR,CWjwBE,21C/B4GM,oBAAA,CAAA,2CoBqqBR,CWzwBE,maAGE,gBAAA,C/BiGI,oBAAA,CAAA,2CoB0qBR,CNxrBE,gDe0EA,oOTwnBF,CN7rBE,6DACE,SM+rBJ,CNzrBE,gDACE,WM4rBJ,CNxrBA,sBdxDM,wBAAA,C6BkRJ,cAAA,CACA,mBTmeF,CS1gBE,0C7B5OI,qBoByvBN,CSzgBE,iDA/HA,iOT2oBF,CSxgBE,uCACE,YT0gBJ,CSvgBE,wC7BxPI,qBoBkwBN,CStgBE,mG7B5PI,qBAAA,C6BgQF,0BTugBJ,CSpgBE,iDACE,mBTsgBJ,CSngBE,2C7BvQI,4BoB6wBN,CSngBI,6IAEE,wBTqgBN,CWx0BE,0N/BuDI,4BoBsxBN,CM7yBE,iDxBsMA,SAAA,CAEA,UkB4mBF,ClBpyBI,qHA4LA,SAAA,CAEA,UkB4mBJ,CMrzBE,qHxBiMA,iBAAA,CAEA,kBkBynBF,ClBjzBI,gRA4LA,iBAAA,CAEA,kBkB2nBJ,CK50BE,qFAEI,8DAAA,CAAA,sDL80BN,ClB7zBI,6LuBdI,6DAAA,CAAA,qDL+0BR,CWl0BE,qFACE,gBXo0BJ,CKv1BE,uOAEI,gEAAA,CAAA,wDL01BN,ClBz0BI,ofuBdI,+DAAA,CAAA,uDL61BR,CWt0BI,uOACE,cXy0BN,CKx1BE,+EACE,0FAAA,CAAA,kFL21BJ,CK51BE,iLACE,8FAAA,CAAA,sFL+1BJ,ClB31BI,kOA4LA,iBAAA,CAEA,kBkByqBJ,CNhyBA,qDdXQ,UAAA,CAAA,sCoBizBR,CjB7vBE,uHHxEI,qBoBw0BN,CpBh0BU,mCAEE,uHAEE,qBAAA,CAAA,iDoBi0BZ,CACF,CjBpvBE,kEAGI,WiBovBN,CjB/tBE,gMAII,gCAAA,CAAA,wBAAA,CAIA,WiB2tBN,CjB9sBI,qFAEI,sCAAA,CAAA,8BiB+sBR,CjB3sBI,4FAEI,gCAAA,CAAA,wBAAA,CAKA,WiBwsBR,CjBnsBE,yEAEI,4BiBosBN,CKh7BE,qFACE,GACE,gEAAA,CAAA,wDLo7BJ,CKj7BE,IACE,oEAAA,CAAA,4DAAA,CACA,0EAAA,CAAA,kELq7BJ,CKl7BE,IACE,2EAAA,CAAA,mEAAA,CACA,2EAAA,CAAA,mELs7BJ,CKn7BE,GACE,gEAAA,CAAA,wDLs7BJ,CACF,CKv8BE,6EACE,GACE,gEAAA,CAAA,wDL28BJ,CKx8BE,IACE,oEAAA,CAAA,4DAAA,CACA,0EAAA,CAAA,kEL48BJ,CKz8BE,IACE,2EAAA,CAAA,mEAAA,CACA,2EAAA,CAAA,mEL68BJ,CK18BE,GACE,gEAAA,CAAA,wDL68BJ,CACF,CK99BE,yFACE,GACE,+DAAA,CAAA,uDLi+BJ,CK99BE,IACE,oEAAA,CAAA,4DAAA,CACA,2EAAA,CAAA,mELk+BJ,CK/9BE,IACE,2EAAA,CAAA,mEAAA,CACA,4EAAA,CAAA,oELm+BJ,CKh+BE,GACE,+DAAA,CAAA,uDLm+BJ,CACF,CKp/BE,iFACE,GACE,+DAAA,CAAA,uDLu/BJ,CKp/BE,IACE,oEAAA,CAAA,4DAAA,CACA,2EAAA,CAAA,mELw/BJ,CKr/BE,IACE,2EAAA,CAAA,mEAAA,CACA,4EAAA,CAAA,oELy/BJ,CKt/BE,GACE,+DAAA,CAAA,uDLy/BJ,CACF;AY9iCA;;;;CAIC,CC0CC,YjBYI,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,iBAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,4BAAA,CAAA,oBAAA,CAAA,wBAAA,CiB2JF,aAAA,CA4BA,mBAAA,CACA,iBAAA,CACA,kBAAA,CACA,sBAAA,CACA,qBAAA,CACA,cAAA,CACA,WAAA,CACA,WAAA,CACA,YAAA,CAEA,mBAAA,CACA,wBAAA,CAAA,qBAAA,CAAA,oBAAA,CAAA,gBAAA,CACA,uBAAA,CACA,eAAA,CACA,qBAAA,ClCzNA,iBiCHJ,CC+NE,8BAEI,SAAA,CACA,QD9NN,CCmOE,mBAEI,YDlON,CCsOE,kBAEI,cDrON,CCyOE,qBjClMI,4BAAA,CiCsMA,qBAAA,CAIA,cAAA,CACA,mBD5ON,CCoJE,8BlCjKE,iBiCgBJ,CCqGE,2BjCvEI,4BgC3BN,CCFI,8B/B4MF,aAAA,CAEA,gBAAA,C+BkCA,oBAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,kBDvOF,C9BSI,+EA4LA,eAAA,CAEA,c8BjMJ,CC+GE,2BjChDM,aAAA,CAAA,sCgC1DR,CCfE,qC/BmMA,eAAA,CAEA,c8B/KF,C9BTI,6FA4LA,aAAA,CAEA,gB8B/KJ,CCrBE,qBA4OA,iBDnNF,CChBI,wH/BmLF,gBAAA,CAEA,gB8B5JF,CClBI,0d/B4KF,eAAA,CAEA,iB8B1IF,C9B9CI,2ZA4LA,gBAAA,CAEA,gB8BtIJ,CCvCE,4CAuHE,cD3EJ,CCyME,8DAEI,gCAAA,CACA,qBDvMN,CCYE,0EjCtCI,wBgC8BN,ChCtBU,mCAEE,0EAEE,wBAAA,CAAA,iDgCwBZ,CACF,CC+BE,0EjChDM,UAAA,CAAA,sCgCuBR,CC3DE,oBhC3BE,gGAAA,CgCqSA,0DAAA,CAAA,kDD1MJ,CC4LE,oDhCvRE,iG+B8FJ,CC8LE,2BhC5RE,sG+BiGJ,CC+LE,6BhChSE,iF+BoGJ,CCrEE,sBA0NE,kBAAA,CA9GA,cAAA,CAgBA,gBDjDJ,CCkJE,+BAEI,4BDjJN,CClBE,qCjC5BM,oBAAA,CAAA,6CgCmDR,CC7EE,mBAqQA,WAAA,CACA,kBDpLF,CCrEE,Y9BnBE,sBAAA,CACA,mBAAA,CACA,kBAAA,CACA,uBAAA,CACA,+BAAA,CACA,iCAAA,CAEA,yCAAA,CACA,6B6BoKJ,C7BjKE,qCAGI,iBAAA,CACA,iBAAA,CACA,SAAA,CACA,mBAAA,CACA,U6BiKN,C7B7JE,mBAGI,mEAAA,CAAA,2DAAA,CAMA,S6BwJN,C7BlJE,uCAEI,0BAAA,CAAA,qDAAA,CAAA,kBAAA,CAAA,6C6BoJN,C7BhJE,sCAEI,KAAA,CAEA,MAAA,CACA,0BAAA,CAAA,kBAAA,CACA,sCAAA,CAAA,8B6BmJN,C7B/IE,iDAEI,KAAA,CAAA,2BAAA,CAEA,MAAA,CAAA,6B6BgJN,C7B5IE,6DAEI,+FAAA,CAAA,uF6B8IN,C7BxIE,+DAEI,gDAAA,CAAA,wCAAA,CAKA,uCAAA,CAAA,qGAAA,CAAA,+BAAA,CAAA,6F6BuIN,C7BaE,qCAGI,QAAA,CAEA,SAAA,CACA,UAAA,CACA,W6BbN,C7BiBE,sCAEI,UAAA,CAAA,oCAAA,CACA,WAAA,CAAA,qC6BhBN,C7B1IE,qCHxEI,wBgCqNN,ChC7MU,mCAEE,qCAEE,wBAAA,CAAA,iDgC8MZ,CACF,C7BjIE,yBAGI,W6BiIN,C7B5GE,8GAII,gCAAA,CAAA,wBAAA,CAIA,W6BwGN,C7B3FI,4CAEI,sCAAA,CAAA,8B6B4FR,C7BxFI,mDAEI,gCAAA,CAAA,wBAAA,CAKA,W6BqFR,C7BhFE,gCAEI,4B6BiFN,C7BpKE,kHHxEI,qBgCkPN,ChC1OU,mCAEE,kHAEE,qBAAA,CAAA,iDgC6OZ,CACF,C7BhKE,sEAGI,W6BiKN,C7B5IE,oQAII,gCAAA,CAAA,wBAAA,CAIA,W6B0IN,C7B7HI,4GAEI,sCAAA,CAAA,8B6B+HR,C7B3HI,0HAEI,gCAAA,CAAA,wBAAA,CAKA,W6ByHR,C7BpHE,oFAEI,4B6BsHN;AEtYA;;;;CAIC,CCoDC,UnBEI,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,cAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,wBAAA,CAAA,uBAAA,CAAA,sBAAA,CmBkVF,kBAAA,CAIA,QAAA,CACA,aAAA,CACA,oBAAA,CnCzQI,qBAAA,CAAA,iEkClHR,CCuSE,+BnCrLM,qBAAA,CAAA,mEkC5GR,CC2SE,wBnCpPI,4BAAA,CAqDE,qBAAA,CAAA,8DkCxGR,CC2TE,qBnCnNM,qBAAA,CAAA,8DkC5FR,CCyUE,2BnC7OM,qBAAA,CAAA,iEkCtFR,CCeE,iBAEI,eAAA,CACA,kBAAA,CACA,iBDbN,CCiBE,eA+UA,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,0BAAA,CACA,WAAA,CACA,cAAA,CACA,eD5VF,CC8VE,qBACE,YD5VJ,CC4QE,sJnCzMM,aAAA,CAAA,sCkCtDR,CCKE,yBnCiDM,qBAAA,CAAA,kEkChDR,CCGE,wBjCuKA,aAAA,CAEA,iBAAA,CiCoLA,UAAA,CACA,WAAA,CA1VI,aAAA,CACA,kBAAA,CACA,sBAAA,CACA,iBDGN,ChC/BM,iGAkMF,gBAAA,CAEA,cgC/JJ,CCFE,kCAEI,mBDIN,CCCE,qBjCkJA,gBAAA,CAEA,cgC9IF,ChChDM,2FAkMF,aAAA,CAEA,iBgC9IJ,CCNE,qBnBnDE,sBAAA,CACA,kBAAA,CACA,ekB6DJ,CCNE,0BAEI,mBDQN,CCJE,6BnB/DE,sBAAA,CACA,kBAAA,CACA,eAAA,CASA,YAAA,CAEA,kBAAA,CAgBA,mBAAA,CmBwCE,aDUN,ClB/DE,oCA0BA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CAzBI,gBkBkEN,ClBtDE,mCAUA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CATI,oBkByDN,CCpBI,8CnB/DA,aAAA,CACA,YAAA,CAEA,kBAAA,CAgBA,mBkBuEJ,ClBpFE,qDA0BA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CAzBI,gBkBuFN,ClB3EE,oDAUA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CATI,oBkB8EN,CClCE,+BnB1FI,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,iBAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,4BAAA,CAAA,uBAAA,CAAA,sBAAA,CAUF,sBAAA,CACA,kBAAA,CACA,eAAA,CASA,YAAA,CAEA,kBAAA,CmByEE,aDgDN,ClBtHE,sCA0BA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CAzBI,gBkByHN,CCnDI,gDnBhFA,aAAA,CACA,YAAA,CAEA,kBAAA,CmBiFI,iBDsDR,ClBpIE,uDA0BA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CAzBI,gBkBuIN,CCtDE,gCAEI,WDwDN,CCpDE,yCjCoFA,aAAA,CAEA,iBAAA,CiCoLA,UAAA,CACA,WD9MF,ChCrKM,mIAkMF,gBAAA,CAEA,cgCzBJ,CC7DE,sCAEI,WD+DN,CC3DE,+CjCwEA,aAAA,CAEA,iBAAA,CiCoLA,UAAA,CACA,WAAA,CA3PI,iBDiEN,ChCzLM,+IAkMF,gBAAA,CAEA,cgCLJ,CCnEE,yCAEI,qBDqEN,CCjEE,mCAEI,WDmEN,CC/DE,yGAGI,WDiEN,CC7DE,+DjC6CA,aAAA,CAEA,iBAAA,CiCoLA,UAAA,CACA,WD9JF,ChCrNM,+KAkMF,gBAAA,CAEA,cgCuBJ,CCrEE,8EAEI,cDuEN,CCjEE,gBAEI,aAAA,CACA,oBDmEN,CC9DE,kBAEI,QAAA,CACA,QAAA,CAGA,WAAA,CAAA,uBAAA,CnC/JA,mCkC+NN,CCxDE,0BAGI,aD6DN,CCzDE,yBjCCA,gBAAA,CAEA,cAAA,CiCCI,uBD6DN,ChC5PM,qGAkMF,aAAA,CAEA,iBgC8DJ,CC/DE,kDAEI,uBDiEN,CC1DM,0BACE,SD6DR,CCxDE,2BnB/NI,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,cAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,wBAAA,CAAA,uBAAA,CAAA,sBAAA,CmBuOA,kBD6DN,CElUE,2CACE,GACE,yDAAA,CAAA,iDAAA,CAKA,uCAAA,CAAA,4EAAA,CAAA,+BAAA,CAAA,oEFmUJ,CEhUE,GACE,uCAAA,CAAA,qGAAA,CAAA,+BAAA,CAAA,6FFmUJ,CACF,CE/UE,mCACE,GACE,yDAAA,CAAA,iDAAA,CAKA,uCAAA,CAAA,4EAAA,CAAA,+BAAA,CAAA,oEFgVJ,CE7UE,GACE,uCAAA,CAAA,qGAAA,CAAA,+BAAA,CAAA,6FFgVJ,CACF,CE7UE,4CACE,GACE,wCAAA,CAAA,gCAAA,CACA,SFgVJ,CE7UE,GACE,SAAA,CAAA,sCF+UJ,CACF,CEvVE,oCACE,GACE,wCAAA,CAAA,gCAAA,CACA,SF0VJ,CEvVE,GACE,SAAA,CAAA,sCFyVJ,CACF,CEtVE,6CACE,GACE,wCAAA,CAAA,gCAAA,CACA,SAAA,CAAA,sCFyVJ,CEtVE,GACE,SFwVJ,CACF,CEhWE,qCACE,GACE,wCAAA,CAAA,gCAAA,CACA,SAAA,CAAA,sCFmWJ,CEhWE,GACE,SFkWJ,CACF,C/BzUM,uCACE,iDAAA,CAEA,iB+B0UR,C/BxUQ,8CACE,8C+B0UV,CCzHE,8EhCrME,sBAAA,CACA,mBAAA,CACA,kBAAA,CACA,uBAAA,CACA,+BAAA,CACA,iCAAA,CAEA,yCAAA,CACA,6B+BiUJ,C/B9TE,yKAGI,iBAAA,CACA,iBAAA,CACA,SAAA,CACA,mBAAA,CACA,U+B8TN,C/B1TE,qFAGI,mEAAA,CAAA,2DAAA,CAMA,S+BqTN,C/B/SE,yGAEI,0BAAA,CAAA,qDAAA,CAAA,kBAAA,CAAA,6C+BiTN,C/B7SE,wGAEI,KAAA,CAEA,MAAA,CACA,0BAAA,CAAA,kBAAA,CACA,sCAAA,CAAA,8B+BgTN,C/B5SE,mHAEI,KAAA,CAAA,2BAAA,CAEA,MAAA,CAAA,6B+B6SN,C/BzSE,+HAEI,+FAAA,CAAA,uF+B2SN,C/BrSE,iIAEI,gDAAA,CAAA,wCAAA,CAKA,uCAAA,CAAA,qGAAA,CAAA,+BAAA,CAAA,6F+BoSN,C/BhJE,yKAGI,QAAA,CAEA,SAAA,CACA,UAAA,CACA,W+BgJN,C/B5IE,wGAEI,UAAA,CAAA,oCAAA,CACA,WAAA,CAAA,qC+B6IN,C/BvSE,yKHzGI,qBkCmZN,C/BxRE,2FAGI,W+BwRN,C/BnQE,kPAII,gCAAA,CAAA,wBAAA,CAIA,W+B+PN,C/BlPI,8GAEI,sCAAA,CAAA,8B+BmPR,C/B/OI,qHAEI,gCAAA,CAAA,wBAAA,CAKA,W+B4OR,C/BvOE,kGAEI,4B+BwON,C/BhNI,gGAGI,W+BgNR,C/B9TE,+LHxEI,wBkCyYN,ClCjYU,mCAEE,+LAEE,wBAAA,CAAA,iDkCkYZ,CACF,C/BrTE,sGAGI,W+BqTN,C/BhSE,wQAII,gCAAA,CAAA,wBAAA,CAIA,W+B4RN,C/B/QI,yHAEI,sCAAA,CAAA,8B+BgRR,C/B5QI,gIAEI,gCAAA,CAAA,wBAAA,CAKA,W+ByQR,C/BpQE,6GAEI,4B+BqQN,C/B1NI,+FAGI,W+B0NR,C/B3VE,6LHxEI,wBkCsaN,ClC9ZU,mCAEE,6LAEE,wBAAA,CAAA,iDkC+ZZ,CACF,C/BlVE,qGAGI,W+BkVN,C/B7TE,sQAII,gCAAA,CAAA,wBAAA,CAIA,U+ByTN,C/B5SI,wHAEI,sCAAA,CAAA,8B+B6SR,C/BzSI,+HAEI,gCAAA,CAAA,wBAAA,CAKA,U+BsSR,C/BjSE,4GAEI,2B+BkSN,CG9iBA,kBACE,aAAc,CACd,cAAe,CACf,2BAA4B,CAC5B,gBAAiB,CACjB,mBAAoB,CACpB,uBACF,CAEA,wBACE,kBAAmB,CACnB,SAAU,CACV,UACF,CAEA,uBACE,iBAAkB,CAClB,SAAU,CACV,UACF,CAEA,wBACE,gBAAiB,CACjB,SAAU,CACV,UACF,CAEA,uBACE,iBAAkB,CAClB,SAAU,CACV,UACF,CAEA,wBACE,cAAe,CACf,SAAU,CACV,UACF;;ACzCA;;;;CAIC,CC8BD,YvCkDM,qBAAA,CD9CF,qBAAA,CyCiGF,SAAA,CAIA,WAAA,CD3FA,YAAA,CACA,qBAAA,CACA,aAAA,CACA,qBAAA,CACA,WAAA,CACA,qCAAA,CAAA,6CAAA,CAAA,6BAAA,CAAA,+CAAA,CACA,0DAAA,CAAA,kDAAA,CAIA,sBAAA,CAAA,4BAAA,CACA,eDjCF,CEuCE,+BxCmBI,qBsCvDN,CGqTE,6GzC9PI,oBsC9CN,CE6EE,2BxC/BI,qBsC3CN,CGySE,8DzC9PI,asCxCN,CE+DE,sCxCvBI,wBsCrCN,CpC8BI,2CHlCI,qBuCQR,CGiTE,2B1C9TE,iBuCgBJ,CEuFE,+EtCsHA,iBAAA,CAEA,coCzMF,CpCiBI,iLA4LA,aAAA,CAEA,kBoCzMJ,CpCWI,2CqCdA,oBAAA,CAEA,qBAAA,CAEA,uBAAA,CAEA,uBDOJ,CCHE,2BvBfI,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,iBAAA,CAAA,oBAAA,CAAA,eAAA,CAAA,4BAAA,CAAA,uBAAA,CAAA,sBAAA,CuBkBF,WAAA,CAEA,UAAA,CACA,aDWJ,CCPE,uCACE,cDSJ,CCLE,sCACE,eDOJ,CCHE,uCvBnCI,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,iBAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,4BAAA,CAAA,uBAAA,CAAA,sBAAA,CAoBF,aAAA,CAGA,kBAAA,CuBgBA,QAAA,CACA,cDeJ,CtB7BE,8CA0BA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CAzBI,gBsBgCN,CClBE,8BACE,gBDoBJ,CCfE,qEAEE,mBDiBJ,CCbA,qBACE,mCAAA,CAAA,2BDiBF,CpCvDI,6DqCyCA,kCAAA,CAAA,0BDkBJ,CCdA,qBAEE,gCAAA,CAAA,wBDkBF,CpCjEI,kFqC8CF,+BAAA,CAAA,uBDuBF,CCdA,qBACE,mCAAA,CAAA,2BAAA,CACA,+BAAA,CAAA,uBDkBF,CpC3EI,6DqC4DA,kCAAA,CAAA,0BDmBJ,CCfA,oBACE,aAAA,CACA,qBAAA,CACA,eAAA,CACA,kBDkBF,CCfA,mBvB1FM,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,eAAA,CAAA,sBAAA,CAAA,uBAAA,CAAA,sBAAA,CAoBF,aAAA,CACA,YAAA,CAEA,kBAAA,CAgBA,mBsBmFJ,CtBhGE,0BA0BA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CAzBI,gBsBmGN,CtBvFE,yBAUA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CATI,oBsB0FN,CCxCA,sBvBhGM,6BAAA,CAAA,iCAAA,CAAA,kCAAA,CAAA,iBAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,4BAAA,CAAA,uBAAA,CAAA,sBAAA,CAoBF,aAAA,CACA,YAAA,CAEA,kBAAA,CuB6EF,eDqDF,CtB/HE,6BA0BA,oBAAA,CACA,OAAA,CACA,WAAA,CACA,UAAA,CAzBI,gBsBkIN,CCzDA,qBACE,WAAA,CACA,eAAA,CACA,gCD4DF,CIrMA,yBxCwOE,MAAA,CAEA,UAAA,CwCvOA,YAAA,CACA,iBJ0MF,CpC5JI,qEA4LA,SAAA,CAEA,OoC5BJ,CI9ME,0CACE,YJgNJ,CI5MA,wBAGE,iBJiNF,CpC7KI,2FAsLF,aAAA,CAEA,coCLF,CKpOA,mB1C8CI,wGAAA,CCyLF,MAAA,CAEA,UAAA,CyCpOA,YAAA,CACA,cLwOF,CEzIE,qCxC7CI,gCsCyLN,CpChMI,yDA4LA,SAAA,CAEA,OoCQJ,CK/OE,oCACE,YLiPJ,CK7OA,kBACE,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CACA,mCAAA,CAAA,2BAAA,CACA,0DAAA,CAAA,kDAAA,CACA,SLgPF,CK9OE,oCACE,aLgPJ,CK7OE,uCACE,SL+OJ,CK5OE,uCACE,gCAAA,CAAA,wBAAA,CACA,SL8OJ,CK3OE,uCACE,+BAAA,CAAA,uBAAA,CACA,SL6OJ","file":"2.6b51f286.chunk.css","sourcesContent":["/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n.mdc-card {\n border-radius: 4px;\n background-color: #fff;\n /* @alternate */\n background-color: var(--mdc-theme-surface, #fff);\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n.mdc-card--outlined {\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n border-width: 1px;\n border-style: solid;\n border-color: #e0e0e0;\n}\n\n.mdc-card__media {\n position: relative;\n box-sizing: border-box;\n background-repeat: no-repeat;\n background-position: center;\n background-size: cover;\n}\n.mdc-card__media::before {\n display: block;\n content: \"\";\n}\n\n.mdc-card__media:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n\n.mdc-card__media:last-child {\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n}\n\n.mdc-card__media--square::before {\n margin-top: 100%;\n}\n\n.mdc-card__media--16-9::before {\n margin-top: 56.25%;\n}\n\n.mdc-card__media-content {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n box-sizing: border-box;\n}\n\n.mdc-card__primary-action {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n position: relative;\n outline: none;\n color: inherit;\n text-decoration: none;\n cursor: pointer;\n overflow: hidden;\n}\n\n.mdc-card__primary-action:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n\n.mdc-card__primary-action:last-child {\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n}\n\n.mdc-card__actions {\n display: flex;\n flex-direction: row;\n align-items: center;\n box-sizing: border-box;\n min-height: 52px;\n padding: 8px;\n}\n\n.mdc-card__actions--full-bleed {\n padding: 0;\n}\n\n.mdc-card__action-buttons,\n.mdc-card__action-icons {\n display: flex;\n flex-direction: row;\n align-items: center;\n box-sizing: border-box;\n}\n\n.mdc-card__action-icons {\n color: rgba(0, 0, 0, 0.6);\n flex-grow: 1;\n justify-content: flex-end;\n}\n\n.mdc-card__action-buttons + .mdc-card__action-icons {\n /* @noflip */\n margin-left: 16px;\n /* @noflip */\n margin-right: 0;\n}\n[dir=rtl] .mdc-card__action-buttons + .mdc-card__action-icons, .mdc-card__action-buttons + .mdc-card__action-icons[dir=rtl] {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 16px;\n}\n\n.mdc-card__action {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n box-sizing: border-box;\n justify-content: center;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.mdc-card__action:focus {\n outline: none;\n}\n\n.mdc-card__action--button {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 8px;\n padding: 0 8px;\n}\n[dir=rtl] .mdc-card__action--button, .mdc-card__action--button[dir=rtl] {\n /* @noflip */\n margin-left: 8px;\n /* @noflip */\n margin-right: 0;\n}\n.mdc-card__action--button:last-child {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 0;\n}\n[dir=rtl] .mdc-card__action--button:last-child, .mdc-card__action--button:last-child[dir=rtl] {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 0;\n}\n\n.mdc-card__actions--full-bleed .mdc-card__action--button {\n justify-content: space-between;\n width: 100%;\n height: auto;\n max-height: none;\n margin: 0;\n padding: 8px 16px;\n /* @noflip */\n text-align: left;\n}\n[dir=rtl] .mdc-card__actions--full-bleed .mdc-card__action--button, .mdc-card__actions--full-bleed .mdc-card__action--button[dir=rtl] {\n /* @noflip */\n text-align: right;\n}\n\n.mdc-card__action--icon {\n margin: -6px 0;\n padding: 12px;\n}\n\n.mdc-card__action--icon:not(:disabled) {\n color: rgba(0, 0, 0, 0.6);\n}\n\n@-webkit-keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n\n@keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n@keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n.mdc-ripple-surface--test-edge-var-bug {\n --mdc-ripple-surface-test-edge-var: 1px solid #000;\n visibility: hidden;\n}\n.mdc-ripple-surface--test-edge-var-bug::before {\n border: var(--mdc-ripple-surface-test-edge-var);\n}\n\n.mdc-card__primary-action {\n --mdc-ripple-fg-size: 0;\n --mdc-ripple-left: 0;\n --mdc-ripple-top: 0;\n --mdc-ripple-fg-scale: 1;\n --mdc-ripple-fg-translate-end: 0;\n --mdc-ripple-fg-translate-start: 0;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n will-change: transform, opacity;\n}\n.mdc-card__primary-action::before, .mdc-card__primary-action::after {\n position: absolute;\n border-radius: 50%;\n opacity: 0;\n pointer-events: none;\n content: \"\";\n}\n.mdc-card__primary-action::before {\n transition: opacity 15ms linear, background-color 15ms linear;\n z-index: 1;\n}\n.mdc-card__primary-action.mdc-ripple-upgraded::before {\n -webkit-transform: scale(var(--mdc-ripple-fg-scale, 1));\n transform: scale(var(--mdc-ripple-fg-scale, 1));\n}\n.mdc-card__primary-action.mdc-ripple-upgraded::after {\n top: 0;\n /* @noflip */\n left: 0;\n -webkit-transform: scale(0);\n transform: scale(0);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n.mdc-card__primary-action.mdc-ripple-upgraded--unbounded::after {\n top: var(--mdc-ripple-top, 0);\n /* @noflip */\n left: var(--mdc-ripple-left, 0);\n}\n.mdc-card__primary-action.mdc-ripple-upgraded--foreground-activation::after {\n -webkit-animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n}\n.mdc-card__primary-action.mdc-ripple-upgraded--foreground-deactivation::after {\n -webkit-animation: mdc-ripple-fg-opacity-out 150ms;\n animation: mdc-ripple-fg-opacity-out 150ms;\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n}\n.mdc-card__primary-action::before, .mdc-card__primary-action::after {\n top: calc(50% - 100%);\n /* @noflip */\n left: calc(50% - 100%);\n width: 200%;\n height: 200%;\n}\n.mdc-card__primary-action.mdc-ripple-upgraded::after {\n width: var(--mdc-ripple-fg-size, 100%);\n height: var(--mdc-ripple-fg-size, 100%);\n}\n.mdc-card__primary-action::before, .mdc-card__primary-action::after {\n background-color: #000;\n}\n.mdc-card__primary-action:hover::before {\n opacity: 0.04;\n}\n.mdc-card__primary-action:not(.mdc-ripple-upgraded):focus::before, .mdc-card__primary-action.mdc-ripple-upgraded--background-focused::before {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n.mdc-card__primary-action:not(.mdc-ripple-upgraded)::after {\n transition: opacity 150ms linear;\n}\n.mdc-card__primary-action:not(.mdc-ripple-upgraded):active::after {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n.mdc-card__primary-action.mdc-ripple-upgraded {\n --mdc-ripple-fg-opacity: 0.12;\n}\n/*# sourceMappingURL=mdc.card.css.map*/","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/elevation/mixins\";\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"@material/ripple/mixins\";\n@import \"@material/rtl/mixins\";\n@import \"@material/shape/mixins\";\n@import \"@material/theme/mixins\";\n@import \"./variables\";\n\n//\n// Public\n//\n\n@mixin mdc-card-core-styles($query: mdc-feature-all()) {\n @include mdc-card-without-ripple($query);\n @include mdc-card-ripple($query);\n}\n\n// This API is intended for use by frameworks that may want to separate the ripple-related styles from the other\n// card styles. It is recommended that most users use `mdc-card-core-styles` instead.\n@mixin mdc-card-without-ripple($query: mdc-feature-all()) {\n // postcss-bem-linter: define card\n\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n\n .mdc-card {\n @include mdc-card-shape-radius(medium, $query: $query);\n @include mdc-card-fill-color(surface, $query);\n @include mdc-elevation(1, $query: $query);\n\n @include mdc-feature-targets($feat-structure) {\n @include mdc-card-container-layout_;\n }\n }\n\n .mdc-card--outlined {\n @include mdc-elevation(0, $query: $query);\n @include mdc-card-outline($mdc-card-outline-color, $query: $query);\n }\n\n //\n // Media\n //\n\n .mdc-card__media {\n @include mdc-feature-targets($feat-structure) {\n position: relative; // Child element `__media-content` has `position: absolute`\n box-sizing: border-box;\n background-repeat: no-repeat;\n background-position: center;\n background-size: cover;\n }\n\n &::before {\n @include mdc-feature-targets($feat-structure) {\n display: block;\n content: \"\";\n }\n }\n }\n\n .mdc-card__media:first-child {\n @include mdc-feature-targets($feat-structure) {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n }\n }\n\n .mdc-card__media:last-child {\n @include mdc-feature-targets($feat-structure) {\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n }\n }\n\n .mdc-card__media--square {\n @include mdc-card-media-aspect-ratio(1, 1, $query);\n }\n\n .mdc-card__media--16-9 {\n @include mdc-card-media-aspect-ratio(16, 9, $query);\n }\n\n .mdc-card__media-content {\n @include mdc-feature-targets($feat-structure) {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n box-sizing: border-box;\n }\n }\n\n //\n // Primary action\n //\n\n .mdc-card__primary-action {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-card-container-layout_;\n\n position: relative; // Needed to prevent the ripple wash from overflowing the container in IE and Edge\n outline: none;\n color: inherit;\n text-decoration: none;\n cursor: pointer;\n overflow: hidden;\n }\n }\n\n .mdc-card__primary-action:first-child {\n @include mdc-feature-targets($feat-structure) {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n }\n }\n\n .mdc-card__primary-action:last-child {\n @include mdc-feature-targets($feat-structure) {\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n }\n }\n\n //\n // Action row\n //\n\n .mdc-card__actions {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-card-actions-layout_;\n\n min-height: 52px;\n padding: 8px;\n }\n }\n\n .mdc-card__actions--full-bleed {\n @include mdc-feature-targets($feat-structure) {\n padding: 0;\n }\n }\n\n .mdc-card__action-buttons,\n .mdc-card__action-icons {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-card-actions-layout_;\n }\n }\n\n .mdc-card__action-icons {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $mdc-card-action-icon-color);\n }\n\n @include mdc-feature-targets($feat-structure) {\n flex-grow: 1;\n justify-content: flex-end;\n }\n }\n\n .mdc-card__action-buttons + .mdc-card__action-icons {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-rtl-reflexive-box(margin, left, 16px);\n }\n }\n\n //\n // Action items\n //\n\n .mdc-card__action {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-card-actions-layout_(inline-flex);\n\n justify-content: center;\n cursor: pointer;\n user-select: none;\n }\n\n &:focus {\n @include mdc-feature-targets($feat-structure) {\n outline: none;\n }\n }\n }\n\n //\n // Action buttons\n //\n\n .mdc-card__action--button {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-rtl-reflexive-box(margin, right, 8px);\n\n padding: 0 8px;\n }\n\n &:last-child {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-rtl-reflexive-box(margin, right, 0);\n }\n }\n }\n\n .mdc-card__actions--full-bleed .mdc-card__action--button {\n @include mdc-feature-targets($feat-structure) {\n justify-content: space-between;\n width: 100%;\n height: auto;\n max-height: none;\n margin: 0;\n padding: 8px 16px;\n /* @noflip */\n text-align: left;\n }\n\n @include mdc-rtl {\n @include mdc-feature-targets($feat-structure) {\n /* @noflip */\n text-align: right;\n }\n }\n }\n\n //\n // Action icons\n //\n\n .mdc-card__action--icon {\n @include mdc-feature-targets($feat-structure) {\n // Icon buttons are taller than buttons, so we need to adjust their margins to prevent the action row from\n // expanding.\n margin: -6px 0;\n\n // Same padding as mdc-icon-button.\n padding: 12px;\n }\n }\n\n .mdc-card__action--icon:not(:disabled) {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $mdc-card-action-icon-color);\n }\n }\n\n // postcss-bem-linter: end\n}\n\n// This API is intended for use by frameworks that may want to separate the ripple-related styles from the other\n// card styles. It is recommended that most users use `mdc-card-core-styles` instead.\n@mixin mdc-card-ripple($query: mdc-feature-all()) {\n @include mdc-ripple-common($query);\n\n .mdc-card__primary-action {\n @include mdc-ripple-surface($query);\n @include mdc-ripple-radius-bounded($query: $query);\n @include mdc-states($query: $query);\n }\n}\n\n@mixin mdc-card-fill-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(background-color, $color);\n }\n}\n\n@mixin mdc-card-outline($color, $thickness: $mdc-card-outline-width, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n border-width: $thickness;\n border-style: solid;\n }\n\n @include mdc-feature-targets($feat-color) {\n border-color: mdc-theme-prop-value($color);\n }\n}\n\n@mixin mdc-card-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) {\n @include mdc-shape-radius($radius, $rtl-reflexive, $query: $query);\n}\n\n@mixin mdc-card-media-aspect-ratio($x, $y, $query: mdc-feature-all()) {\n $feat-structure: mdc-feature-create-target($query, structure);\n\n &::before {\n @include mdc-feature-targets($feat-structure) {\n // This clever trick brought to you by: http://www.mademyday.de/css-height-equals-width-with-pure-css.html\n margin-top: percentage($y / $x);\n }\n }\n}\n\n//\n// Private\n//\n\n@mixin mdc-card-container-layout_ {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n@mixin mdc-card-actions-layout_($display: flex) {\n display: $display;\n flex-direction: row;\n align-items: center;\n box-sizing: border-box;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-card/mdc-card.scss","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"./variables\";\n@import \"./functions\";\n\n@mixin mdc-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) {\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n // Even if $rtl-reflexive is true, only emit RTL styles if we can't easily tell that the given radius is symmetrical\n $needs-flip: $rtl-reflexive and length($radius) > 1;\n\n @if ($needs-flip) {\n /* @noflip */\n }\n\n border-radius: mdc-shape-prop-value($radius);\n\n @if ($needs-flip) {\n @include mdc-rtl {\n /* @noflip */\n border-radius: mdc-shape-flip-radius(mdc-shape-prop-value($radius));\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/shape/_mixins.scss","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"./variables\";\n@import \"./functions\";\n\n@mixin mdc-theme-core-styles($query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n :root {\n @include mdc-feature-targets($feat-color) {\n @each $style in map-keys($mdc-theme-property-values) {\n --mdc-theme-#{$style}: #{map-get($mdc-theme-property-values, $style)};\n }\n }\n }\n\n @each $style in map-keys($mdc-theme-property-values) {\n @if $style != \"background\" and $style != \"surface\" {\n .mdc-theme--#{$style} {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $style, true);\n }\n }\n } @else {\n .mdc-theme--#{$style} {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(background-color, $style);\n }\n }\n }\n }\n\n // CSS rules for using primary and secondary (plus light/dark variants) as background colors.\n @each $style in (\"primary\", \"secondary\") {\n .mdc-theme--#{$style}-bg {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(background-color, $style, true);\n }\n }\n }\n}\n\n// Applies the correct theme color style to the specified property.\n// $property is typically color or background-color, but can be any CSS property that accepts color values.\n// $style should be one of the map keys in $mdc-theme-property-values (_variables.scss), or a color value.\n// $edgeOptOut controls whether to feature-detect around Edge to avoid emitting CSS variables for it,\n// intended for use in cases where interactions with pseudo-element styles cause problems due to Edge bugs.\n@mixin mdc-theme-prop($property, $style, $important: false, $edgeOptOut: false) {\n @if mdc-theme-is-var-with-fallback_($style) {\n @if $important {\n #{$property}: mdc-theme-get-var-fallback_($style) !important;\n /* @alternate */\n #{$property}: mdc-theme-var_($style) !important;\n } @else {\n #{$property}: mdc-theme-get-var-fallback_($style);\n /* @alternate */\n #{$property}: mdc-theme-var_($style);\n }\n } @else if mdc-theme-is-valid-theme-prop-value_($style) {\n @if $important {\n #{$property}: $style !important;\n } @else {\n #{$property}: $style;\n }\n } @else {\n @if not map-has-key($mdc-theme-property-values, $style) {\n @error \"Invalid style: '#{$style}'. Choose one of: #{map-keys($mdc-theme-property-values)}\";\n }\n\n $value: map-get($mdc-theme-property-values, $style);\n\n @if $important {\n #{$property}: $value !important;\n\n @if $edgeOptOut {\n // stylelint-disable max-nesting-depth\n @at-root {\n // IE 11 doesn't understand this syntax and ignores the entire block.\n // Edge understands this syntax and skips the entire block to avoid a nasty :before/:after pseudo-element bug.\n // All other browsers apply the styles within the block.\n @supports not (-ms-ime-align: auto) {\n // stylelint-disable scss/selector-no-redundant-nesting-selector\n & {\n /* @alternate */\n #{$property}: var(--mdc-theme-#{$style}, $value) !important;\n }\n // stylelint-enable scss/selector-no-redundant-nesting-selector\n }\n }\n // stylelint-enable max-nesting-depth\n } @else {\n /* @alternate */\n #{$property}: var(--mdc-theme-#{$style}, $value) !important;\n }\n } @else {\n #{$property}: $value;\n\n @if $edgeOptOut {\n // stylelint-disable max-nesting-depth\n @at-root {\n // IE 11 doesn't understand this syntax and ignores the entire block.\n // Edge understands this syntax and skips the entire block to avoid a nasty :before/:after pseudo-element bug.\n // All other browsers apply the styles within the block.\n @supports not (-ms-ime-align: auto) {\n // stylelint-disable scss/selector-no-redundant-nesting-selector\n & {\n /* @alternate */\n #{$property}: var(--mdc-theme-#{$style}, $value);\n }\n // stylelint-enable scss/selector-no-redundant-nesting-selector\n }\n }\n // stylelint-enable max-nesting-depth\n } @else {\n /* @alternate */\n #{$property}: var(--mdc-theme-#{$style}, $value);\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/theme/_mixins.scss","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"@material/theme/variables\";\n@import \"./variables\";\n\n@mixin mdc-elevation-core-styles($query: mdc-feature-all()) {\n $feat-animation: mdc-feature-create-target($query, animation);\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @for $z-value from 0 through 24 {\n .mdc-elevation--z#{$z-value} {\n @include mdc-elevation($z-value, $query: $query);\n }\n }\n\n .mdc-elevation-transition {\n @include mdc-feature-targets($feat-animation) {\n transition: mdc-elevation-transition-value();\n }\n\n @include mdc-feature-targets($feat-structure) {\n will-change: $mdc-elevation-property;\n }\n }\n}\n\n// Applies the correct CSS rules to an element to give it the elevation specified by $z-value.\n// The $z-value must be between 0 and 24.\n// If $color has an alpha channel, it will be ignored and overridden. To increase the opacity of the shadow, use\n// $opacity-boost.\n@mixin mdc-elevation($z-value, $color: $mdc-elevation-baseline-color, $opacity-boost: 0, $query: mdc-feature-all()) {\n @if type-of($z-value) != number or not unitless($z-value) {\n @error \"$z-value must be a unitless number, but received '#{$z-value}'\";\n }\n\n @if $z-value < 0 or $z-value > 24 {\n @error \"$z-value must be between 0 and 24, but received '#{$z-value}'\";\n }\n\n $feat-color: mdc-feature-create-target($query, color);\n\n $color: mdc-theme-prop-value($color);\n\n $umbra-z-value: map-get($mdc-elevation-umbra-map, $z-value);\n $penumbra-z-value: map-get($mdc-elevation-penumbra-map, $z-value);\n $ambient-z-value: map-get($mdc-elevation-ambient-map, $z-value);\n\n $umbra-color: rgba($color, $mdc-elevation-umbra-opacity + $opacity-boost);\n $penumbra-color: rgba($color, $mdc-elevation-penumbra-opacity + $opacity-boost);\n $ambient-color: rgba($color, $mdc-elevation-ambient-opacity + $opacity-boost);\n\n @include mdc-feature-targets($feat-color) {\n box-shadow:\n #{\"#{$umbra-z-value} #{$umbra-color}\"},\n #{\"#{$penumbra-z-value} #{$penumbra-color}\"},\n #{$ambient-z-value} $ambient-color;\n }\n}\n\n// Returns a string that can be used as the value for a `transition` property for elevation.\n// Calling this function directly is useful in situations where a component needs to transition\n// more than one property.\n//\n// ```scss\n// .foo {\n// transition: mdc-elevation-transition-value(), opacity 100ms ease;\n// will-change: $mdc-elevation-property, opacity;\n// }\n// ```\n@function mdc-elevation-transition-value(\n $duration: $mdc-elevation-transition-duration,\n $easing: $mdc-elevation-transition-timing-function\n) {\n @return #{$mdc-elevation-property} #{$duration} #{$easing};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/elevation/_mixins.scss","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n// Creates a rule that will be applied when an MDC Web component is within the context of an RTL layout.\n//\n// Usage Example:\n//\n// ```scss\n// .mdc-foo {\n// position: absolute;\n// left: 0;\n//\n// @include mdc-rtl {\n// left: auto;\n// right: 0;\n// }\n//\n// &__bar {\n// margin-left: 4px;\n// @include mdc-rtl(\".mdc-foo\") {\n// margin-left: auto;\n// margin-right: 4px;\n// }\n// }\n// }\n//\n// .mdc-foo--mod {\n// padding-left: 4px;\n//\n// @include mdc-rtl {\n// padding-left: auto;\n// padding-right: 4px;\n// }\n// }\n// ```\n//\n// Note that this mixin works by checking for an ancestor element with `[dir=\"rtl\"]`.\n// As a result, nested `dir` values are not supported:\n//\n// ```html\n// \n// \n//
\n//
Styled incorrectly as RTL!
\n//
\n// \n// ```\n//\n// In the future, selectors such as the `:dir` pseudo-class (http://mdn.io/css/:dir) will help us mitigate this.\n@mixin mdc-rtl($root-selector: null) {\n @if ($root-selector) {\n @at-root {\n #{$root-selector}[dir=\"rtl\"] &,\n [dir=\"rtl\"] #{$root-selector} & {\n @content;\n }\n }\n } @else {\n [dir=\"rtl\"] &,\n &[dir=\"rtl\"] {\n @content;\n }\n }\n}\n\n// Takes a base box-model property name (`margin`, `border`, `padding`, etc.) along with a\n// default direction (`left` or `right`) and value, and emits rules which apply the given value to the\n// specified direction by default and the opposite direction in RTL.\n//\n// For example:\n//\n// ```scss\n// .mdc-foo {\n// @include mdc-rtl-reflexive-box(margin, left, 8px);\n// }\n// ```\n//\n// is equivalent to:\n//\n// ```scss\n// .mdc-foo {\n// margin-left: 8px;\n// margin-right: 0;\n//\n// @include mdc-rtl {\n// margin-left: 0;\n// margin-right: 8px;\n// }\n// }\n// ```\n//\n// whereas:\n//\n// ```scss\n// .mdc-foo {\n// @include mdc-rtl-reflexive-box(margin, right, 8px);\n// }\n// ```\n//\n// is equivalent to:\n//\n// ```scss\n// .mdc-foo {\n// margin-left: 0;\n// margin-right: 8px;\n//\n// @include mdc-rtl {\n// margin-left: 8px;\n// margin-right: 0;\n// }\n// }\n// ```\n//\n// You can also pass an optional 4th `$root-selector` argument which will be forwarded to `mdc-rtl`,\n// e.g. `@include mdc-rtl-reflexive-box(margin, left, 8px, \".mdc-component\")`.\n//\n// Note that this function will always zero out the original value in an RTL context.\n// If you're trying to flip the values, use `mdc-rtl-reflexive-property()` instead.\n@mixin mdc-rtl-reflexive-box($base-property, $default-direction, $value, $root-selector: null) {\n @if (index((right, left), $default-direction) == null) {\n @error \"Invalid default direction: '#{$default-direction}'. Please specifiy either 'right' or 'left'.\";\n }\n\n $left-value: $value;\n $right-value: 0;\n\n @if ($default-direction == right) {\n $left-value: 0;\n $right-value: $value;\n }\n\n @include mdc-rtl-reflexive-property($base-property, $left-value, $right-value, $root-selector);\n}\n\n// Takes a base property and emits rules that assign -left to and\n// -right to in a LTR context, and vice versa in a RTL context.\n// For example:\n//\n// ```scss\n// .mdc-foo {\n// @include mdc-rtl-reflexive-property(margin, auto, 12px);\n// }\n// ```\n//\n// is equivalent to:\n//\n// ```scss\n// .mdc-foo {\n// margin-left: auto;\n// margin-right: 12px;\n//\n// @include mdc-rtl {\n// margin-left: 12px;\n// margin-right: auto;\n// }\n// }\n// ```\n//\n// An optional 4th `$root-selector` argument can be given, which will be passed to `mdc-rtl`.\n@mixin mdc-rtl-reflexive-property($base-property, $left-value, $right-value, $root-selector: null) {\n $prop-left: #{$base-property}-left;\n $prop-right: #{$base-property}-right;\n\n @include mdc-rtl-reflexive($prop-left, $left-value, $prop-right, $right-value, $root-selector);\n}\n\n// Takes an argument specifying a horizontal position property (either \"left\" or \"right\") as well\n// as a value, and applies that value to the specified position in a LTR context, and flips it in a\n// RTL context. For example:\n//\n// ```scss\n// .mdc-foo {\n// @include mdc-rtl-reflexive-position(left, 0);\n// }\n// ```\n//\n// is equivalent to:\n//\n// ```scss\n// .mdc-foo {\n// left: 0;\n// right: initial;\n//\n// @include mdc-rtl {\n// left: initial;\n// right: 0;\n// }\n// }\n// ```\n//\n// An optional third $root-selector argument may also be given, which is passed to `mdc-rtl`.\n@mixin mdc-rtl-reflexive-position($position-property, $value, $root-selector: null) {\n @if (index((right, left), $position-property) == null) {\n @error \"Invalid position #{position-property}. Please specifiy either right or left\";\n }\n\n // TODO: \"initial\" is not supported in IE 11. https://caniuse.com/#feat=css-initial-value\n $left-value: $value;\n $right-value: initial;\n\n @if ($position-property == right) {\n $right-value: $value;\n $left-value: initial;\n }\n\n @include mdc-rtl-reflexive(left, $left-value, right, $right-value, $root-selector);\n}\n\n// Takes pair of properties with values as arguments and flips it in RTL context.\n// For example:\n//\n// ```scss\n// .mdc-foo {\n// @include mdc-rtl-reflexive(left, 2px, right, 5px);\n// }\n// ```\n//\n// is equivalent to:\n//\n// ```scss\n// .mdc-foo {\n// left: 2px;\n// right: 5px;\n//\n// @include mdc-rtl {\n// right: 2px;\n// left: 5px;\n// }\n// }\n// ```\n//\n// An optional fifth `$root-selector` argument may also be given, which is passed to `mdc-rtl`.\n@mixin mdc-rtl-reflexive(\n $left-property,\n $left-value,\n $right-property,\n $right-value,\n $root-selector: null\n) {\n /* @noflip */\n #{$left-property}: $left-value;\n /* @noflip */\n #{$right-property}: $right-value;\n\n @include mdc-rtl($root-selector) {\n /* @noflip */\n #{$left-property}: $right-value;\n /* @noflip */\n #{$right-property}: $left-value;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/rtl/_mixins.scss","//\n// Copyright 2016 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/animation/functions\";\n@import \"@material/animation/variables\";\n@import \"@material/base/mixins\";\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"@material/theme/mixins\";\n@import \"./functions\";\n@import \"./keyframes\";\n@import \"./variables\";\n\n@mixin mdc-ripple-core-styles($query: mdc-feature-all()) {\n // postcss-bem-linter: define ripple-surface\n\n $feat-structure: mdc-feature-create-target($query, structure);\n\n .mdc-ripple-surface {\n @include mdc-ripple-surface($query: $query);\n @include mdc-states($query: $query);\n @include mdc-ripple-radius-bounded($query: $query);\n\n @include mdc-feature-targets($feat-structure) {\n position: relative;\n outline: none;\n overflow: hidden;\n }\n\n &[data-mdc-ripple-is-unbounded] {\n @include mdc-ripple-radius-unbounded($query: $query);\n\n @include mdc-feature-targets($feat-structure) {\n overflow: visible;\n }\n }\n\n &--primary {\n @include mdc-states(primary, $query: $query);\n }\n\n &--accent {\n @include mdc-states(secondary, $query: $query);\n }\n }\n\n // postcss-bem-linter: end\n}\n\n@mixin mdc-ripple-common($query: mdc-feature-all()) {\n $feat-animation: mdc-feature-create-target($query, animation);\n $feat-structure: mdc-feature-create-target($query, structure);\n\n // Ensure that styles needed by any component using MDC Ripple are emitted, but only once.\n // (Every component using MDC Ripple imports these mixins, but doesn't necessarily import\n // mdc-ripple.scss.)\n @include mdc-feature-targets($feat-animation) {\n @include mdc-base-emit-once(\"mdc-ripple/common/animation\") {\n @include mdc-ripple-keyframes_;\n }\n }\n\n @include mdc-feature-targets($feat-structure) {\n @include mdc-base-emit-once(\"mdc-ripple/common/structure\") {\n // Styles used to detect buggy behavior of CSS custom properties in Edge.\n // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11495448/\n // This is included in _mixins.scss rather than mdc-ripple.scss so that it will be\n // present for other components which rely on ripple as well as mdc-ripple itself.\n .mdc-ripple-surface--test-edge-var-bug {\n --mdc-ripple-surface-test-edge-var: 1px solid #000;\n\n visibility: hidden;\n\n &::before {\n border: var(--mdc-ripple-surface-test-edge-var);\n }\n }\n }\n }\n}\n\n@mixin mdc-ripple-surface($query: mdc-feature-all()) {\n $feat-animation: mdc-feature-create-target($query, animation);\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n --mdc-ripple-fg-size: 0;\n --mdc-ripple-left: 0;\n --mdc-ripple-top: 0;\n --mdc-ripple-fg-scale: 1;\n --mdc-ripple-fg-translate-end: 0;\n --mdc-ripple-fg-translate-start: 0;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n will-change: transform, opacity;\n }\n\n &::before,\n &::after {\n @include mdc-feature-targets($feat-structure) {\n position: absolute;\n border-radius: 50%;\n opacity: 0;\n pointer-events: none;\n content: \"\";\n }\n }\n\n &::before {\n @include mdc-feature-targets($feat-animation) {\n // Also transition background-color to avoid unnatural color flashes when toggling activated/selected state\n transition:\n opacity $mdc-states-wash-duration linear,\n background-color $mdc-states-wash-duration linear;\n }\n\n @include mdc-feature-targets($feat-structure) {\n z-index: 1; // Ensure that the ripple wash for hover/focus states is displayed on top of positioned child elements\n }\n }\n\n // Common styles for upgraded surfaces (some of these depend on custom properties set via JS or other mixins)\n\n &.mdc-ripple-upgraded::before {\n @include mdc-feature-targets($feat-structure) {\n transform: scale(var(--mdc-ripple-fg-scale, 1));\n }\n }\n\n &.mdc-ripple-upgraded::after {\n @include mdc-feature-targets($feat-structure) {\n top: 0;\n /* @noflip */\n left: 0;\n transform: scale(0);\n transform-origin: center center;\n }\n }\n\n &.mdc-ripple-upgraded--unbounded::after {\n @include mdc-feature-targets($feat-structure) {\n top: var(--mdc-ripple-top, 0);\n /* @noflip */\n left: var(--mdc-ripple-left, 0);\n }\n }\n\n &.mdc-ripple-upgraded--foreground-activation::after {\n @include mdc-feature-targets($feat-animation) {\n animation:\n mdc-ripple-fg-radius-in $mdc-ripple-translate-duration forwards,\n mdc-ripple-fg-opacity-in $mdc-ripple-fade-in-duration forwards;\n }\n }\n\n &.mdc-ripple-upgraded--foreground-deactivation::after {\n @include mdc-feature-targets($feat-animation) {\n animation: mdc-ripple-fg-opacity-out $mdc-ripple-fade-out-duration;\n }\n\n @include mdc-feature-targets($feat-structure) {\n // Retain transform from mdc-ripple-fg-radius-in activation\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n }\n}\n\n@mixin mdc-states-base-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n &::before,\n &::after {\n @include mdc-feature-targets($feat-color) {\n @if alpha(mdc-theme-prop-value($color)) > 0 {\n @include mdc-theme-prop(background-color, $color, $edgeOptOut: true);\n } @else {\n // If a color with 0 alpha is specified, don't render the ripple pseudo-elements at all.\n // This avoids unnecessary transitions and overflow.\n content: none;\n }\n }\n }\n}\n\n@mixin mdc-states-hover-opacity($opacity, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n // Background wash styles, for both CSS-only and upgraded stateful surfaces\n &:hover::before {\n // Opacity falls under color because the chosen opacity is color-dependent in typical usage\n @include mdc-feature-targets($feat-color) {\n opacity: $opacity;\n }\n }\n}\n\n@mixin mdc-states-focus-opacity($opacity, $has-nested-focusable-element: false, $query: mdc-feature-all()) {\n $feat-animation: mdc-feature-create-target($query, animation);\n // Opacity falls under color because the chosen opacity is color-dependent in typical usage\n $feat-color: mdc-feature-create-target($query, color);\n\n // Focus overrides hover by reusing the ::before pseudo-element.\n // :focus-within generally works on non-MS browsers and matches when a *child* of the element has focus.\n // It is useful for cases where a component has a focusable element within the root node, e.g. text field,\n // but undesirable in general in case of nested stateful components.\n // We use a modifier class for JS-enabled surfaces to support all use cases in all browsers.\n $cssOnlyFocusSelector: if(\n $has-nested-focusable-element,\n \"&:not(.mdc-ripple-upgraded):focus::before, &:not(.mdc-ripple-upgraded):focus-within::before\",\n \"&:not(.mdc-ripple-upgraded):focus::before\"\n );\n\n #{$cssOnlyFocusSelector},\n &.mdc-ripple-upgraded--background-focused::before {\n // Note that this duration is only effective on focus, not blur\n @include mdc-feature-targets($feat-animation) {\n transition-duration: 75ms;\n }\n\n @include mdc-feature-targets($feat-color) {\n opacity: $opacity;\n }\n }\n}\n\n@mixin mdc-states-press-opacity($opacity, $query: mdc-feature-all()) {\n $feat-animation: mdc-feature-create-target($query, animation);\n $feat-color: mdc-feature-create-target($query, color);\n\n // Styles for non-upgraded (CSS-only) stateful surfaces\n\n &:not(.mdc-ripple-upgraded) {\n // Apply press additively by using the ::after pseudo-element\n &::after {\n @include mdc-feature-targets($feat-animation) {\n transition: opacity $mdc-ripple-fade-out-duration linear;\n }\n }\n\n &:active::after {\n @include mdc-feature-targets($feat-animation) {\n transition-duration: $mdc-ripple-fade-in-duration;\n }\n\n // Opacity falls under color because the chosen opacity is color-dependent in typical usage\n @include mdc-feature-targets($feat-color) {\n opacity: $opacity;\n }\n }\n }\n\n &.mdc-ripple-upgraded {\n @include mdc-feature-targets($feat-color) {\n --mdc-ripple-fg-opacity: #{$opacity};\n }\n }\n}\n\n// Simple mixin for base states which automatically selects opacity values based on whether the ink color is\n// light or dark.\n@mixin mdc-states(\n $color: mdc-theme-prop-value(on-surface),\n $has-nested-focusable-element: false,\n $query: mdc-feature-all()\n) {\n @include mdc-states-interactions_($color, $has-nested-focusable-element, 0, $query);\n}\n\n// Simple mixin for activated states which automatically selects opacity values based on whether the ink color is\n// light or dark.\n@mixin mdc-states-activated($color, $has-nested-focusable-element: false, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n $activated-opacity: mdc-states-opacity($color, activated);\n\n &--activated {\n // Stylelint seems to think that '&' qualifies as a type selector here?\n // stylelint-disable-next-line selector-max-type\n &::before {\n // Opacity falls under color because the chosen opacity is color-dependent.\n @include mdc-feature-targets($feat-color) {\n opacity: $activated-opacity;\n }\n }\n\n @include mdc-states-interactions_($color, $has-nested-focusable-element, $activated-opacity, $query);\n }\n}\n\n// Simple mixin for selected states which automatically selects opacity values based on whether the ink color is\n// light or dark.\n@mixin mdc-states-selected($color, $has-nested-focusable-element: false, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n $selected-opacity: mdc-states-opacity($color, selected);\n\n &--selected {\n // stylelint-disable-next-line selector-max-type\n &::before {\n // Opacity falls under color because the chosen opacity is color-dependent.\n @include mdc-feature-targets($feat-color) {\n opacity: $selected-opacity;\n }\n }\n\n @include mdc-states-interactions_($color, $has-nested-focusable-element, $selected-opacity, $query);\n }\n}\n\n@mixin mdc-ripple-radius-bounded($radius: 100%, $query: mdc-feature-all()) {\n $feat-struture: mdc-feature-create-target($query, structure);\n\n &::before,\n &::after {\n @include mdc-feature-targets($feat-struture) {\n top: calc(50% - #{$radius});\n /* @noflip */\n left: calc(50% - #{$radius});\n width: $radius * 2;\n height: $radius * 2;\n }\n }\n\n &.mdc-ripple-upgraded::after {\n @include mdc-feature-targets($feat-struture) {\n width: var(--mdc-ripple-fg-size, $radius);\n height: var(--mdc-ripple-fg-size, $radius);\n }\n }\n}\n\n@mixin mdc-ripple-radius-unbounded($radius: 100%, $query: mdc-feature-all()) {\n $feat-struture: mdc-feature-create-target($query, structure);\n\n &::before,\n &::after {\n @include mdc-feature-targets($feat-struture) {\n top: calc(50% - #{$radius / 2});\n /* @noflip */\n left: calc(50% - #{$radius / 2});\n width: $radius;\n height: $radius;\n }\n }\n\n &.mdc-ripple-upgraded::before,\n &.mdc-ripple-upgraded::after {\n @include mdc-feature-targets($feat-struture) {\n top: var(--mdc-ripple-top, calc(50% - #{$radius / 2}));\n /* @noflip */\n left: var(--mdc-ripple-left, calc(50% - #{$radius / 2}));\n width: var(--mdc-ripple-fg-size, $radius);\n height: var(--mdc-ripple-fg-size, $radius);\n }\n }\n\n &.mdc-ripple-upgraded::after {\n @include mdc-feature-targets($feat-struture) {\n width: var(--mdc-ripple-fg-size, $radius);\n height: var(--mdc-ripple-fg-size, $radius);\n }\n }\n}\n\n@mixin mdc-states-interactions_(\n $color,\n $has-nested-focusable-element,\n $opacity-modifier: 0,\n $query: mdc-feature-all()\n) {\n @include mdc-states-base-color($color, $query);\n @include mdc-states-hover-opacity(mdc-states-opacity($color, hover) + $opacity-modifier, $query);\n @include mdc-states-focus-opacity(\n mdc-states-opacity($color, focus) + $opacity-modifier,\n $has-nested-focusable-element,\n $query\n );\n @include mdc-states-press-opacity(mdc-states-opacity($color, press) + $opacity-modifier, $query);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/ripple/_mixins.scss","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n.mdc-tab-scroller {\n overflow-y: hidden;\n}\n\n.mdc-tab-scroller__test {\n position: absolute;\n top: -9999px;\n width: 100px;\n height: 100px;\n overflow-x: scroll;\n}\n\n.mdc-tab-scroller__scroll-area {\n -webkit-overflow-scrolling: touch;\n display: flex;\n overflow-x: hidden;\n}\n\n.mdc-tab-scroller__scroll-area::-webkit-scrollbar,\n.mdc-tab-scroller__test::-webkit-scrollbar {\n display: none;\n}\n\n.mdc-tab-scroller__scroll-area--scroll {\n overflow-x: scroll;\n}\n\n.mdc-tab-scroller__scroll-content {\n position: relative;\n display: flex;\n flex: 1 0 auto;\n -webkit-transform: none;\n transform: none;\n will-change: transform;\n}\n\n.mdc-tab-scroller--align-start .mdc-tab-scroller__scroll-content {\n justify-content: flex-start;\n}\n\n.mdc-tab-scroller--align-end .mdc-tab-scroller__scroll-content {\n justify-content: flex-end;\n}\n\n.mdc-tab-scroller--align-center .mdc-tab-scroller__scroll-content {\n justify-content: center;\n}\n\n.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-area {\n -webkit-overflow-scrolling: auto;\n}\n\n.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-content {\n transition: 250ms -webkit-transform cubic-bezier(0.4, 0, 0.2, 1);\n transition: 250ms transform cubic-bezier(0.4, 0, 0.2, 1);\n transition: 250ms transform cubic-bezier(0.4, 0, 0.2, 1), 250ms -webkit-transform cubic-bezier(0.4, 0, 0.2, 1);\n}\n/*# sourceMappingURL=mdc.tab-scroller.css.map*/","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n@import \"@material/animation/variables\";\n@import \"@material/tab/mixins\";\n\n// postcss-bem-linter: define tab-scroller\n.mdc-tab-scroller {\n overflow-y: hidden;\n}\n\n// Selector for test element used to feature-detect horizontal scrollbar height\n.mdc-tab-scroller__test {\n position: absolute;\n top: -9999px;\n width: 100px;\n height: 100px;\n overflow-x: scroll;\n}\n\n.mdc-tab-scroller__scroll-area {\n -webkit-overflow-scrolling: touch;\n display: flex;\n overflow-x: hidden;\n}\n\n.mdc-tab-scroller__scroll-area,\n.mdc-tab-scroller__test {\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n// This modifier class will be added in JS after computing the OS scrollbar size in order to hide the scrollbar.\n.mdc-tab-scroller__scroll-area--scroll {\n overflow-x: scroll;\n}\n\n.mdc-tab-scroller__scroll-content {\n @include mdc-tab-parent-positioning;\n\n display: flex;\n flex: 1 0 auto;\n transform: none;\n will-change: transform;\n}\n\n.mdc-tab-scroller--align-start .mdc-tab-scroller__scroll-content {\n justify-content: flex-start;\n}\n\n.mdc-tab-scroller--align-end .mdc-tab-scroller__scroll-content {\n justify-content: flex-end;\n}\n\n.mdc-tab-scroller--align-center .mdc-tab-scroller__scroll-content {\n justify-content: center;\n}\n\n.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-area {\n -webkit-overflow-scrolling: auto;\n}\n\n.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-content {\n transition: 250ms transform $mdc-animation-standard-curve-timing-function;\n}\n\n// postcss-bem-linter: end\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/mdc-tab-scroller.scss","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/ripple/mixins\";\n@import \"@material/theme/mixins\";\n\n// Public mixins\n\n@mixin mdc-tab-text-label-color($color) {\n .mdc-tab__text-label {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n@mixin mdc-tab-icon-color($color) {\n .mdc-tab__icon {\n @include mdc-theme-prop(color, $color);\n\n fill: currentColor;\n }\n}\n\n@mixin mdc-tab-states-color($color) {\n .mdc-tab__ripple {\n @include mdc-states($color);\n }\n}\n\n@mixin mdc-tab-ink-color($color) {\n @include mdc-tab-icon-color($color);\n @include mdc-tab-states-color($color);\n @include mdc-tab-text-label-color($color);\n}\n\n@mixin mdc-tab-active-text-label-color($color) {\n &.mdc-tab--active {\n @include mdc-tab-text-label-color($color);\n }\n}\n\n@mixin mdc-tab-active-icon-color($color) {\n &.mdc-tab--active {\n @include mdc-tab-icon-color($color);\n }\n}\n\n@mixin mdc-tab-parent-positioning {\n position: relative;\n}\n\n@mixin mdc-tab-fixed-width($width) {\n flex: 0 1 $width;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/tab/_mixins.scss","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n.mdc-tab-indicator {\n display: flex;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 1;\n}\n.mdc-tab-indicator > .mdc-tab-indicator__content--underline {\n background-color: #6200ee;\n /* @alternate */\n background-color: var(--mdc-theme-primary, #6200ee);\n}\n.mdc-tab-indicator > .mdc-tab-indicator__content--underline {\n height: 2px;\n}\n.mdc-tab-indicator > .mdc-tab-indicator__content--icon {\n color: #018786;\n /* @alternate */\n color: var(--mdc-theme-secondary, #018786);\n}\n.mdc-tab-indicator > .mdc-tab-indicator__content--icon {\n height: 34px;\n font-size: 34px;\n}\n\n.mdc-tab-indicator__content {\n -webkit-transform-origin: left;\n transform-origin: left;\n opacity: 0;\n}\n\n.mdc-tab-indicator__content--underline {\n align-self: flex-end;\n width: 100%;\n}\n\n.mdc-tab-indicator__content--icon {\n align-self: center;\n margin: 0 auto;\n}\n\n.mdc-tab-indicator--active > .mdc-tab-indicator__content {\n opacity: 1;\n}\n\n.mdc-tab-indicator > .mdc-tab-indicator__content {\n transition: 250ms -webkit-transform cubic-bezier(0.4, 0, 0.2, 1);\n transition: 250ms transform cubic-bezier(0.4, 0, 0.2, 1);\n transition: 250ms transform cubic-bezier(0.4, 0, 0.2, 1), 250ms -webkit-transform cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.mdc-tab-indicator--no-transition > .mdc-tab-indicator__content {\n transition: none;\n}\n\n.mdc-tab-indicator--fade > .mdc-tab-indicator__content {\n transition: 150ms opacity linear;\n}\n\n.mdc-tab-indicator--active.mdc-tab-indicator--fade > .mdc-tab-indicator__content {\n transition-delay: 100ms;\n}\n/*# sourceMappingURL=mdc.tab-indicator.css.map*/","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n@import \"@material/animation/variables\";\n@import \"./mixins\";\n\n// postcss-bem-linter: define tab-indicator\n\n.mdc-tab-indicator {\n @include mdc-tab-indicator-underline-color(primary);\n @include mdc-tab-indicator-underline-height(2px);\n @include mdc-tab-indicator-icon-color(secondary);\n @include mdc-tab-indicator-icon-height(34px);\n\n display: flex;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 1;\n}\n\n.mdc-tab-indicator__content {\n transform-origin: left;\n opacity: 0;\n}\n\n.mdc-tab-indicator__content--underline {\n align-self: flex-end;\n width: 100%;\n}\n\n.mdc-tab-indicator__content--icon {\n align-self: center;\n margin: 0 auto;\n}\n\n.mdc-tab-indicator--active > .mdc-tab-indicator__content {\n opacity: 1;\n}\n\n// Slide by default\n.mdc-tab-indicator > .mdc-tab-indicator__content {\n transition: 250ms transform $mdc-animation-standard-curve-timing-function;\n}\n\n// --no-transition is applied in cases where styles need to be applied immediately to set up a transition\n.mdc-tab-indicator--no-transition > .mdc-tab-indicator__content {\n transition: none;\n}\n\n.mdc-tab-indicator--fade > .mdc-tab-indicator__content {\n transition: 150ms opacity linear;\n}\n\n// postcss-bem-linter: ignore\n.mdc-tab-indicator--active.mdc-tab-indicator--fade > .mdc-tab-indicator__content {\n transition-delay: 100ms;\n}\n\n// postcss-bem-linter: end\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/mdc-tab-indicator.scss","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n@import \"@material/theme/mixins\";\n\n@mixin mdc-tab-indicator-surface {\n position: relative;\n}\n\n@mixin mdc-tab-indicator-underline-color($color) {\n > .mdc-tab-indicator__content--underline {\n @include mdc-theme-prop(background-color, $color);\n }\n}\n\n@mixin mdc-tab-indicator-underline-height($height) {\n > .mdc-tab-indicator__content--underline {\n height: $height;\n }\n}\n\n@mixin mdc-tab-indicator-underline-top-corner-radius($radius) {\n > .mdc-tab-indicator__content--underline {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin mdc-tab-indicator-icon-color($color) {\n > .mdc-tab-indicator__content--icon {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n@mixin mdc-tab-indicator-icon-height($height) {\n > .mdc-tab-indicator__content--icon {\n height: $height;\n font-size: $height;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/_mixins.scss","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n.mdc-tab-bar {\n width: 100%;\n}\n/*# sourceMappingURL=mdc.tab-bar.css.map*/","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n@import \"./mixins\";\n\n// postcss-bem-linter: define tab-bar\n\n.mdc-tab-bar {\n @include mdc-tab-bar-width(100%);\n}\n\n// postcss-bem-linter: end\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/mdc-tab-bar.scss","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n@mixin mdc-tab-bar-width($width) {\n width: $width;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/_mixins.scss","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n@-webkit-keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n@keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n@keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n.mdc-ripple-surface--test-edge-var-bug {\n --mdc-ripple-surface-test-edge-var: 1px solid #000;\n visibility: hidden;\n}\n.mdc-ripple-surface--test-edge-var-bug::before {\n border: var(--mdc-ripple-surface-test-edge-var);\n}\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n.mdc-tab {\n position: relative;\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.875rem;\n line-height: 2.25rem;\n font-weight: 500;\n letter-spacing: 0.0892857143em;\n text-decoration: none;\n text-transform: uppercase;\n display: flex;\n flex: 1 0 auto;\n justify-content: center;\n box-sizing: border-box;\n height: 48px;\n padding: 0 24px;\n border: none;\n outline: none;\n background: none;\n text-align: center;\n white-space: nowrap;\n cursor: pointer;\n -webkit-appearance: none;\n z-index: 1;\n}\n.mdc-tab .mdc-tab__text-label {\n color: #000;\n /* @alternate */\n color: var(--mdc-theme-on-surface, #000);\n}\n.mdc-tab .mdc-tab__icon {\n color: #000;\n /* @alternate */\n color: var(--mdc-theme-on-surface, #000);\n fill: currentColor;\n}\n.mdc-tab::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n\n.mdc-tab--min-width {\n flex: 0 1 auto;\n}\n\n.mdc-tab__ripple {\n --mdc-ripple-fg-size: 0;\n --mdc-ripple-left: 0;\n --mdc-ripple-top: 0;\n --mdc-ripple-fg-scale: 1;\n --mdc-ripple-fg-translate-end: 0;\n --mdc-ripple-fg-translate-start: 0;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n will-change: transform, opacity;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n.mdc-tab__ripple::before, .mdc-tab__ripple::after {\n position: absolute;\n border-radius: 50%;\n opacity: 0;\n pointer-events: none;\n content: \"\";\n}\n.mdc-tab__ripple::before {\n transition: opacity 15ms linear, background-color 15ms linear;\n z-index: 1;\n}\n.mdc-tab__ripple.mdc-ripple-upgraded::before {\n -webkit-transform: scale(var(--mdc-ripple-fg-scale, 1));\n transform: scale(var(--mdc-ripple-fg-scale, 1));\n}\n.mdc-tab__ripple.mdc-ripple-upgraded::after {\n top: 0;\n /* @noflip */\n left: 0;\n -webkit-transform: scale(0);\n transform: scale(0);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n.mdc-tab__ripple.mdc-ripple-upgraded--unbounded::after {\n top: var(--mdc-ripple-top, 0);\n /* @noflip */\n left: var(--mdc-ripple-left, 0);\n}\n.mdc-tab__ripple.mdc-ripple-upgraded--foreground-activation::after {\n -webkit-animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n}\n.mdc-tab__ripple.mdc-ripple-upgraded--foreground-deactivation::after {\n -webkit-animation: mdc-ripple-fg-opacity-out 150ms;\n animation: mdc-ripple-fg-opacity-out 150ms;\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n}\n.mdc-tab__ripple::before, .mdc-tab__ripple::after {\n top: calc(50% - 100%);\n /* @noflip */\n left: calc(50% - 100%);\n width: 200%;\n height: 200%;\n}\n.mdc-tab__ripple.mdc-ripple-upgraded::after {\n width: var(--mdc-ripple-fg-size, 100%);\n height: var(--mdc-ripple-fg-size, 100%);\n}\n.mdc-tab__ripple::before, .mdc-tab__ripple::after {\n background-color: #6200ee;\n}\n@supports not (-ms-ime-align: auto) {\n .mdc-tab__ripple::before, .mdc-tab__ripple::after {\n /* @alternate */\n background-color: var(--mdc-theme-primary, #6200ee);\n }\n}\n.mdc-tab__ripple:hover::before {\n opacity: 0.04;\n}\n.mdc-tab__ripple:not(.mdc-ripple-upgraded):focus::before, .mdc-tab__ripple.mdc-ripple-upgraded--background-focused::before {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n.mdc-tab__ripple:not(.mdc-ripple-upgraded)::after {\n transition: opacity 150ms linear;\n}\n.mdc-tab__ripple:not(.mdc-ripple-upgraded):active::after {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n.mdc-tab__ripple.mdc-ripple-upgraded {\n --mdc-ripple-fg-opacity: 0.12;\n}\n\n.mdc-tab__content {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: inherit;\n pointer-events: none;\n}\n\n.mdc-tab__text-label,\n.mdc-tab__icon {\n transition: 150ms color linear, 150ms opacity linear;\n z-index: 2;\n}\n\n.mdc-tab__text-label {\n display: inline-block;\n opacity: 0.6;\n line-height: 1;\n}\n\n.mdc-tab__icon {\n width: 24px;\n height: 24px;\n opacity: 0.54;\n font-size: 24px;\n}\n\n.mdc-tab--stacked {\n height: 72px;\n}\n\n.mdc-tab--stacked .mdc-tab__content {\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n}\n\n.mdc-tab--stacked .mdc-tab__icon {\n padding-top: 12px;\n}\n\n.mdc-tab--stacked .mdc-tab__text-label {\n padding-bottom: 16px;\n}\n\n.mdc-tab--active .mdc-tab__text-label {\n color: #6200ee;\n /* @alternate */\n color: var(--mdc-theme-primary, #6200ee);\n}\n.mdc-tab--active .mdc-tab__icon {\n color: #6200ee;\n /* @alternate */\n color: var(--mdc-theme-primary, #6200ee);\n fill: currentColor;\n}\n.mdc-tab--active .mdc-tab__text-label,\n.mdc-tab--active .mdc-tab__icon {\n transition-delay: 100ms;\n opacity: 1;\n}\n\n.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon + .mdc-tab__text-label {\n /* @noflip */\n padding-left: 8px;\n /* @noflip */\n padding-right: 0;\n}\n[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon + .mdc-tab__text-label, .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon + .mdc-tab__text-label[dir=rtl] {\n /* @noflip */\n padding-left: 0;\n /* @noflip */\n padding-right: 8px;\n}\n/*# sourceMappingURL=mdc.tab.css.map*/","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"./keyframes\";\n@import \"./mixins\";\n@import \"./variables\";\n@import \"@material/animation/variables\";\n@import \"@material/line-ripple/mdc-line-ripple\";\n@import \"@material/notched-outline/mdc-notched-outline\";\n@import \"@material/floating-label/mdc-floating-label\";\n@import \"@material/typography/mixins\";\n@import \"@material/ripple/common\";\n@import \"@material/ripple/mixins\";\n@import \"@material/rtl/mixins\";\n@import \"./icon/mdc-select-icon\";\n@import \"./helper-text/mdc-select-helper-text\";\n@import \"./helper-text/mixins\";\n\n// postcss-bem-linter: define select\n.mdc-select {\n @include mdc-select-container-fill-color($mdc-select-fill-color);\n @include mdc-ripple-surface;\n @include mdc-ripple-radius-bounded;\n // Select intentionally omits press ripple, so each state needs to be specified individually.\n @include mdc-states-base-color($mdc-select-ink-color);\n @include mdc-states-hover-opacity(mdc-states-opacity($mdc-select-ink-color, hover));\n @include mdc-states-focus-opacity(mdc-states-opacity($mdc-select-ink-color, focus));\n @include mdc-select-ink-color($mdc-select-ink-color);\n @include mdc-select-label-color($mdc-select-label-color);\n @include mdc-select-bottom-line-color($mdc-select-bottom-line-idle-color);\n @include mdc-select-helper-text-color($mdc-select-helper-text-color);\n @include mdc-select-shape-radius(small);\n\n // Focused state colors\n @include mdc-select-focused-bottom-line-color(primary);\n @include mdc-select-focused-label-color($mdc-select-focused-label-color);\n\n // Hover state colors\n @include mdc-select-hover-bottom-line-color($mdc-select-bottom-line-hover-color);\n @include mdc-floating-label-float-position($mdc-select-label-position-y);\n @include mdc-select-floating-label_;\n\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n height: $mdc-select-height;\n overflow: hidden;\n /* @alternate */\n will-change: opacity, transform, color;\n\n &__dropdown-icon {\n @include mdc-select-dd-arrow-svg-bg_($mdc-select-dropdown-color, $mdc-select-dropdown-opacity);\n @include mdc-rtl-reflexive(left, auto, right, 8px);\n\n position: absolute;\n bottom: 16px;\n width: 24px;\n height: 24px;\n transition: transform $mdc-select-dropdown-transition-duration $mdc-animation-standard-curve-timing-function;\n pointer-events: none;\n\n .mdc-select--focused & {\n @include mdc-select-dd-arrow-svg-bg_(mdc-theme-prop-value(primary), 1);\n\n transform: rotate(180deg) translateY(-5px);\n transition: transform $mdc-select-dropdown-transition-duration $mdc-animation-standard-curve-timing-function;\n }\n }\n\n &__native-control {\n padding-top: 20px;\n }\n\n @include mdc-select-focused-line-ripple_ {\n &::after {\n transform: scale(1, 2);\n opacity: 1;\n }\n }\n}\n\n@include mdc-select-helper-text_;\n@include mdc-select-text-and-control_();\n\n.mdc-select--outlined {\n @include mdc-select-outlined_;\n}\n\n.mdc-select--invalid {\n @include mdc-select-label-color($mdc-select-error-color);\n @include mdc-select-bottom-line-color($mdc-select-error-color);\n @include mdc-select-focused-bottom-line-color($mdc-select-error-color);\n @include mdc-select-focused-label-color($mdc-select-error-color);\n @include mdc-select-helper-text-validation-color($mdc-select-error-color);\n\n // Hover state colors\n @include mdc-select-hover-bottom-line-color($mdc-select-error-color);\n\n &.mdc-select--outlined {\n @include mdc-select-outline-color($mdc-select-error-color);\n @include mdc-select-hover-outline-color($mdc-select-error-color);\n @include mdc-select-focused-outline-color($mdc-select-error-color);\n }\n\n .mdc-select__dropdown-icon {\n @include mdc-select-dd-arrow-svg-bg_($mdc-select-error-color, 1);\n }\n\n // stylelint-disable-next-line plugin/selector-bem-pattern\n + .mdc-select-helper-text--validation-msg {\n opacity: 1;\n }\n}\n\n.mdc-select--required {\n // stylelint-disable-next-line plugin/selector-bem-pattern\n .mdc-floating-label::after {\n content: \"*\";\n }\n}\n\n.mdc-select--disabled {\n @include mdc-select-disabled_;\n}\n\n.mdc-select--with-leading-icon {\n @include mdc-select-with-leading-icon_;\n}\n\n.mdc-select__menu .mdc-list .mdc-list-item--selected {\n @include mdc-theme-prop(color, on-surface);\n @include mdc-states(on-surface);\n}\n\n@include mdc-floating-label-shake-keyframes(\n select-outlined-leading-icon,\n $mdc-select-outlined-label-position-y,\n $mdc-select-outlined-with-leading-icon-label-position-x\n);\n@include mdc-floating-label-shake-keyframes(\n select-outlined-leading-icon-rtl,\n $mdc-select-outlined-label-position-y,\n -$mdc-select-outlined-with-leading-icon-label-position-x\n);\n\n\n\n// WEBPACK FOOTER //\n// ./stdin","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n@import \"@material/theme/mixins\";\n\n@mixin mdc-tab-indicator-surface {\n position: relative;\n}\n\n@mixin mdc-tab-indicator-underline-color($color) {\n > .mdc-tab-indicator__content--underline {\n @include mdc-theme-prop(background-color, $color);\n }\n}\n\n@mixin mdc-tab-indicator-underline-height($height) {\n > .mdc-tab-indicator__content--underline {\n height: $height;\n }\n}\n\n@mixin mdc-tab-indicator-underline-top-corner-radius($radius) {\n > .mdc-tab-indicator__content--underline {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin mdc-tab-indicator-icon-color($color) {\n > .mdc-tab-indicator__content--icon {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n@mixin mdc-tab-indicator-icon-height($height) {\n > .mdc-tab-indicator__content--icon {\n height: $height;\n font-size: $height;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/tab-indicator/_mixins.scss","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"./variables\";\n\n@mixin mdc-typography-core-styles($query: mdc-feature-all()) {\n .mdc-typography {\n @include mdc-typography-base($query: $query);\n }\n\n @each $style in map-keys($mdc-typography-styles) {\n .mdc-typography--#{$style} {\n @include mdc-typography($style, $query: $query);\n }\n }\n}\n\n@mixin mdc-typography-base($query: mdc-feature-all()) {\n $feat-typography: mdc-feature-create-target($query, typography);\n\n @include mdc-feature-targets($feat-typography) {\n @each $key, $value in $mdc-typography-base {\n #{$key}: $value;\n }\n }\n}\n\n@mixin mdc-typography($style, $query: mdc-feature-all()) {\n $feat-typography: mdc-feature-create-target($query, typography);\n $style-props: map-get($mdc-typography-styles, $style);\n\n @if not map-has-key($mdc-typography-styles, $style) {\n @error \"Invalid style specified! #{$style} doesn't exist. Choose one of #{map-keys($mdc-typography-styles)}\";\n }\n\n @include mdc-feature-targets($feat-typography) {\n @each $key, $value in $style-props {\n #{$key}: $value;\n }\n }\n}\n\n// Element must be `display: block` or `display: inline-block` for this to work.\n@mixin mdc-typography-overflow-ellipsis($query: mdc-feature-all()) {\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n}\n\n@mixin mdc-typography-baseline-top($distance, $query: mdc-feature-all()) {\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n }\n\n &::before {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-typography-baseline-strut_($distance);\n\n vertical-align: 0;\n }\n }\n}\n\n@mixin mdc-typography-baseline-bottom($distance, $query: mdc-feature-all()) {\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n margin-bottom: -1 * $distance;\n }\n\n &::after {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-typography-baseline-strut_($distance);\n\n vertical-align: -1 * $distance;\n }\n }\n}\n\n@mixin mdc-typography-baseline-strut_($distance) {\n display: inline-block;\n width: 0;\n height: $distance;\n content: \"\";\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/typography/_mixins.scss","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/ripple/mixins\";\n@import \"@material/theme/mixins\";\n\n// Public mixins\n\n@mixin mdc-tab-text-label-color($color) {\n .mdc-tab__text-label {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n@mixin mdc-tab-icon-color($color) {\n .mdc-tab__icon {\n @include mdc-theme-prop(color, $color);\n\n fill: currentColor;\n }\n}\n\n@mixin mdc-tab-states-color($color) {\n .mdc-tab__ripple {\n @include mdc-states($color);\n }\n}\n\n@mixin mdc-tab-ink-color($color) {\n @include mdc-tab-icon-color($color);\n @include mdc-tab-states-color($color);\n @include mdc-tab-text-label-color($color);\n}\n\n@mixin mdc-tab-active-text-label-color($color) {\n &.mdc-tab--active {\n @include mdc-tab-text-label-color($color);\n }\n}\n\n@mixin mdc-tab-active-icon-color($color) {\n &.mdc-tab--active {\n @include mdc-tab-icon-color($color);\n }\n}\n\n@mixin mdc-tab-parent-positioning {\n position: relative;\n}\n\n@mixin mdc-tab-fixed-width($width) {\n flex: 0 1 $width;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab/_mixins.scss","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n.mdc-typography {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n.mdc-typography--headline1 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 6rem;\n line-height: 6rem;\n font-weight: 300;\n letter-spacing: -0.015625em;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--headline2 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 3.75rem;\n line-height: 3.75rem;\n font-weight: 300;\n letter-spacing: -0.0083333333em;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--headline3 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 3rem;\n line-height: 3.125rem;\n font-weight: 400;\n letter-spacing: normal;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--headline4 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 2.125rem;\n line-height: 2.5rem;\n font-weight: 400;\n letter-spacing: 0.0073529412em;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--headline5 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 1.5rem;\n line-height: 2rem;\n font-weight: 400;\n letter-spacing: normal;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--headline6 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 1.25rem;\n line-height: 2rem;\n font-weight: 500;\n letter-spacing: 0.0125em;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--subtitle1 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 1rem;\n line-height: 1.75rem;\n font-weight: 400;\n letter-spacing: 0.009375em;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--subtitle2 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.875rem;\n line-height: 1.375rem;\n font-weight: 500;\n letter-spacing: 0.0071428571em;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--body1 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 1rem;\n line-height: 1.5rem;\n font-weight: 400;\n letter-spacing: 0.03125em;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--body2 {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 400;\n letter-spacing: 0.0178571429em;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--caption {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.75rem;\n line-height: 1.25rem;\n font-weight: 400;\n letter-spacing: 0.0333333333em;\n text-decoration: inherit;\n text-transform: inherit;\n}\n\n.mdc-typography--button {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.875rem;\n line-height: 2.25rem;\n font-weight: 500;\n letter-spacing: 0.0892857143em;\n text-decoration: none;\n text-transform: uppercase;\n}\n\n.mdc-typography--overline {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.75rem;\n line-height: 2rem;\n font-weight: 500;\n letter-spacing: 0.1666666667em;\n text-decoration: none;\n text-transform: uppercase;\n}\n/*# sourceMappingURL=mdc.typography.css.map*/","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"./variables\";\n\n@mixin mdc-typography-core-styles($query: mdc-feature-all()) {\n .mdc-typography {\n @include mdc-typography-base($query: $query);\n }\n\n @each $style in map-keys($mdc-typography-styles) {\n .mdc-typography--#{$style} {\n @include mdc-typography($style, $query: $query);\n }\n }\n}\n\n@mixin mdc-typography-base($query: mdc-feature-all()) {\n $feat-typography: mdc-feature-create-target($query, typography);\n\n @include mdc-feature-targets($feat-typography) {\n @each $key, $value in $mdc-typography-base {\n #{$key}: $value;\n }\n }\n}\n\n@mixin mdc-typography($style, $query: mdc-feature-all()) {\n $feat-typography: mdc-feature-create-target($query, typography);\n $style-props: map-get($mdc-typography-styles, $style);\n\n @if not map-has-key($mdc-typography-styles, $style) {\n @error \"Invalid style specified! #{$style} doesn't exist. Choose one of #{map-keys($mdc-typography-styles)}\";\n }\n\n @include mdc-feature-targets($feat-typography) {\n @each $key, $value in $style-props {\n #{$key}: $value;\n }\n }\n}\n\n// Element must be `display: block` or `display: inline-block` for this to work.\n@mixin mdc-typography-overflow-ellipsis($query: mdc-feature-all()) {\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n}\n\n@mixin mdc-typography-baseline-top($distance, $query: mdc-feature-all()) {\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n }\n\n &::before {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-typography-baseline-strut_($distance);\n\n vertical-align: 0;\n }\n }\n}\n\n@mixin mdc-typography-baseline-bottom($distance, $query: mdc-feature-all()) {\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n margin-bottom: -1 * $distance;\n }\n\n &::after {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-typography-baseline-strut_($distance);\n\n vertical-align: -1 * $distance;\n }\n }\n}\n\n@mixin mdc-typography-baseline-strut_($distance) {\n display: inline-block;\n width: 0;\n height: $distance;\n content: \"\";\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-typography/mdc-typography.scss","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n@-webkit-keyframes mdc-select-float-native-control {\n 0% {\n -webkit-transform: translateY(8px);\n transform: translateY(8px);\n opacity: 0;\n }\n 100% {\n -webkit-transform: translateY(0);\n transform: translateY(0);\n opacity: 1;\n }\n}\n@keyframes mdc-select-float-native-control {\n 0% {\n -webkit-transform: translateY(8px);\n transform: translateY(8px);\n opacity: 0;\n }\n 100% {\n -webkit-transform: translateY(0);\n transform: translateY(0);\n opacity: 1;\n }\n}\n.mdc-line-ripple {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 2px;\n -webkit-transform: scaleX(0);\n transform: scaleX(0);\n transition: opacity 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);\n transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1), opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);\n transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1), opacity 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);\n opacity: 0;\n z-index: 2;\n}\n\n.mdc-line-ripple--active {\n -webkit-transform: scaleX(1);\n transform: scaleX(1);\n opacity: 1;\n}\n\n.mdc-line-ripple--deactivating {\n opacity: 0;\n}\n\n.mdc-notched-outline {\n display: flex;\n position: absolute;\n right: 0;\n left: 0;\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n height: 100%;\n /* @noflip */\n text-align: left;\n pointer-events: none;\n}\n[dir=rtl] .mdc-notched-outline, .mdc-notched-outline[dir=rtl] {\n /* @noflip */\n text-align: right;\n}\n.mdc-notched-outline__leading, .mdc-notched-outline__notch, .mdc-notched-outline__trailing {\n box-sizing: border-box;\n height: 100%;\n transition: border 150ms cubic-bezier(0.4, 0, 0.2, 1);\n border-top: 1px solid;\n border-bottom: 1px solid;\n pointer-events: none;\n}\n.mdc-notched-outline__leading {\n /* @noflip */\n border-left: 1px solid;\n /* @noflip */\n border-right: none;\n width: 12px;\n}\n[dir=rtl] .mdc-notched-outline__leading, .mdc-notched-outline__leading[dir=rtl] {\n /* @noflip */\n border-left: none;\n /* @noflip */\n border-right: 1px solid;\n}\n.mdc-notched-outline__trailing {\n /* @noflip */\n border-left: none;\n /* @noflip */\n border-right: 1px solid;\n flex-grow: 1;\n}\n[dir=rtl] .mdc-notched-outline__trailing, .mdc-notched-outline__trailing[dir=rtl] {\n /* @noflip */\n border-left: 1px solid;\n /* @noflip */\n border-right: none;\n}\n.mdc-notched-outline__notch {\n flex: 0 0 auto;\n width: auto;\n max-width: calc(100% - 12px * 2);\n}\n.mdc-notched-outline .mdc-floating-label {\n display: inline-block;\n position: relative;\n top: 17px;\n bottom: auto;\n max-width: 100%;\n}\n.mdc-notched-outline .mdc-floating-label--float-above {\n text-overflow: clip;\n}\n.mdc-notched-outline--upgraded .mdc-floating-label--float-above {\n max-width: calc(100% / .75);\n}\n\n.mdc-notched-outline--notched .mdc-notched-outline__notch {\n /* @noflip */\n padding-left: 0;\n /* @noflip */\n padding-right: 8px;\n border-top: none;\n}\n[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch, .mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl] {\n /* @noflip */\n padding-left: 8px;\n /* @noflip */\n padding-right: 0;\n}\n\n.mdc-notched-outline--no-label .mdc-notched-outline__notch {\n padding: 0;\n}\n\n.mdc-floating-label {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 1rem;\n line-height: 1.75rem;\n font-weight: 400;\n letter-spacing: 0.009375em;\n text-decoration: inherit;\n text-transform: inherit;\n position: absolute;\n /* @noflip */\n left: 0;\n /* @noflip */\n -webkit-transform-origin: left top;\n transform-origin: left top;\n transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1), color 150ms cubic-bezier(0.4, 0, 0.2, 1);\n transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1), color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n /* @alternate */\n line-height: 1.15rem;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: text;\n overflow: hidden;\n will-change: transform;\n}\n[dir=rtl] .mdc-floating-label, .mdc-floating-label[dir=rtl] {\n /* @noflip */\n right: 0;\n /* @noflip */\n left: auto;\n /* @noflip */\n -webkit-transform-origin: right top;\n transform-origin: right top;\n /* @noflip */\n text-align: right;\n}\n\n.mdc-floating-label--float-above {\n cursor: auto;\n}\n\n.mdc-floating-label--float-above {\n -webkit-transform: translateY(-50%) scale(0.75);\n transform: translateY(-50%) scale(0.75);\n}\n\n.mdc-floating-label--shake {\n -webkit-animation: mdc-floating-label-shake-float-above-standard 250ms 1;\n animation: mdc-floating-label-shake-float-above-standard 250ms 1;\n}\n\n@-webkit-keyframes mdc-floating-label-shake-float-above-standard {\n 0% {\n -webkit-transform: translateX(calc(0 - 0%)) translateY(-50%) scale(0.75);\n transform: translateX(calc(0 - 0%)) translateY(-50%) scale(0.75);\n }\n 33% {\n -webkit-animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n -webkit-transform: translateX(calc(4% - 0%)) translateY(-50%) scale(0.75);\n transform: translateX(calc(4% - 0%)) translateY(-50%) scale(0.75);\n }\n 66% {\n -webkit-animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n -webkit-transform: translateX(calc(-4% - 0%)) translateY(-50%) scale(0.75);\n transform: translateX(calc(-4% - 0%)) translateY(-50%) scale(0.75);\n }\n 100% {\n -webkit-transform: translateX(calc(0 - 0%)) translateY(-50%) scale(0.75);\n transform: translateX(calc(0 - 0%)) translateY(-50%) scale(0.75);\n }\n}\n\n@keyframes mdc-floating-label-shake-float-above-standard {\n 0% {\n -webkit-transform: translateX(calc(0 - 0%)) translateY(-50%) scale(0.75);\n transform: translateX(calc(0 - 0%)) translateY(-50%) scale(0.75);\n }\n 33% {\n -webkit-animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n -webkit-transform: translateX(calc(4% - 0%)) translateY(-50%) scale(0.75);\n transform: translateX(calc(4% - 0%)) translateY(-50%) scale(0.75);\n }\n 66% {\n -webkit-animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n -webkit-transform: translateX(calc(-4% - 0%)) translateY(-50%) scale(0.75);\n transform: translateX(calc(-4% - 0%)) translateY(-50%) scale(0.75);\n }\n 100% {\n -webkit-transform: translateX(calc(0 - 0%)) translateY(-50%) scale(0.75);\n transform: translateX(calc(0 - 0%)) translateY(-50%) scale(0.75);\n }\n}\n@-webkit-keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n@keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n@keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n.mdc-ripple-surface--test-edge-var-bug {\n --mdc-ripple-surface-test-edge-var: 1px solid #000;\n visibility: hidden;\n}\n.mdc-ripple-surface--test-edge-var-bug::before {\n border: var(--mdc-ripple-surface-test-edge-var);\n}\n\n.mdc-select--with-leading-icon:not(.mdc-select--disabled) .mdc-select__icon {\n color: #000;\n /* @alternate */\n color: var(--mdc-theme-on-surface, #000);\n}\n.mdc-select--with-leading-icon .mdc-select__icon {\n display: inline-block;\n position: absolute;\n bottom: 16px;\n box-sizing: border-box;\n width: 24px;\n height: 24px;\n border: none;\n background-color: transparent;\n fill: currentColor;\n opacity: 0.54;\n text-decoration: none;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.mdc-select__icon:not([tabindex]),\n.mdc-select__icon[tabindex=\"-1\"] {\n cursor: default;\n pointer-events: none;\n}\n\n.mdc-select-helper-text {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.75rem;\n line-height: 1.25rem;\n font-weight: 400;\n letter-spacing: 0.0333333333em;\n text-decoration: inherit;\n text-transform: inherit;\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n margin: 0;\n transition: opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);\n opacity: 0;\n will-change: opacity;\n}\n.mdc-select-helper-text::before {\n display: inline-block;\n width: 0;\n height: 16px;\n content: \"\";\n vertical-align: 0;\n}\n\n.mdc-select-helper-text--persistent {\n transition: none;\n opacity: 1;\n will-change: initial;\n}\n\n.mdc-select {\n --mdc-ripple-fg-size: 0;\n --mdc-ripple-left: 0;\n --mdc-ripple-top: 0;\n --mdc-ripple-fg-scale: 1;\n --mdc-ripple-fg-translate-end: 0;\n --mdc-ripple-fg-translate-start: 0;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n will-change: transform, opacity;\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n height: 56px;\n overflow: hidden;\n /* @alternate */\n will-change: opacity, transform, color;\n}\n.mdc-select:not(.mdc-select--disabled) {\n background-color: whitesmoke;\n}\n.mdc-select::before, .mdc-select::after {\n position: absolute;\n border-radius: 50%;\n opacity: 0;\n pointer-events: none;\n content: \"\";\n}\n.mdc-select::before {\n transition: opacity 15ms linear, background-color 15ms linear;\n z-index: 1;\n}\n.mdc-select.mdc-ripple-upgraded::before {\n -webkit-transform: scale(var(--mdc-ripple-fg-scale, 1));\n transform: scale(var(--mdc-ripple-fg-scale, 1));\n}\n.mdc-select.mdc-ripple-upgraded::after {\n top: 0;\n /* @noflip */\n left: 0;\n -webkit-transform: scale(0);\n transform: scale(0);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n.mdc-select.mdc-ripple-upgraded--unbounded::after {\n top: var(--mdc-ripple-top, 0);\n /* @noflip */\n left: var(--mdc-ripple-left, 0);\n}\n.mdc-select.mdc-ripple-upgraded--foreground-activation::after {\n -webkit-animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n}\n.mdc-select.mdc-ripple-upgraded--foreground-deactivation::after {\n -webkit-animation: mdc-ripple-fg-opacity-out 150ms;\n animation: mdc-ripple-fg-opacity-out 150ms;\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n}\n.mdc-select::before, .mdc-select::after {\n top: calc(50% - 100%);\n /* @noflip */\n left: calc(50% - 100%);\n width: 200%;\n height: 200%;\n}\n.mdc-select.mdc-ripple-upgraded::after {\n width: var(--mdc-ripple-fg-size, 100%);\n height: var(--mdc-ripple-fg-size, 100%);\n}\n.mdc-select::before, .mdc-select::after {\n background-color: rgba(0, 0, 0, 0.87);\n}\n.mdc-select:hover::before {\n opacity: 0.04;\n}\n.mdc-select:not(.mdc-ripple-upgraded):focus::before, .mdc-select.mdc-ripple-upgraded--background-focused::before {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n.mdc-select:not(.mdc-select--disabled) .mdc-select__native-control,\n.mdc-select:not(.mdc-select--disabled) .mdc-select__selected-text {\n color: rgba(0, 0, 0, 0.87);\n}\n.mdc-select:not(.mdc-select--disabled) .mdc-floating-label {\n color: rgba(0, 0, 0, 0.6);\n}\n.mdc-select:not(.mdc-select--disabled) .mdc-select__native-control,\n.mdc-select:not(.mdc-select--disabled) .mdc-select__selected-text {\n border-bottom-color: rgba(0, 0, 0, 0.42);\n}\n.mdc-select:not(.mdc-select--disabled) + .mdc-select-helper-text {\n color: rgba(0, 0, 0, 0.6);\n}\n.mdc-select, .mdc-select__native-control {\n border-radius: 4px 4px 0 0;\n}\n.mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-line-ripple {\n background-color: #6200ee;\n /* @alternate */\n background-color: var(--mdc-theme-primary, #6200ee);\n}\n.mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-floating-label {\n color: rgba(98, 0, 238, 0.87);\n}\n.mdc-select:not(.mdc-select--disabled) .mdc-select__native-control:hover {\n border-bottom-color: rgba(0, 0, 0, 0.87);\n}\n.mdc-select .mdc-floating-label--float-above {\n -webkit-transform: translateY(-70%) scale(0.75);\n transform: translateY(-70%) scale(0.75);\n}\n.mdc-select .mdc-floating-label {\n /* @noflip */\n left: 16px;\n /* @noflip */\n right: initial;\n top: 21px;\n pointer-events: none;\n}\n[dir=rtl] .mdc-select .mdc-floating-label, .mdc-select .mdc-floating-label[dir=rtl] {\n /* @noflip */\n left: initial;\n /* @noflip */\n right: 16px;\n}\n.mdc-select.mdc-select--with-leading-icon .mdc-floating-label {\n /* @noflip */\n left: 48px;\n /* @noflip */\n right: initial;\n}\n[dir=rtl] .mdc-select.mdc-select--with-leading-icon .mdc-floating-label, .mdc-select.mdc-select--with-leading-icon .mdc-floating-label[dir=rtl] {\n /* @noflip */\n left: initial;\n /* @noflip */\n right: 48px;\n}\n.mdc-select.mdc-select--outlined .mdc-floating-label {\n /* @noflip */\n left: 4px;\n /* @noflip */\n right: initial;\n top: 17px;\n}\n[dir=rtl] .mdc-select.mdc-select--outlined .mdc-floating-label, .mdc-select.mdc-select--outlined .mdc-floating-label[dir=rtl] {\n /* @noflip */\n left: initial;\n /* @noflip */\n right: 4px;\n}\n.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label {\n /* @noflip */\n left: 36px;\n /* @noflip */\n right: initial;\n}\n[dir=rtl] .mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label, .mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label[dir=rtl] {\n /* @noflip */\n left: initial;\n /* @noflip */\n right: 36px;\n}\n.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above {\n /* @noflip */\n left: 36px;\n /* @noflip */\n right: initial;\n}\n[dir=rtl] .mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above, .mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above[dir=rtl] {\n /* @noflip */\n left: initial;\n /* @noflip */\n right: 36px;\n}\n.mdc-select__dropdown-icon {\n background: url(\"data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E\") no-repeat center;\n /* @noflip */\n left: auto;\n /* @noflip */\n right: 8px;\n position: absolute;\n bottom: 16px;\n width: 24px;\n height: 24px;\n transition: -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n pointer-events: none;\n}\n[dir=rtl] .mdc-select__dropdown-icon, .mdc-select__dropdown-icon[dir=rtl] {\n /* @noflip */\n left: 8px;\n /* @noflip */\n right: auto;\n}\n.mdc-select--focused .mdc-select__dropdown-icon {\n background: url(\"data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%236200ee%22%20fill-rule%3D%22evenodd%22%20opacity%3D%221%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E\") no-repeat center;\n -webkit-transform: rotate(180deg) translateY(-5px);\n transform: rotate(180deg) translateY(-5px);\n transition: -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdc-select__native-control {\n padding-top: 20px;\n}\n.mdc-select.mdc-select--focused .mdc-line-ripple::after {\n -webkit-transform: scale(1, 2);\n transform: scale(1, 2);\n opacity: 1;\n}\n\n.mdc-select + .mdc-select-helper-text {\n margin-right: 12px;\n margin-left: 12px;\n}\n.mdc-select--outlined + .mdc-select-helper-text {\n margin-right: 16px;\n margin-left: 16px;\n}\n\n.mdc-select--focused + .mdc-select-helper-text:not(.mdc-select-helper-text--validation-msg) {\n opacity: 1;\n}\n\n.mdc-select__selected-text {\n min-width: 200px;\n padding-top: 22px;\n}\n\n.mdc-select__native-control,\n.mdc-select__selected-text {\n /* @noflip */\n padding-left: 16px;\n /* @noflip */\n padding-right: 52px;\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 1rem;\n line-height: 1.75rem;\n font-weight: 400;\n letter-spacing: 0.009375em;\n text-decoration: inherit;\n text-transform: inherit;\n box-sizing: border-box;\n width: 100%;\n height: 56px;\n padding-top: 20px;\n padding-bottom: 4px;\n border: none;\n border-bottom: 1px solid;\n outline: none;\n background-color: transparent;\n color: inherit;\n white-space: nowrap;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n[dir=rtl] .mdc-select__native-control, .mdc-select__native-control[dir=rtl],\n[dir=rtl] .mdc-select__selected-text,\n.mdc-select__selected-text[dir=rtl] {\n /* @noflip */\n padding-left: 52px;\n /* @noflip */\n padding-right: 16px;\n}\n.mdc-select__native-control::-ms-expand,\n.mdc-select__selected-text::-ms-expand {\n display: none;\n}\n.mdc-select__native-control::-ms-value,\n.mdc-select__selected-text::-ms-value {\n background-color: transparent;\n color: inherit;\n}\n@-moz-document url-prefix(\"\") {\n .mdc-select__native-control,\n.mdc-select__selected-text {\n text-indent: -2px;\n }\n}\n\n.mdc-select--outlined {\n border: none;\n overflow: visible;\n}\n.mdc-select--outlined:not(.mdc-select--disabled) {\n background-color: transparent;\n}\n.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,\n.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,\n.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing {\n border-color: rgba(0, 0, 0, 0.24);\n}\n.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover ~ .mdc-notched-outline .mdc-notched-outline__leading,\n.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover ~ .mdc-notched-outline .mdc-notched-outline__notch,\n.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover ~ .mdc-notched-outline .mdc-notched-outline__trailing, .mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover ~ .mdc-notched-outline .mdc-notched-outline__leading,\n.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover ~ .mdc-notched-outline .mdc-notched-outline__notch,\n.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover ~ .mdc-notched-outline .mdc-notched-outline__trailing {\n border-color: rgba(0, 0, 0, 0.87);\n}\n.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,\n.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,\n.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing {\n border-width: 2px;\n}\n.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,\n.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,\n.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing {\n border-color: #6200ee;\n /* @alternate */\n border-color: var(--mdc-theme-primary, #6200ee);\n}\n.mdc-select--outlined .mdc-floating-label--shake {\n -webkit-animation: mdc-floating-label-shake-float-above-text-field-outlined 250ms 1;\n animation: mdc-floating-label-shake-float-above-text-field-outlined 250ms 1;\n}\n.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading {\n /* @noflip */\n border-radius: 4px 0 0 4px;\n}\n[dir=rtl] .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading, .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl] {\n /* @noflip */\n border-radius: 0 4px 4px 0;\n}\n.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing {\n /* @noflip */\n border-radius: 0 4px 4px 0;\n}\n[dir=rtl] .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing, .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl] {\n /* @noflip */\n border-radius: 4px 0 0 4px;\n}\n.mdc-select--outlined .mdc-select__native-control {\n border-radius: 4px;\n}\n.mdc-select--outlined::before, .mdc-select--outlined::after {\n content: none;\n}\n.mdc-select--outlined:not(.mdc-select--disabled) {\n background-color: transparent;\n}\n.mdc-select--outlined .mdc-floating-label--float-above {\n -webkit-transform: translateY(-144%) scale(1);\n transform: translateY(-144%) scale(1);\n}\n.mdc-select--outlined .mdc-floating-label--float-above {\n font-size: 0.75rem;\n}\n.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,\n.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {\n -webkit-transform: translateY(-130%) scale(0.75);\n transform: translateY(-130%) scale(0.75);\n}\n.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,\n.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {\n font-size: 1rem;\n}\n.mdc-select--outlined .mdc-select__native-control,\n.mdc-select--outlined .mdc-select__selected-text {\n /* @noflip */\n padding-left: 16px;\n /* @noflip */\n padding-right: 52px;\n display: flex;\n padding-top: 12px;\n padding-bottom: 12px;\n border: none;\n background-color: transparent;\n z-index: 1;\n}\n[dir=rtl] .mdc-select--outlined .mdc-select__native-control, .mdc-select--outlined .mdc-select__native-control[dir=rtl],\n[dir=rtl] .mdc-select--outlined .mdc-select__selected-text,\n.mdc-select--outlined .mdc-select__selected-text[dir=rtl] {\n /* @noflip */\n padding-left: 52px;\n /* @noflip */\n padding-right: 16px;\n}\n.mdc-select--outlined .mdc-select__selected-text {\n padding-top: 14px;\n}\n.mdc-select--outlined .mdc-select__icon {\n z-index: 2;\n}\n.mdc-select--outlined .mdc-floating-label {\n line-height: 1.15rem;\n pointer-events: auto;\n}\n\n.mdc-select--invalid:not(.mdc-select--disabled) .mdc-floating-label {\n color: #b00020;\n /* @alternate */\n color: var(--mdc-theme-error, #b00020);\n}\n.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__native-control,\n.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__selected-text {\n border-bottom-color: #b00020;\n /* @alternate */\n border-bottom-color: var(--mdc-theme-error, #b00020);\n}\n.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-line-ripple {\n background-color: #b00020;\n /* @alternate */\n background-color: var(--mdc-theme-error, #b00020);\n}\n.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-floating-label {\n color: #b00020;\n}\n.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--invalid + .mdc-select-helper-text--validation-msg {\n color: #b00020;\n /* @alternate */\n color: var(--mdc-theme-error, #b00020);\n}\n.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__native-control:hover {\n border-bottom-color: #b00020;\n /* @alternate */\n border-bottom-color: var(--mdc-theme-error, #b00020);\n}\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing {\n border-color: #b00020;\n /* @alternate */\n border-color: var(--mdc-theme-error, #b00020);\n}\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover ~ .mdc-notched-outline .mdc-notched-outline__leading,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover ~ .mdc-notched-outline .mdc-notched-outline__notch,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover ~ .mdc-notched-outline .mdc-notched-outline__trailing, .mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover ~ .mdc-notched-outline .mdc-notched-outline__leading,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover ~ .mdc-notched-outline .mdc-notched-outline__notch,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover ~ .mdc-notched-outline .mdc-notched-outline__trailing {\n border-color: #b00020;\n /* @alternate */\n border-color: var(--mdc-theme-error, #b00020);\n}\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing {\n border-width: 2px;\n}\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,\n.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing {\n border-color: #b00020;\n /* @alternate */\n border-color: var(--mdc-theme-error, #b00020);\n}\n.mdc-select--invalid .mdc-select__dropdown-icon {\n background: url(\"data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23b00020%22%20fill-rule%3D%22evenodd%22%20opacity%3D%221%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E\") no-repeat center;\n}\n.mdc-select--invalid + .mdc-select-helper-text--validation-msg {\n opacity: 1;\n}\n\n.mdc-select--required .mdc-floating-label::after {\n content: \"*\";\n}\n\n.mdc-select--disabled {\n background-color: #fafafa;\n cursor: default;\n pointer-events: none;\n}\n.mdc-select--disabled .mdc-floating-label {\n color: rgba(0, 0, 0, 0.37);\n}\n.mdc-select--disabled .mdc-select__dropdown-icon {\n background: url(\"data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.37%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E\") no-repeat center;\n}\n.mdc-select--disabled .mdc-line-ripple {\n display: none;\n}\n.mdc-select--disabled .mdc-select__icon {\n color: rgba(0, 0, 0, 0.37);\n}\n.mdc-select--disabled .mdc-select__native-control,\n.mdc-select--disabled .mdc-select__selected-text {\n color: rgba(0, 0, 0, 0.37);\n border-bottom-style: dotted;\n}\n.mdc-select--disabled .mdc-select__selected-text {\n pointer-events: none;\n}\n.mdc-select--disabled.mdc-select--outlined {\n background-color: transparent;\n}\n.mdc-select--disabled.mdc-select--outlined .mdc-select__native-control,\n.mdc-select--disabled.mdc-select--outlined .mdc-select__selected-text {\n border-bottom-style: none;\n}\n.mdc-select--disabled.mdc-select--outlined .mdc-notched-outline__leading,\n.mdc-select--disabled.mdc-select--outlined .mdc-notched-outline__notch,\n.mdc-select--disabled.mdc-select--outlined .mdc-notched-outline__trailing {\n border-color: rgba(0, 0, 0, 0.16);\n}\n\n.mdc-select--with-leading-icon .mdc-select__icon {\n /* @noflip */\n left: 16px;\n /* @noflip */\n right: initial;\n}\n[dir=rtl] .mdc-select--with-leading-icon .mdc-select__icon, .mdc-select--with-leading-icon .mdc-select__icon[dir=rtl] {\n /* @noflip */\n left: initial;\n /* @noflip */\n right: 16px;\n}\n.mdc-select--with-leading-icon .mdc-select__native-control,\n.mdc-select--with-leading-icon .mdc-select__selected-text {\n /* @noflip */\n padding-left: 48px;\n /* @noflip */\n padding-right: 32px;\n}\n[dir=rtl] .mdc-select--with-leading-icon .mdc-select__native-control, .mdc-select--with-leading-icon .mdc-select__native-control[dir=rtl],\n[dir=rtl] .mdc-select--with-leading-icon .mdc-select__selected-text,\n.mdc-select--with-leading-icon .mdc-select__selected-text[dir=rtl] {\n /* @noflip */\n padding-left: 32px;\n /* @noflip */\n padding-right: 48px;\n}\n.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above {\n -webkit-transform: translateY(-144%) translateX(-32px) scale(1);\n transform: translateY(-144%) translateX(-32px) scale(1);\n}\n[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above, .mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above[dir=rtl] {\n -webkit-transform: translateY(-144%) translateX(32px) scale(1);\n transform: translateY(-144%) translateX(32px) scale(1);\n}\n.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above {\n font-size: 0.75rem;\n}\n.mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,\n.mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {\n -webkit-transform: translateY(-130%) translateX(-32px) scale(0.75);\n transform: translateY(-130%) translateX(-32px) scale(0.75);\n}\n[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above, .mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],\n[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,\n.mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl] {\n -webkit-transform: translateY(-130%) translateX(32px) scale(0.75);\n transform: translateY(-130%) translateX(32px) scale(0.75);\n}\n.mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,\n.mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {\n font-size: 1rem;\n}\n.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--shake {\n -webkit-animation: mdc-floating-label-shake-float-above-select-outlined-leading-icon 250ms 1;\n animation: mdc-floating-label-shake-float-above-select-outlined-leading-icon 250ms 1;\n}\n[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--shake, .mdc-select--with-leading-icon.mdc-select--outlined[dir=rtl] .mdc-floating-label--shake {\n -webkit-animation: mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl 250ms 1;\n animation: mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl 250ms 1;\n}\n.mdc-select--with-leading-icon.mdc-select__menu .mdc-list-item__text {\n /* @noflip */\n padding-left: 32px;\n /* @noflip */\n padding-right: 32px;\n}\n[dir=rtl] .mdc-select--with-leading-icon.mdc-select__menu .mdc-list-item__text, .mdc-select--with-leading-icon.mdc-select__menu .mdc-list-item__text[dir=rtl] {\n /* @noflip */\n padding-left: 32px;\n /* @noflip */\n padding-right: 32px;\n}\n\n.mdc-select__menu .mdc-list .mdc-list-item--selected {\n color: #000;\n /* @alternate */\n color: var(--mdc-theme-on-surface, #000);\n}\n.mdc-select__menu .mdc-list .mdc-list-item--selected::before, .mdc-select__menu .mdc-list .mdc-list-item--selected::after {\n background-color: #000;\n}\n@supports not (-ms-ime-align: auto) {\n .mdc-select__menu .mdc-list .mdc-list-item--selected::before, .mdc-select__menu .mdc-list .mdc-list-item--selected::after {\n /* @alternate */\n background-color: var(--mdc-theme-on-surface, #000);\n }\n}\n.mdc-select__menu .mdc-list .mdc-list-item--selected:hover::before {\n opacity: 0.04;\n}\n.mdc-select__menu .mdc-list .mdc-list-item--selected:not(.mdc-ripple-upgraded):focus::before, .mdc-select__menu .mdc-list .mdc-list-item--selected.mdc-ripple-upgraded--background-focused::before {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n.mdc-select__menu .mdc-list .mdc-list-item--selected:not(.mdc-ripple-upgraded)::after {\n transition: opacity 150ms linear;\n}\n.mdc-select__menu .mdc-list .mdc-list-item--selected:not(.mdc-ripple-upgraded):active::after {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n.mdc-select__menu .mdc-list .mdc-list-item--selected.mdc-ripple-upgraded {\n --mdc-ripple-fg-opacity: 0.12;\n}\n\n@-webkit-keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon {\n 0% {\n -webkit-transform: translateX(calc(0 - 32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(0 - 32px)) translateY(-130%) scale(0.75);\n }\n 33% {\n -webkit-animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n -webkit-transform: translateX(calc(4% - 32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(4% - 32px)) translateY(-130%) scale(0.75);\n }\n 66% {\n -webkit-animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n -webkit-transform: translateX(calc(-4% - 32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(-4% - 32px)) translateY(-130%) scale(0.75);\n }\n 100% {\n -webkit-transform: translateX(calc(0 - 32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(0 - 32px)) translateY(-130%) scale(0.75);\n }\n}\n\n@keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon {\n 0% {\n -webkit-transform: translateX(calc(0 - 32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(0 - 32px)) translateY(-130%) scale(0.75);\n }\n 33% {\n -webkit-animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n -webkit-transform: translateX(calc(4% - 32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(4% - 32px)) translateY(-130%) scale(0.75);\n }\n 66% {\n -webkit-animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n -webkit-transform: translateX(calc(-4% - 32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(-4% - 32px)) translateY(-130%) scale(0.75);\n }\n 100% {\n -webkit-transform: translateX(calc(0 - 32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(0 - 32px)) translateY(-130%) scale(0.75);\n }\n}\n@-webkit-keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl {\n 0% {\n -webkit-transform: translateX(calc(0 - -32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(0 - -32px)) translateY(-130%) scale(0.75);\n }\n 33% {\n -webkit-animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n -webkit-transform: translateX(calc(4% - -32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(4% - -32px)) translateY(-130%) scale(0.75);\n }\n 66% {\n -webkit-animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n -webkit-transform: translateX(calc(-4% - -32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(-4% - -32px)) translateY(-130%) scale(0.75);\n }\n 100% {\n -webkit-transform: translateX(calc(0 - -32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(0 - -32px)) translateY(-130%) scale(0.75);\n }\n}\n@keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl {\n 0% {\n -webkit-transform: translateX(calc(0 - -32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(0 - -32px)) translateY(-130%) scale(0.75);\n }\n 33% {\n -webkit-animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n -webkit-transform: translateX(calc(4% - -32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(4% - -32px)) translateY(-130%) scale(0.75);\n }\n 66% {\n -webkit-animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n -webkit-transform: translateX(calc(-4% - -32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(-4% - -32px)) translateY(-130%) scale(0.75);\n }\n 100% {\n -webkit-transform: translateX(calc(0 - -32px)) translateY(-130%) scale(0.75);\n transform: translateX(calc(0 - -32px)) translateY(-130%) scale(0.75);\n }\n}\n/*# sourceMappingURL=mdc.select.css.map*/","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@keyframes mdc-select-float-native-control {\n 0% {\n transform: translateY(8px);\n opacity: 0;\n }\n\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/mdc-select.scss","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/base/mixins\";\n@import \"@material/theme/mixins\";\n@import \"./functions\";\n@import \"./mixins\";\n\n// Line Ripple is intended for use by multiple components, but its styles should only be emitted once when bundled\n@include mdc-base-emit-once(\"mdc-line-ripple\") {\n // postcss-bem-linter: define line-ripple\n .mdc-line-ripple {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 2px;\n transform: scaleX(0);\n transition: mdc-line-ripple-transition-value(transform), mdc-line-ripple-transition-value(opacity);\n opacity: 0;\n z-index: 2;\n }\n\n .mdc-line-ripple--active {\n transform: scaleX(1);\n opacity: 1;\n }\n\n .mdc-line-ripple--deactivating {\n opacity: 0;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/line-ripple/mdc-line-ripple.scss","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/animation/variables\";\n@import \"@material/base/mixins\";\n@import \"@material/rtl/mixins\";\n@import \"./mixins\";\n@import \"./variables\";\n\n// Notched Outline is intended for use by multiple components, but its styles should only be emitted once when bundled\n@include mdc-base-emit-once(\"mdc-notched-outline\") {\n .mdc-notched-outline {\n display: flex;\n position: absolute;\n right: 0;\n left: 0;\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n height: 100%;\n /* @noflip */\n text-align: left;\n pointer-events: none;\n\n @include mdc-rtl {\n /* @noflip */\n text-align: right;\n }\n\n &__leading,\n &__notch,\n &__trailing {\n box-sizing: border-box;\n height: 100%;\n transition: border $mdc-notched-outline-transition-duration $mdc-animation-standard-curve-timing-function;\n border-top: 1px solid;\n border-bottom: 1px solid;\n pointer-events: none;\n }\n\n &__leading {\n @include mdc-rtl-reflexive-property(border, 1px solid, none);\n\n width: $mdc-notched-outline-leading-width;\n }\n\n &__trailing {\n @include mdc-rtl-reflexive-property(border, none, 1px solid);\n\n flex-grow: 1;\n }\n\n &__notch {\n flex: 0 0 auto;\n width: auto;\n max-width: calc(100% - #{$mdc-notched-outline-leading-width} * 2);\n }\n\n .mdc-floating-label {\n display: inline-block;\n position: relative;\n top: 17px;\n bottom: auto;\n max-width: 100%;\n }\n\n .mdc-floating-label--float-above {\n text-overflow: clip;\n }\n\n &--upgraded .mdc-floating-label--float-above {\n max-width: calc(100% / .75);\n }\n }\n\n .mdc-notched-outline--notched {\n .mdc-notched-outline__notch {\n @include mdc-rtl-reflexive-box(padding, right, 8px);\n\n border-top: none;\n }\n }\n\n .mdc-notched-outline--no-label {\n .mdc-notched-outline__notch {\n padding: 0;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/notched-outline/mdc-notched-outline.scss","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/animation/variables\";\n@import \"@material/base/mixins\";\n@import \"@material/rtl/mixins\";\n@import \"@material/theme/variables\";\n@import \"@material/theme/mixins\";\n@import \"@material/typography/mixins\";\n@import \"./mixins\";\n@import \"./variables\";\n\n// Floating Label is intended for use by multiple components, but its styles should only be emitted once when bundled\n@include mdc-base-emit-once(\"mdc-floating-label\") {\n // postcss-bem-linter: define floating-label\n .mdc-floating-label {\n @include mdc-typography(subtitle1);\n\n position: absolute;\n /* @noflip */\n left: 0;\n /* @noflip */\n transform-origin: left top;\n transition:\n transform $mdc-floating-label-transition-duration $mdc-animation-standard-curve-timing-function,\n color $mdc-floating-label-transition-duration $mdc-animation-standard-curve-timing-function;\n /* @alternate */\n line-height: 1.15rem;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: text;\n overflow: hidden;\n // Force the label into its own layer to prevent visible layer promotion adjustments\n // when the ripple is activated behind it.\n will-change: transform;\n\n @include mdc-rtl {\n /* @noflip */\n right: 0;\n /* @noflip */\n left: auto;\n /* @noflip */\n transform-origin: right top;\n /* @noflip */\n text-align: right;\n }\n }\n\n .mdc-floating-label--float-above {\n cursor: auto;\n }\n\n @at-root {\n @include mdc-floating-label-float-position($mdc-floating-label-position-y);\n @include mdc-floating-label-shake-animation(standard);\n }\n\n @include mdc-floating-label-shake-keyframes(standard, $mdc-floating-label-position-y);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/floating-label/mdc-floating-label.scss","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/rtl/mixins\";\n@import \"@material/theme/mixins\";\n@import \"./variables\";\n\n@mixin mdc-floating-label-ink-color($color) {\n @include mdc-theme-prop(color, $color);\n}\n\n// Used for textarea in case of scrolling\n@mixin mdc-floating-label-fill-color($color) {\n @include mdc-theme-prop(background-color, $color);\n}\n\n@mixin mdc-floating-label-shake-keyframes($modifier, $positionY, $positionX: 0%, $scale: .75) {\n @keyframes mdc-floating-label-shake-float-above-#{$modifier} {\n 0% {\n transform: translateX(calc(0 - #{$positionX})) translateY(-#{$positionY}) scale(#{$scale});\n }\n\n 33% {\n animation-timing-function: cubic-bezier(.5, 0, .701732, .495819);\n transform: translateX(calc(4% - #{$positionX})) translateY(-#{$positionY}) scale(#{$scale});\n }\n\n 66% {\n animation-timing-function: cubic-bezier(.302435, .381352, .55, .956352);\n transform: translateX(calc(-4% - #{$positionX})) translateY(-#{$positionY}) scale(#{$scale});\n }\n\n 100% {\n transform: translateX(calc(0 - #{$positionX})) translateY(-#{$positionY}) scale(#{$scale});\n }\n }\n}\n\n@mixin mdc-floating-label-float-position($positionY, $positionX: 0%, $scale: .75) {\n .mdc-floating-label--float-above {\n @if $positionX > 0 or $positionX < 0 {\n transform: translateY(-1 * $positionY) translateX(-1 * $positionX) scale($scale);\n\n @include mdc-rtl {\n transform: translateY(-1 * $positionY) translateX($positionX) scale($scale);\n }\n } @else {\n transform: translateY(-1 * $positionY) scale($scale);\n }\n }\n}\n\n@mixin mdc-floating-label-shake-animation($modifier) {\n .mdc-floating-label--shake {\n animation: mdc-floating-label-shake-float-above-#{$modifier} 250ms 1;\n }\n}\n\n@mixin mdc-floating-label-max-width($max-width) {\n max-width: $max-width;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/floating-label/_mixins.scss","// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:/\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software./\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/theme/mixins\";\n@import \"./variables\";\n\n// Public mixins\n\n@mixin mdc-select-icon-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-icon-color_($color);\n }\n}\n\n// Private mixins\n\n@mixin mdc-select-icon_ {\n @include mdc-select-icon-color(on-surface);\n\n .mdc-select__icon {\n display: inline-block;\n position: absolute;\n bottom: 16px;\n box-sizing: border-box;\n width: $mdc-select-icon-size;\n height: $mdc-select-icon-size;\n border: none;\n background-color: transparent;\n fill: currentColor;\n opacity: $mdc-select-icon-opacity;\n text-decoration: none;\n cursor: pointer;\n user-select: none;\n }\n}\n\n@mixin mdc-select-icon-color_($color) {\n .mdc-select__icon {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n@mixin mdc-select-icon-horizontal-position_($iconPosition, $inputPadding) {\n .mdc-select__icon {\n @include mdc-rtl-reflexive-position(left, $iconPosition);\n }\n\n // Move the input's position, to allow room for the icon\n .mdc-select__native-control,\n .mdc-select__selected-text {\n @include mdc-rtl-reflexive-property(padding, $inputPadding /* left */, $mdc-select-icon-right-padding /* right */);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/icon/_mixins.scss","// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:/\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software./\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"./mixins\";\n\n.mdc-select--with-leading-icon {\n @include mdc-select-icon_;\n}\n\n.mdc-select__icon:not([tabindex]),\n.mdc-select__icon[tabindex=\"-1\"] {\n cursor: default;\n pointer-events: none;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/icon/mdc-select-icon.scss","// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:/\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software./\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"../functions\";\n@import \"@material/theme/mixins\";\n@import \"@material/typography/mixins\";\n\n// postcss-bem-linter: define select-helper-text\n.mdc-select-helper-text {\n @include mdc-typography(caption);\n @include mdc-typography-baseline-top(16px);\n\n margin: 0;\n transition: mdc-select-transition(opacity);\n opacity: 0;\n will-change: opacity;\n}\n\n.mdc-select-helper-text--persistent {\n transition: none;\n opacity: 1;\n will-change: initial;\n}\n// postcss-bem-linter: end\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/helper-text/mdc-select-helper-text.scss","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/floating-label/mixins\";\n@import \"@material/theme/mixins\";\n@import \"@material/shape/mixins\";\n@import \"@material/shape/functions\";\n@import \"@material/line-ripple/mixins\";\n@import \"@material/notched-outline/mixins\";\n@import \"@material/notched-outline/variables\";\n@import \"./icon/mixins\";\n@import \"./variables\";\n\n// Public\n\n@mixin mdc-select-ink-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-ink-color_($color);\n }\n}\n\n@mixin mdc-select-container-fill-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-container-fill-color_($color);\n }\n}\n\n@mixin mdc-select-focused-label-color($color) {\n &:not(.mdc-select--disabled) {\n &.mdc-select--focused .mdc-floating-label {\n @include mdc-floating-label-ink-color(mdc-theme-prop-value($color));\n }\n }\n}\n\n@mixin mdc-select-hover-bottom-line-color($color) {\n &:not(.mdc-select--disabled) .mdc-select__native-control:hover {\n @include mdc-select-native-control-bottom-line-color_($color);\n }\n}\n\n@mixin mdc-select-bottom-line-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-bottom-line-color_($color);\n }\n}\n\n@mixin mdc-select-focused-bottom-line-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-focused-line-ripple-color_($color);\n }\n}\n\n@mixin mdc-select-label-color($color) {\n &:not(.mdc-select--disabled) .mdc-floating-label {\n @include mdc-floating-label-ink-color($color);\n }\n}\n\n@mixin mdc-select-outline-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-outline-color_($color);\n }\n}\n\n@mixin mdc-select-hover-outline-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-hover-outline-color_($color);\n }\n}\n\n@mixin mdc-select-focused-outline-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-focused-outline-color_($color);\n }\n}\n\n@mixin mdc-select-shape-radius($radius, $rtl-reflexive: false) {\n @if length($radius) > 2 {\n @error \"Invalid radius: '#{$radius}' component doesn't allow customizing all corners\";\n }\n\n $masked-radius: mdc-shape-mask-radius($radius, 1 1 0 0);\n\n &,\n &__native-control {\n @include mdc-shape-radius(mdc-shape-resolve-percentage-radius($mdc-select-height, $masked-radius), $rtl-reflexive);\n }\n}\n\n@mixin mdc-select-outline-shape-radius($radius, $rtl-reflexive: false) {\n $resolved-radius: nth(mdc-shape-resolve-percentage-radius($mdc-select-height, mdc-shape-prop-value($radius)), 1);\n\n @if (length(mdc-shape-prop-value($radius)) > 1) {\n // stylelint-disable-next-line max-line-length\n @warn \"mdc-select-outline-shape-radius only supports a single radius; see https://github.com/material-components/material-components-web/issues/4140\";\n }\n\n .mdc-notched-outline {\n @include mdc-notched-outline-shape-radius($resolved-radius, $rtl-reflexive);\n }\n\n .mdc-select__native-control {\n @include mdc-shape-radius($resolved-radius, $rtl-reflexive);\n }\n\n @if ($resolved-radius > $mdc-notched-outline-leading-width) {\n .mdc-select__native-control {\n @include mdc-rtl-reflexive-property(\n padding,\n $resolved-radius + $mdc-notched-outline-padding,\n $mdc-select-arrow-padding\n );\n }\n\n + .mdc-select-helper-text {\n @include mdc-rtl-reflexive-property(\n margin,\n $resolved-radius + $mdc-notched-outline-padding,\n $mdc-select-outline-label-offset\n );\n }\n }\n}\n\n// Private\n@mixin mdc-select-focused-line-ripple_ {\n &.mdc-select--focused .mdc-line-ripple {\n @content;\n }\n}\n\n@mixin mdc-select-focused-outline_ {\n &.mdc-select--focused .mdc-notched-outline {\n @include mdc-notched-outline-stroke-width(2px);\n @content;\n }\n}\n\n@mixin mdc-select-focused-outline-idle_ {\n &.mdc-select--focused {\n @content;\n }\n}\n\n@mixin mdc-select-ink-color_($color) {\n .mdc-select__native-control,\n .mdc-select__selected-text {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n@mixin mdc-select-container-fill-color_($color) {\n @include mdc-theme-prop(background-color, $color);\n}\n\n@mixin mdc-select-bottom-line-color_($color) {\n .mdc-select__native-control,\n .mdc-select__selected-text {\n @include mdc-select-native-control-bottom-line-color_($color);\n }\n}\n\n@mixin mdc-select-native-control-bottom-line-color_($color) {\n @include mdc-theme-prop(border-bottom-color, $color);\n}\n\n@mixin mdc-select-focused-line-ripple-color_($color) {\n @include mdc-select-focused-line-ripple_ {\n @include mdc-line-ripple-color($color);\n }\n}\n\n@mixin mdc-select-dd-arrow-svg-bg_($fill-hex-number, $opacity) {\n // Lookup color and remove leading #.\n $fill-hex-number: mdc-theme-prop-value($fill-hex-number);\n $fill-hex-number: str-slice(unquote(\"#{$fill-hex-number}\"), 2);\n\n background:\n url(\"data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23#{$fill-hex-number}%22%20fill-rule%3D%22evenodd%22%20opacity%3D%22#{$opacity}%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E\")\n no-repeat\n center;\n}\n\n@mixin mdc-select-outline-color_($color) {\n @include mdc-notched-outline-color($color);\n}\n\n@mixin mdc-select-hover-outline-color_($color) {\n // stylelint-disable-next-line selector-combinator-space-after\n &:not(.mdc-select--focused) .mdc-select__native-control:hover ~,\n &:not(.mdc-select--focused) .mdc-select__selected-text:hover ~ {\n .mdc-notched-outline {\n @include mdc-notched-outline-color($color);\n }\n }\n}\n\n@mixin mdc-select-focused-outline-color_($color) {\n @include mdc-select-focused-outline_ {\n @include mdc-notched-outline-color($color);\n }\n}\n\n@mixin mdc-select-floating-label_ {\n .mdc-floating-label {\n @include mdc-rtl-reflexive-position(left, $mdc-select-outline-label-offset);\n\n top: 21px;\n pointer-events: none;\n }\n\n &.mdc-select--with-leading-icon {\n .mdc-floating-label {\n @include mdc-rtl-reflexive-position(left, $mdc-select-icon-padding);\n }\n }\n\n &.mdc-select--outlined {\n .mdc-floating-label {\n @include mdc-rtl-reflexive-position(left, $mdc-notched-outline-padding);\n\n top: 17px;\n }\n\n &.mdc-select--with-leading-icon {\n .mdc-floating-label {\n @include mdc-rtl-reflexive-position(left, $mdc-select-icon-padding - $mdc-notched-outline-leading-width);\n\n &--float-above {\n @include mdc-rtl-reflexive-position(left, $mdc-select-icon-padding - $mdc-notched-outline-leading-width);\n }\n }\n }\n }\n}\n\n@mixin mdc-select-with-leading-icon_ {\n @include mdc-select-icon-horizontal-position_(16px, $mdc-select-icon-padding);\n\n &.mdc-select--outlined {\n @include mdc-notched-outline-floating-label-float-position(\n $mdc-select-outlined-label-position-y,\n $mdc-select-outlined-with-leading-icon-label-position-x\n );\n @include mdc-floating-label-shake-animation(select-outlined-leading-icon);\n\n @include mdc-rtl {\n @include mdc-floating-label-shake-animation(select-outlined-leading-icon-rtl);\n }\n }\n\n &.mdc-select__menu .mdc-list-item__text {\n @include mdc-rtl-reflexive-property(padding, 32px /* left-value */, 32px /* right-value */);\n }\n}\n\n@mixin mdc-select-text-and-control_ {\n .mdc-select__selected-text {\n min-width: 200px;\n padding-top: 22px;\n }\n\n .mdc-select__native-control,\n .mdc-select__selected-text {\n @include mdc-rtl-reflexive-property(padding, $mdc-select-label-padding, $mdc-select-arrow-padding);\n @include mdc-typography(subtitle1);\n\n &::-ms-expand {\n display: none;\n }\n\n &::-ms-value {\n background-color: transparent;\n color: inherit;\n }\n\n // counteracts the extra text padding that Firefox adds by default\n @-moz-document url-prefix(\"\") {\n text-indent: -2px;\n }\n\n box-sizing: border-box;\n width: 100%;\n height: $mdc-select-height;\n padding-top: 20px;\n padding-bottom: 4px;\n border: none;\n border-bottom: 1px solid;\n outline: none;\n background-color: transparent;\n color: inherit; // Override default user agent stylesheet\n white-space: nowrap;\n cursor: pointer;\n appearance: none;\n }\n}\n\n@mixin mdc-select-disabled_ {\n @include mdc-select-container-fill-color_($mdc-select-disabled-fill-color);\n\n .mdc-floating-label {\n @include mdc-floating-label-ink-color($mdc-select-disabled-label-color);\n }\n\n .mdc-select__dropdown-icon {\n @include mdc-select-dd-arrow-svg-bg_($mdc-select-dropdown-color, $mdc-select-disabled-dropdown-opacity);\n }\n\n .mdc-line-ripple {\n display: none;\n }\n\n .mdc-select__icon {\n @include mdc-theme-prop(color, $mdc-select-disabled-icon-color);\n }\n\n .mdc-select__native-control,\n .mdc-select__selected-text {\n @include mdc-theme-prop(color, $mdc-select-disabled-ink-color);\n\n border-bottom-style: dotted;\n }\n\n .mdc-select__selected-text {\n pointer-events: none;\n }\n\n &.mdc-select--outlined {\n @include mdc-select-container-fill-color_(transparent);\n\n .mdc-select__native-control,\n .mdc-select__selected-text {\n border-bottom-style: none;\n }\n\n @include mdc-select-outline-color_($mdc-select-outlined-disabled-border);\n }\n\n cursor: default;\n pointer-events: none;\n}\n\n@mixin mdc-select-outlined_ {\n @include mdc-select-container-fill-color(transparent);\n @include mdc-select-outline-color($mdc-select-outlined-idle-border);\n @include mdc-select-hover-outline-color($mdc-select-outlined-hover-border);\n @include mdc-select-focused-outline-color(primary);\n @include mdc-floating-label-shake-animation(text-field-outlined);\n @include mdc-select-outline-shape-radius(small);\n @include mdc-states-base-color(transparent);\n @include mdc-select-container-fill-color(transparent);\n @include mdc-notched-outline-floating-label-float-position($mdc-select-outlined-label-position-y, 0);\n\n border: none;\n overflow: visible;\n\n .mdc-select__native-control,\n .mdc-select__selected-text {\n @include mdc-rtl-reflexive-property(padding, $mdc-select-label-padding, $mdc-select-arrow-padding);\n\n display: flex;\n padding-top: 12px;\n padding-bottom: 12px;\n border: none;\n background-color: transparent;\n z-index: 1;\n }\n\n .mdc-select__selected-text {\n padding-top: 14px;\n }\n\n .mdc-select__icon {\n z-index: 2;\n }\n\n .mdc-floating-label {\n line-height: 1.15rem;\n pointer-events: auto;\n }\n}\n\n@mixin mdc-select-helper-text_ {\n .mdc-select-helper-text {\n // stylelint-disable plugin/selector-bem-pattern\n .mdc-select + & {\n margin-right: 12px;\n margin-left: 12px;\n }\n\n .mdc-select--outlined + & {\n margin-right: 16px;\n margin-left: 16px;\n }\n // stylelint-enable plugin/selector-bem-pattern\n }\n\n .mdc-select--focused + .mdc-select-helper-text:not(.mdc-select-helper-text--validation-msg) {\n opacity: 1;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/_mixins.scss","// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:/\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software./\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n// Public mixins\n\n@mixin mdc-select-helper-text-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-helper-text-color_($color);\n }\n}\n\n@mixin mdc-select-helper-text-validation-color($color) {\n &:not(.mdc-select--disabled) {\n @include mdc-select-helper-text-validation-color_($color);\n }\n}\n\n// Private mixins\n\n@mixin mdc-select-helper-text-color_($color) {\n + .mdc-select-helper-text {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n@mixin mdc-select-helper-text-validation-color_($color) {\n &.mdc-select--invalid + .mdc-select-helper-text--validation-msg {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/helper-text/_mixins.scss","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/theme/mixins\";\n@import \"@material/shape/mixins\";\n@import \"@material/shape/functions\";\n@import \"@material/rtl/mixins\";\n@import \"./variables\";\n\n@mixin mdc-notched-outline-color($color) {\n .mdc-notched-outline__leading,\n .mdc-notched-outline__notch,\n .mdc-notched-outline__trailing {\n @include mdc-theme-prop(border-color, $color);\n }\n}\n\n@mixin mdc-notched-outline-stroke-width($width) {\n .mdc-notched-outline__leading,\n .mdc-notched-outline__notch,\n .mdc-notched-outline__trailing {\n border-width: $width;\n }\n}\n\n@mixin mdc-notched-outline-shape-radius($radius, $rtl-reflexive: false) {\n $radius: mdc-shape-prop-value($radius);\n\n @if (length($radius) > 1) {\n // stylelint-disable-next-line max-line-length\n @warn \"mdc-notched-outline-shape-radius only supports a single radius; see https://github.com/material-components/material-components-web/issues/4140\";\n }\n\n $radius: nth($radius, 1);\n\n .mdc-notched-outline__leading {\n @include mdc-shape-radius(mdc-shape-mask-radius($radius, 1 0 0 1), $rtl-reflexive: true);\n\n @if ($radius > $mdc-notched-outline-leading-width) {\n width: $radius;\n }\n }\n\n @if ($radius > $mdc-notched-outline-leading-width) {\n .mdc-notched-outline__notch {\n max-width: calc(100% - #{$radius} * 2);\n }\n }\n\n .mdc-notched-outline__trailing {\n @include mdc-shape-radius(mdc-shape-mask-radius($radius, 0 1 1 0), $rtl-reflexive: true);\n }\n}\n\n@mixin mdc-notched-outline-floating-label-float-position($positionY, $positionX: 0%, $scale: .75) {\n @include mdc-floating-label-float-position($positionY + $mdc-notched-outline-label-adjust, $positionX, 1);\n\n .mdc-floating-label--float-above {\n font-size: ($scale * 1rem);\n }\n\n // Two selectors to ensure we select the appropriate class when applied from this component or a parent component.\n &.mdc-notched-outline--upgraded,\n .mdc-notched-outline--upgraded {\n @include mdc-floating-label-float-position($positionY, $positionX, $scale);\n\n // stylelint-disable-next-line no-descending-specificity\n .mdc-floating-label--float-above {\n font-size: 1rem;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/notched-outline/_mixins.scss","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n.mdc-button {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.875rem;\n line-height: 2.25rem;\n font-weight: 500;\n letter-spacing: 0.0892857143em;\n text-decoration: none;\n text-transform: uppercase;\n padding: 0 8px 0 8px;\n display: inline-flex;\n position: relative;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 64px;\n height: 36px;\n border: none;\n outline: none;\n /* @alternate */\n line-height: inherit;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-appearance: none;\n overflow: hidden;\n vertical-align: middle;\n border-radius: 4px;\n}\n.mdc-button::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n.mdc-button:active {\n outline: none;\n}\n.mdc-button:hover {\n cursor: pointer;\n}\n.mdc-button:disabled {\n background-color: transparent;\n color: rgba(0, 0, 0, 0.37);\n cursor: default;\n pointer-events: none;\n}\n.mdc-button.mdc-button--dense {\n border-radius: 4px;\n}\n.mdc-button:not(:disabled) {\n background-color: transparent;\n}\n.mdc-button .mdc-button__icon {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 8px;\n display: inline-block;\n width: 18px;\n height: 18px;\n font-size: 18px;\n vertical-align: top;\n}\n[dir=rtl] .mdc-button .mdc-button__icon, .mdc-button .mdc-button__icon[dir=rtl] {\n /* @noflip */\n margin-left: 8px;\n /* @noflip */\n margin-right: 0;\n}\n.mdc-button:not(:disabled) {\n color: #6200ee;\n /* @alternate */\n color: var(--mdc-theme-primary, #6200ee);\n}\n\n.mdc-button__label + .mdc-button__icon {\n /* @noflip */\n margin-left: 8px;\n /* @noflip */\n margin-right: 0;\n}\n[dir=rtl] .mdc-button__label + .mdc-button__icon, .mdc-button__label + .mdc-button__icon[dir=rtl] {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 8px;\n}\n\nsvg.mdc-button__icon {\n fill: currentColor;\n}\n\n.mdc-button--raised .mdc-button__icon,\n.mdc-button--unelevated .mdc-button__icon,\n.mdc-button--outlined .mdc-button__icon {\n /* @noflip */\n margin-left: -4px;\n /* @noflip */\n margin-right: 8px;\n}\n[dir=rtl] .mdc-button--raised .mdc-button__icon, .mdc-button--raised .mdc-button__icon[dir=rtl],\n[dir=rtl] .mdc-button--unelevated .mdc-button__icon,\n.mdc-button--unelevated .mdc-button__icon[dir=rtl],\n[dir=rtl] .mdc-button--outlined .mdc-button__icon,\n.mdc-button--outlined .mdc-button__icon[dir=rtl] {\n /* @noflip */\n margin-left: 8px;\n /* @noflip */\n margin-right: -4px;\n}\n.mdc-button--raised .mdc-button__label + .mdc-button__icon,\n.mdc-button--unelevated .mdc-button__label + .mdc-button__icon,\n.mdc-button--outlined .mdc-button__label + .mdc-button__icon {\n /* @noflip */\n margin-left: 8px;\n /* @noflip */\n margin-right: -4px;\n}\n[dir=rtl] .mdc-button--raised .mdc-button__label + .mdc-button__icon, .mdc-button--raised .mdc-button__label + .mdc-button__icon[dir=rtl],\n[dir=rtl] .mdc-button--unelevated .mdc-button__label + .mdc-button__icon,\n.mdc-button--unelevated .mdc-button__label + .mdc-button__icon[dir=rtl],\n[dir=rtl] .mdc-button--outlined .mdc-button__label + .mdc-button__icon,\n.mdc-button--outlined .mdc-button__label + .mdc-button__icon[dir=rtl] {\n /* @noflip */\n margin-left: -4px;\n /* @noflip */\n margin-right: 8px;\n}\n\n.mdc-button--raised,\n.mdc-button--unelevated {\n padding: 0 16px 0 16px;\n}\n.mdc-button--raised:disabled,\n.mdc-button--unelevated:disabled {\n background-color: rgba(0, 0, 0, 0.12);\n color: rgba(0, 0, 0, 0.37);\n}\n.mdc-button--raised:not(:disabled),\n.mdc-button--unelevated:not(:disabled) {\n background-color: #6200ee;\n}\n@supports not (-ms-ime-align: auto) {\n .mdc-button--raised:not(:disabled),\n.mdc-button--unelevated:not(:disabled) {\n /* @alternate */\n background-color: var(--mdc-theme-primary, #6200ee);\n }\n}\n.mdc-button--raised:not(:disabled),\n.mdc-button--unelevated:not(:disabled) {\n color: #fff;\n /* @alternate */\n color: var(--mdc-theme-on-primary, #fff);\n}\n\n.mdc-button--raised {\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdc-button--raised:hover, .mdc-button--raised:focus {\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n}\n.mdc-button--raised:active {\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.mdc-button--raised:disabled {\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n}\n\n.mdc-button--outlined {\n border-style: solid;\n padding: 0 14px 0 14px;\n border-width: 2px;\n}\n.mdc-button--outlined:disabled {\n border-color: rgba(0, 0, 0, 0.37);\n}\n.mdc-button--outlined:not(:disabled) {\n border-color: #6200ee;\n /* @alternate */\n border-color: var(--mdc-theme-primary, #6200ee);\n}\n\n.mdc-button--dense {\n height: 32px;\n font-size: 0.8125rem;\n}\n\n@-webkit-keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n\n@keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n@keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n.mdc-ripple-surface--test-edge-var-bug {\n --mdc-ripple-surface-test-edge-var: 1px solid #000;\n visibility: hidden;\n}\n.mdc-ripple-surface--test-edge-var-bug::before {\n border: var(--mdc-ripple-surface-test-edge-var);\n}\n\n.mdc-button {\n --mdc-ripple-fg-size: 0;\n --mdc-ripple-left: 0;\n --mdc-ripple-top: 0;\n --mdc-ripple-fg-scale: 1;\n --mdc-ripple-fg-translate-end: 0;\n --mdc-ripple-fg-translate-start: 0;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n will-change: transform, opacity;\n}\n.mdc-button::before, .mdc-button::after {\n position: absolute;\n border-radius: 50%;\n opacity: 0;\n pointer-events: none;\n content: \"\";\n}\n.mdc-button::before {\n transition: opacity 15ms linear, background-color 15ms linear;\n z-index: 1;\n}\n.mdc-button.mdc-ripple-upgraded::before {\n -webkit-transform: scale(var(--mdc-ripple-fg-scale, 1));\n transform: scale(var(--mdc-ripple-fg-scale, 1));\n}\n.mdc-button.mdc-ripple-upgraded::after {\n top: 0;\n /* @noflip */\n left: 0;\n -webkit-transform: scale(0);\n transform: scale(0);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n.mdc-button.mdc-ripple-upgraded--unbounded::after {\n top: var(--mdc-ripple-top, 0);\n /* @noflip */\n left: var(--mdc-ripple-left, 0);\n}\n.mdc-button.mdc-ripple-upgraded--foreground-activation::after {\n -webkit-animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n}\n.mdc-button.mdc-ripple-upgraded--foreground-deactivation::after {\n -webkit-animation: mdc-ripple-fg-opacity-out 150ms;\n animation: mdc-ripple-fg-opacity-out 150ms;\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n}\n.mdc-button::before, .mdc-button::after {\n top: calc(50% - 100%);\n /* @noflip */\n left: calc(50% - 100%);\n width: 200%;\n height: 200%;\n}\n.mdc-button.mdc-ripple-upgraded::after {\n width: var(--mdc-ripple-fg-size, 100%);\n height: var(--mdc-ripple-fg-size, 100%);\n}\n.mdc-button::before, .mdc-button::after {\n background-color: #6200ee;\n}\n@supports not (-ms-ime-align: auto) {\n .mdc-button::before, .mdc-button::after {\n /* @alternate */\n background-color: var(--mdc-theme-primary, #6200ee);\n }\n}\n.mdc-button:hover::before {\n opacity: 0.04;\n}\n.mdc-button:not(.mdc-ripple-upgraded):focus::before, .mdc-button.mdc-ripple-upgraded--background-focused::before {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n.mdc-button:not(.mdc-ripple-upgraded)::after {\n transition: opacity 150ms linear;\n}\n.mdc-button:not(.mdc-ripple-upgraded):active::after {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n.mdc-button.mdc-ripple-upgraded {\n --mdc-ripple-fg-opacity: 0.12;\n}\n\n.mdc-button--raised::before, .mdc-button--raised::after,\n.mdc-button--unelevated::before,\n.mdc-button--unelevated::after {\n background-color: #fff;\n}\n@supports not (-ms-ime-align: auto) {\n .mdc-button--raised::before, .mdc-button--raised::after,\n.mdc-button--unelevated::before,\n.mdc-button--unelevated::after {\n /* @alternate */\n background-color: var(--mdc-theme-on-primary, #fff);\n }\n}\n.mdc-button--raised:hover::before,\n.mdc-button--unelevated:hover::before {\n opacity: 0.08;\n}\n.mdc-button--raised:not(.mdc-ripple-upgraded):focus::before, .mdc-button--raised.mdc-ripple-upgraded--background-focused::before,\n.mdc-button--unelevated:not(.mdc-ripple-upgraded):focus::before,\n.mdc-button--unelevated.mdc-ripple-upgraded--background-focused::before {\n transition-duration: 75ms;\n opacity: 0.24;\n}\n.mdc-button--raised:not(.mdc-ripple-upgraded)::after,\n.mdc-button--unelevated:not(.mdc-ripple-upgraded)::after {\n transition: opacity 150ms linear;\n}\n.mdc-button--raised:not(.mdc-ripple-upgraded):active::after,\n.mdc-button--unelevated:not(.mdc-ripple-upgraded):active::after {\n transition-duration: 75ms;\n opacity: 0.24;\n}\n.mdc-button--raised.mdc-ripple-upgraded,\n.mdc-button--unelevated.mdc-ripple-upgraded {\n --mdc-ripple-fg-opacity: 0.24;\n}\n/*# sourceMappingURL=mdc.button.css.map*/","//\n// Copyright 2016 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/elevation/mixins\";\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"@material/ripple/mixins\";\n@import \"@material/rtl/mixins\";\n@import \"@material/theme/functions\";\n@import \"@material/theme/mixins\";\n@import \"@material/typography/mixins\";\n@import \"@material/shape/mixins\";\n@import \"@material/shape/functions\";\n@import \"./variables\";\n\n@mixin mdc-button-core-styles($query: mdc-feature-all()) {\n @include mdc-button-without-ripple($query);\n @include mdc-button-ripple($query);\n}\n\n// This API is intended for use by frameworks that may want to separate the ripple-related styles from the other\n// button styles. It is recommended that most users use `mdc-button-core-styles` instead.\n@mixin mdc-button-without-ripple($query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n\n // postcss-bem-linter: define button\n .mdc-button {\n @include mdc-button-base_($query);\n @include mdc-button-shape-radius(small, $query: $query);\n @include mdc-button-container-fill-color(transparent, $query);\n\n // The icon CSS class overrides styles defined in the .material-icons CSS\n // class, which is loaded separately so the order of CSS definitions is not\n // guaranteed. Therefore, increase specifity by nesting this class to ensure\n // overrides apply.\n .mdc-button__icon {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-button__icon_;\n }\n }\n\n @include mdc-button-ink-color(primary, $query);\n }\n\n .mdc-button__label + .mdc-button__icon {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-button__icon-trailing_;\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n svg.mdc-button__icon {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-button__icon-svg_;\n }\n }\n\n .mdc-button--raised,\n .mdc-button--unelevated,\n .mdc-button--outlined {\n .mdc-button__icon {\n @include mdc-feature-targets($feat-structure) {\n // Icons inside contained buttons have different styles due to increased button padding\n @include mdc-button__icon-contained_;\n }\n }\n\n .mdc-button__label + .mdc-button__icon {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-button__icon-contained-trailing_;\n }\n }\n }\n\n .mdc-button--raised,\n .mdc-button--unelevated {\n @include mdc-button--filled_($query);\n @include mdc-button-container-fill-color(primary, $query);\n @include mdc-button-ink-color(on-primary, $query);\n }\n\n .mdc-button--raised {\n @include mdc-button--raised_($query);\n }\n\n .mdc-button--outlined {\n @include mdc-button--outlined_($query);\n @include mdc-button-outline-width(2px, $query: $query);\n @include mdc-button-outline-color(primary, $query);\n }\n\n .mdc-button--dense {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-button--dense_;\n }\n }\n // postcss-bem-linter: end\n}\n\n// This API is intended for use by frameworks that may want to separate the ripple-related styles from the other\n// button styles. It is recommended that most users use `mdc-button-core-styles` instead.\n@mixin mdc-button-ripple($query: mdc-feature-all()) {\n @include mdc-ripple-common($query);\n\n .mdc-button {\n @include mdc-ripple-surface($query);\n @include mdc-ripple-radius-bounded($query: $query);\n @include mdc-states(primary, false, $query);\n }\n\n .mdc-button--raised,\n .mdc-button--unelevated {\n @include mdc-states(on-primary, false, $query);\n }\n}\n\n@mixin mdc-button-filled-accessible($container-fill-color, $query: mdc-feature-all()) {\n $fill-tone: mdc-theme-tone($container-fill-color);\n\n @include mdc-button-container-fill-color($container-fill-color, $query);\n\n @if ($fill-tone == \"dark\") {\n @include mdc-button-ink-color(text-primary-on-dark, $query);\n @include mdc-states(text-primary-on-dark, $query: $query);\n } @else {\n @include mdc-button-ink-color(text-primary-on-light, $query);\n @include mdc-states(text-primary-on-light, $query: $query);\n }\n}\n\n@mixin mdc-button-container-fill-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n // :not(:disabled) is used to support link styled as button\n // as link does not support :enabled style\n &:not(:disabled) {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(background-color, $color, $edgeOptOut: true);\n }\n }\n}\n\n@mixin mdc-button-outline-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n &:not(:disabled) {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(border-color, $color);\n }\n }\n}\n\n@mixin mdc-button-icon-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n &:not(:disabled) .mdc-button__icon {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n@mixin mdc-button-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n &:not(:disabled) {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n@mixin mdc-button-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) {\n @include mdc-shape-radius(\n mdc-shape-resolve-percentage-radius($mdc-button-height, $radius),\n $rtl-reflexive,\n $query: $query\n );\n\n &.mdc-button--dense {\n @include mdc-shape-radius(\n mdc-shape-resolve-percentage-radius($mdc-dense-button-height, $radius),\n $rtl-reflexive,\n $query: $query\n );\n }\n}\n\n@mixin mdc-button-horizontal-padding($padding, $query: mdc-feature-all()) {\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n // $padding should be a single value; enforce it by specifying all 4 sides in the output\n padding: 0 $padding 0 $padding;\n }\n}\n\n@mixin mdc-button-outline-width(\n $outline-width,\n $padding: $mdc-button-contained-horizontal-padding,\n $query: mdc-feature-all()\n) {\n $feat-structure: mdc-feature-create-target($query, structure);\n // Note: Adjust padding to maintain consistent width with non-outlined buttons\n $padding-value: max($padding - $outline-width, 0);\n\n @include mdc-button-horizontal-padding($padding-value, $query);\n\n @include mdc-feature-targets($feat-structure) {\n border-width: $outline-width;\n }\n}\n\n@mixin mdc-button-base_($query) {\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-typography(button, $query);\n @include mdc-button-horizontal-padding($mdc-button-horizontal-padding, $query);\n\n @include mdc-feature-targets($feat-structure) {\n display: inline-flex;\n position: relative;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 64px;\n height: $mdc-button-height;\n border: none;\n outline: none;\n /* @alternate */\n line-height: inherit;\n user-select: none;\n -webkit-appearance: none;\n overflow: hidden;\n vertical-align: middle;\n }\n\n &::-moz-focus-inner {\n @include mdc-feature-targets($feat-structure) {\n padding: 0;\n border: 0;\n }\n }\n\n // postcss-bem-linter: ignore\n &:active {\n @include mdc-feature-targets($feat-structure) {\n outline: none;\n }\n }\n\n &:hover {\n @include mdc-feature-targets($feat-structure) {\n cursor: pointer;\n }\n }\n\n &:disabled {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(background-color, transparent);\n\n color: $mdc-button-disabled-ink-color;\n }\n\n @include mdc-feature-targets($feat-structure) {\n cursor: default;\n pointer-events: none;\n }\n }\n}\n\n@mixin mdc-button__icon_ {\n @include mdc-rtl-reflexive-box(margin, right, 8px);\n\n display: inline-block;\n width: 18px;\n height: 18px;\n font-size: 18px;\n vertical-align: top;\n}\n\n@mixin mdc-button__icon-trailing_ {\n @include mdc-rtl-reflexive-box(margin, left, 8px);\n}\n\n@mixin mdc-button__icon-svg_ {\n fill: currentColor;\n}\n\n@mixin mdc-button__icon-contained_ {\n @include mdc-rtl-reflexive-property(margin, -4px, 8px);\n}\n\n@mixin mdc-button__icon-contained-trailing_ {\n @include mdc-rtl-reflexive-property(margin, 8px, -4px);\n}\n\n@mixin mdc-button--outlined_($query) {\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-feature-targets($feat-structure) {\n border-style: solid;\n }\n\n &:disabled {\n @include mdc-feature-targets($feat-color) {\n border-color: $mdc-button-disabled-ink-color;\n }\n }\n}\n\n@mixin mdc-button--filled_($query) {\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n\n @include mdc-button-horizontal-padding($mdc-button-contained-horizontal-padding, $query);\n\n &:disabled {\n @include mdc-feature-targets($feat-color) {\n background-color: rgba(mdc-theme-prop-value(on-surface), .12);\n color: $mdc-button-disabled-ink-color;\n }\n }\n}\n\n@mixin mdc-button--raised_($query) {\n $feat-animation: mdc-feature-create-target($query, animation);\n $feat-color: mdc-feature-create-target($query, color);\n\n @include mdc-elevation(2, $query: $query);\n\n &:hover,\n &:focus {\n @include mdc-elevation(4, $query: $query);\n }\n\n &:active {\n @include mdc-elevation(8, $query: $query);\n }\n\n &:disabled {\n @include mdc-elevation(0, $query: $query);\n }\n\n @include mdc-feature-targets($feat-animation) {\n transition: mdc-elevation-transition-value();\n }\n}\n\n@mixin mdc-button--dense_() {\n height: $mdc-dense-button-height;\n font-size: .8125rem; // 13sp\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-button/mdc-button.scss","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n.mdc-list {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 1rem;\n line-height: 1.75rem;\n font-weight: 400;\n letter-spacing: 0.009375em;\n text-decoration: inherit;\n text-transform: inherit;\n /* @alternate */\n line-height: 1.5rem;\n margin: 0;\n padding: 8px 0;\n list-style-type: none;\n color: rgba(0, 0, 0, 0.87);\n /* @alternate */\n color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));\n}\n\n.mdc-list-item__secondary-text {\n color: rgba(0, 0, 0, 0.54);\n /* @alternate */\n color: var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54));\n}\n\n.mdc-list-item__graphic {\n background-color: transparent;\n}\n\n.mdc-list-item__graphic {\n color: rgba(0, 0, 0, 0.38);\n /* @alternate */\n color: var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, 0.38));\n}\n\n.mdc-list-item__meta {\n color: rgba(0, 0, 0, 0.38);\n /* @alternate */\n color: var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, 0.38));\n}\n\n.mdc-list-group__subheader {\n color: rgba(0, 0, 0, 0.87);\n /* @alternate */\n color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));\n}\n\n.mdc-list--dense {\n padding-top: 4px;\n padding-bottom: 4px;\n font-size: 0.812rem;\n}\n\n.mdc-list-item {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: flex-start;\n height: 48px;\n padding: 0 16px;\n overflow: hidden;\n}\n.mdc-list-item:focus {\n outline: none;\n}\n\n.mdc-list-item--selected,\n.mdc-list-item--activated {\n color: #6200ee;\n /* @alternate */\n color: var(--mdc-theme-primary, #6200ee);\n}\n.mdc-list-item--selected .mdc-list-item__graphic,\n.mdc-list-item--activated .mdc-list-item__graphic {\n color: #6200ee;\n /* @alternate */\n color: var(--mdc-theme-primary, #6200ee);\n}\n\n.mdc-list-item--disabled {\n color: rgba(0, 0, 0, 0.38);\n /* @alternate */\n color: var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, 0.38));\n}\n\n.mdc-list-item__graphic {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 32px;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n fill: currentColor;\n}\n.mdc-list-item[dir=rtl] .mdc-list-item__graphic, [dir=rtl] .mdc-list-item .mdc-list-item__graphic {\n /* @noflip */\n margin-left: 32px;\n /* @noflip */\n margin-right: 0;\n}\n\n.mdc-list .mdc-list-item__graphic {\n display: inline-flex;\n}\n\n.mdc-list-item__meta {\n /* @noflip */\n margin-left: auto;\n /* @noflip */\n margin-right: 0;\n}\n.mdc-list-item[dir=rtl] .mdc-list-item__meta, [dir=rtl] .mdc-list-item .mdc-list-item__meta {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: auto;\n}\n\n.mdc-list-item__text {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.mdc-list-item__text[for] {\n pointer-events: none;\n}\n\n.mdc-list-item__primary-text {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n margin-bottom: -20px;\n display: block;\n}\n.mdc-list-item__primary-text::before {\n display: inline-block;\n width: 0;\n height: 32px;\n content: \"\";\n vertical-align: 0;\n}\n.mdc-list-item__primary-text::after {\n display: inline-block;\n width: 0;\n height: 20px;\n content: \"\";\n vertical-align: -20px;\n}\n.mdc-list--dense .mdc-list-item__primary-text {\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n margin-bottom: -20px;\n}\n.mdc-list--dense .mdc-list-item__primary-text::before {\n display: inline-block;\n width: 0;\n height: 24px;\n content: \"\";\n vertical-align: 0;\n}\n.mdc-list--dense .mdc-list-item__primary-text::after {\n display: inline-block;\n width: 0;\n height: 20px;\n content: \"\";\n vertical-align: -20px;\n}\n\n.mdc-list-item__secondary-text {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 400;\n letter-spacing: 0.0178571429em;\n text-decoration: inherit;\n text-transform: inherit;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n display: block;\n}\n.mdc-list-item__secondary-text::before {\n display: inline-block;\n width: 0;\n height: 20px;\n content: \"\";\n vertical-align: 0;\n}\n.mdc-list--dense .mdc-list-item__secondary-text {\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n font-size: inherit;\n}\n.mdc-list--dense .mdc-list-item__secondary-text::before {\n display: inline-block;\n width: 0;\n height: 20px;\n content: \"\";\n vertical-align: 0;\n}\n\n.mdc-list--dense .mdc-list-item {\n height: 40px;\n}\n\n.mdc-list--dense .mdc-list-item__graphic {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 36px;\n width: 20px;\n height: 20px;\n}\n.mdc-list-item[dir=rtl] .mdc-list--dense .mdc-list-item__graphic, [dir=rtl] .mdc-list-item .mdc-list--dense .mdc-list-item__graphic {\n /* @noflip */\n margin-left: 36px;\n /* @noflip */\n margin-right: 0;\n}\n\n.mdc-list--avatar-list .mdc-list-item {\n height: 56px;\n}\n\n.mdc-list--avatar-list .mdc-list-item__graphic {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 16px;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n}\n.mdc-list-item[dir=rtl] .mdc-list--avatar-list .mdc-list-item__graphic, [dir=rtl] .mdc-list-item .mdc-list--avatar-list .mdc-list-item__graphic {\n /* @noflip */\n margin-left: 16px;\n /* @noflip */\n margin-right: 0;\n}\n\n.mdc-list--two-line .mdc-list-item__text {\n align-self: flex-start;\n}\n\n.mdc-list--two-line .mdc-list-item {\n height: 72px;\n}\n\n.mdc-list--two-line.mdc-list--dense .mdc-list-item,\n.mdc-list--avatar-list.mdc-list--dense .mdc-list-item {\n height: 60px;\n}\n\n.mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 20px;\n width: 36px;\n height: 36px;\n}\n.mdc-list-item[dir=rtl] .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic, [dir=rtl] .mdc-list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic {\n /* @noflip */\n margin-left: 20px;\n /* @noflip */\n margin-right: 0;\n}\n\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item {\n cursor: pointer;\n}\n\na.mdc-list-item {\n color: inherit;\n text-decoration: none;\n}\n\n.mdc-list-divider {\n height: 0;\n margin: 0;\n border: none;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n}\n\n.mdc-list-divider {\n border-bottom-color: rgba(0, 0, 0, 0.12);\n}\n\n.mdc-list-divider--padded {\n margin: 0 16px;\n}\n\n.mdc-list-divider--inset {\n /* @noflip */\n margin-left: 72px;\n /* @noflip */\n margin-right: 0;\n width: calc(100% - 72px);\n}\n.mdc-list-group[dir=rtl] .mdc-list-divider--inset, [dir=rtl] .mdc-list-group .mdc-list-divider--inset {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 72px;\n}\n\n.mdc-list-divider--inset.mdc-list-divider--padded {\n width: calc(100% - 72px - 16px);\n}\n\n.mdc-list-group .mdc-list {\n padding: 0;\n}\n\n.mdc-list-group__subheader {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 1rem;\n line-height: 1.75rem;\n font-weight: 400;\n letter-spacing: 0.009375em;\n text-decoration: inherit;\n text-transform: inherit;\n margin: 0.75rem 16px;\n}\n\n@-webkit-keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n\n@keyframes mdc-ripple-fg-radius-in {\n from {\n -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n to {\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@keyframes mdc-ripple-fg-opacity-in {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: 0;\n }\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n}\n@-webkit-keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n@keyframes mdc-ripple-fg-opacity-out {\n from {\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n to {\n opacity: 0;\n }\n}\n.mdc-ripple-surface--test-edge-var-bug {\n --mdc-ripple-surface-test-edge-var: 1px solid #000;\n visibility: hidden;\n}\n.mdc-ripple-surface--test-edge-var-bug::before {\n border: var(--mdc-ripple-surface-test-edge-var);\n}\n\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item {\n --mdc-ripple-fg-size: 0;\n --mdc-ripple-left: 0;\n --mdc-ripple-top: 0;\n --mdc-ripple-fg-scale: 1;\n --mdc-ripple-fg-translate-end: 0;\n --mdc-ripple-fg-translate-start: 0;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n will-change: transform, opacity;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item::after {\n position: absolute;\n border-radius: 50%;\n opacity: 0;\n pointer-events: none;\n content: \"\";\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item::before {\n transition: opacity 15ms linear, background-color 15ms linear;\n z-index: 1;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded::before {\n -webkit-transform: scale(var(--mdc-ripple-fg-scale, 1));\n transform: scale(var(--mdc-ripple-fg-scale, 1));\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded::after {\n top: 0;\n /* @noflip */\n left: 0;\n -webkit-transform: scale(0);\n transform: scale(0);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--unbounded::after {\n top: var(--mdc-ripple-top, 0);\n /* @noflip */\n left: var(--mdc-ripple-left, 0);\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--foreground-activation::after {\n -webkit-animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--foreground-deactivation::after {\n -webkit-animation: mdc-ripple-fg-opacity-out 150ms;\n animation: mdc-ripple-fg-opacity-out 150ms;\n -webkit-transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item::after {\n top: calc(50% - 100%);\n /* @noflip */\n left: calc(50% - 100%);\n width: 200%;\n height: 200%;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded::after {\n width: var(--mdc-ripple-fg-size, 100%);\n height: var(--mdc-ripple-fg-size, 100%);\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item::after {\n background-color: #000;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item:hover::before {\n opacity: 0.04;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded):focus::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--background-focused::before {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded)::after {\n transition: opacity 150ms linear;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded):active::after {\n transition-duration: 75ms;\n opacity: 0.12;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded {\n --mdc-ripple-fg-opacity: 0.12;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated::before {\n opacity: 0.12;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated::after {\n background-color: #6200ee;\n}\n@supports not (-ms-ime-align: auto) {\n :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated::after {\n /* @alternate */\n background-color: var(--mdc-theme-primary, #6200ee);\n }\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated:hover::before {\n opacity: 0.16;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded):focus::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated.mdc-ripple-upgraded--background-focused::before {\n transition-duration: 75ms;\n opacity: 0.24;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded)::after {\n transition: opacity 150ms linear;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded):active::after {\n transition-duration: 75ms;\n opacity: 0.24;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--activated.mdc-ripple-upgraded {\n --mdc-ripple-fg-opacity: 0.24;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected::before {\n opacity: 0.08;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected::after {\n background-color: #6200ee;\n}\n@supports not (-ms-ime-align: auto) {\n :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected::after {\n /* @alternate */\n background-color: var(--mdc-theme-primary, #6200ee);\n }\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected:hover::before {\n opacity: 0.12;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded):focus::before, :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected.mdc-ripple-upgraded--background-focused::before {\n transition-duration: 75ms;\n opacity: 0.2;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded)::after {\n transition: opacity 150ms linear;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded):active::after {\n transition-duration: 75ms;\n opacity: 0.2;\n}\n:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item--selected.mdc-ripple-upgraded {\n --mdc-ripple-fg-opacity: 0.2;\n}\n/*# sourceMappingURL=mdc.list.css.map*/","// Copyright 2016 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n@import \"@material/rtl/mixins\";\n@import \"@material/theme/mixins\";\n@import \"@material/shape/mixins\";\n@import \"@material/ripple/mixins\";\n@import \"@material/theme/functions\";\n@import \"@material/typography/mixins\";\n@import \"@material/typography/variables\";\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"./variables\";\n\n//\n// Public\n//\n\n@mixin mdc-list-core-styles($query: mdc-feature-all()) {\n @include mdc-list-without-ripple($query);\n @include mdc-list-ripple($query);\n}\n\n// This API is intended for use by frameworks that may want to separate the ripple-related styles from the other\n// list styles. It is recommended that most users use `mdc-list-core-styles` instead.\n@mixin mdc-list-without-ripple($query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n $feat-typography: mdc-feature-create-target($query, typography);\n\n $item-primary-text-baseline-height: 32px;\n $item-secondary-text-baseline-height: 20px;\n $dense-item-primary-text-baseline-height: 24px;\n $divider-color: if(\n mdc-theme-tone($mdc-theme-background) == \"dark\",\n $mdc-list-divider-color-on-dark-bg,\n $mdc-list-divider-color-on-light-bg\n );\n\n .mdc-list {\n @include mdc-list-base_($query);\n }\n\n @include mdc-list-item-secondary-text-ink-color(text-secondary-on-background, $query);\n @include mdc-list-item-graphic-fill-color(transparent, $query);\n @include mdc-list-item-graphic-ink-color(text-icon-on-background, $query);\n @include mdc-list-item-meta-ink-color(text-hint-on-background, $query);\n @include mdc-list-group-subheader-ink-color(text-primary-on-background, $query);\n\n .mdc-list--dense {\n @include mdc-feature-targets($feat-structure) {\n padding-top: 4px;\n padding-bottom: 4px;\n font-size: .812rem;\n }\n }\n\n .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-item-base_;\n }\n }\n\n // \"Selected\" is ephemeral and likely to change soon. E.g., selecting one or more photos to share in Google Photos.\n // \"Activated\" is more permanent. E.g., the currently highlighted navigation destination in a drawer.\n .mdc-list-item--selected,\n .mdc-list-item--activated {\n @include mdc-list-item-primary-text-ink-color(primary, $query);\n @include mdc-list-item-graphic-ink-color(primary, $query);\n }\n\n .mdc-list-item--disabled {\n @include mdc-list-item-primary-text-ink-color(text-disabled-on-background, $query);\n }\n\n .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-graphic-size_(24px);\n\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n fill: currentColor;\n }\n }\n\n // Extra specificity is to override .material-icons display style if used in\n // conjunction with mdc-list-item__graphic\n // stylelint-disable plugin/selector-bem-pattern\n .mdc-list .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n display: inline-flex;\n }\n }\n // stylelint-enable plugin/selector-bem-pattern\n\n .mdc-list-item__meta {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-rtl-reflexive-property(margin, auto, 0, \".mdc-list-item\");\n }\n }\n\n .mdc-list-item__text {\n @include mdc-typography-overflow-ellipsis($query);\n }\n\n // Disable interaction on label elements that may automatically\n // toggle corresponding checkbox / radio input.\n .mdc-list-item__text[for] {\n @include mdc-feature-targets($feat-structure) {\n pointer-events: none;\n }\n }\n\n .mdc-list-item__primary-text {\n @include mdc-typography-overflow-ellipsis($query);\n @include mdc-typography-baseline-top($item-primary-text-baseline-height, $query);\n @include mdc-typography-baseline-bottom($item-secondary-text-baseline-height, $query);\n\n @include mdc-feature-targets($feat-structure) {\n display: block;\n }\n\n // stylelint-disable plugin/selector-bem-pattern\n .mdc-list--dense & {\n @include mdc-typography-baseline-top($dense-item-primary-text-baseline-height, $query);\n @include mdc-typography-baseline-bottom($item-secondary-text-baseline-height, $query);\n }\n // stylelint-enable plugin/selector-bem-pattern\n }\n\n .mdc-list-item__secondary-text {\n @include mdc-typography(body2, $query);\n @include mdc-typography-overflow-ellipsis($query);\n @include mdc-typography-baseline-top($item-secondary-text-baseline-height, $query);\n\n @include mdc-feature-targets($feat-structure) {\n display: block;\n }\n\n // stylelint-disable plugin/selector-bem-pattern\n .mdc-list--dense & {\n @include mdc-typography-baseline-top($item-secondary-text-baseline-height, $query);\n\n @include mdc-feature-targets($feat-structure) {\n font-size: inherit;\n }\n }\n // stylelint-enable plugin/selector-bem-pattern\n }\n\n // stylelint-disable plugin/selector-bem-pattern\n .mdc-list--dense .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n height: 40px;\n }\n }\n\n .mdc-list--dense .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-graphic-size_(20px);\n }\n }\n\n .mdc-list--avatar-list .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n height: 56px;\n }\n }\n\n .mdc-list--avatar-list .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-graphic-size_(40px);\n\n border-radius: 50%;\n }\n }\n\n .mdc-list--two-line .mdc-list-item__text {\n @include mdc-feature-targets($feat-structure) {\n align-self: flex-start;\n }\n }\n\n .mdc-list--two-line .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n height: 72px;\n }\n }\n\n .mdc-list--two-line.mdc-list--dense .mdc-list-item,\n .mdc-list--avatar-list.mdc-list--dense .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n height: 60px;\n }\n }\n\n .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-graphic-size_(36px);\n }\n }\n\n // Only change mouse cursor for interactive list items which are not disabled.\n :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n cursor: pointer;\n }\n }\n\n // Override anchor tag styles for the use-case of a list being used for navigation\n // stylelint-disable selector-max-type,selector-no-qualifying-type\n a.mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n color: inherit;\n text-decoration: none;\n }\n }\n // stylelint-enable selector-max-type,selector-no-qualifying-type\n\n .mdc-list-divider {\n @include mdc-feature-targets($feat-structure) {\n height: 0;\n margin: 0;\n border: none;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n }\n }\n\n // Note: ideally we'd be able to hoist this to the top-level `$feat-color`, but doing so\n // will cause the `border` declaration on `.mdc-list-divider` above to override it.\n @include mdc-list-divider-color($divider-color, $query);\n\n .mdc-list-divider--padded {\n @include mdc-feature-targets($feat-structure) {\n // Leave gaps on each side to match the padding on list items\n margin: 0 $mdc-list-side-padding;\n }\n }\n\n .mdc-list-divider--inset {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-rtl-reflexive-box(margin, left, $mdc-list-text-offset, \".mdc-list-group\");\n\n width: calc(100% - #{$mdc-list-text-offset});\n }\n }\n\n .mdc-list-divider--inset.mdc-list-divider--padded {\n @include mdc-feature-targets($feat-structure) {\n width: calc(100% - #{$mdc-list-text-offset} - #{$mdc-list-side-padding});\n }\n }\n\n .mdc-list-group {\n @include mdc-feature-targets($feat-structure) {\n // Cancel top/bottom padding on individual lists within group\n .mdc-list {\n padding: 0;\n }\n }\n }\n\n .mdc-list-group__subheader {\n $mdc-list-subheader-virtual-height: 3rem;\n $mdc-list-subheader-leading: map-get(map-get($mdc-typography-styles, body1), line-height);\n $mdc-list-subheader-margin: ($mdc-list-subheader-virtual-height - $mdc-list-subheader-leading) / 2;\n\n @include mdc-typography(subtitle1, $query);\n\n @include mdc-feature-targets($feat-structure) {\n margin: $mdc-list-subheader-margin $mdc-list-side-padding;\n }\n }\n}\n\n// This API is intended for use by frameworks that may want to separate the ripple-related styles from the other\n// list styles. It is recommended that most users use `mdc-list-core-styles` instead.\n@mixin mdc-list-ripple($query: mdc-feature-all()) {\n @include mdc-ripple-common($query);\n\n // List items should support states by default, but it should be possible to opt out.\n // Direct child combinator is necessary for non-interactive modifier on parent to not\n // match this selector.\n :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item {\n @include mdc-list-item-interactive-ripple_($query);\n }\n}\n\n@mixin mdc-list-item-primary-text-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n@mixin mdc-list-item-secondary-text-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-item__secondary-text {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n@mixin mdc-list-item-graphic-fill-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(background-color, $color);\n }\n }\n}\n\n@mixin mdc-list-item-graphic-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n@mixin mdc-list-item-meta-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-item__meta {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n@mixin mdc-list-item-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) {\n .mdc-list-item {\n @include mdc-shape-radius($radius, $rtl-reflexive, $query: $query);\n }\n}\n\n@mixin mdc-list-divider-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-divider {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(border-bottom-color, $color);\n }\n }\n}\n\n@mixin mdc-list-group-subheader-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-group__subheader {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n//\n// Private\n//\n\n@mixin mdc-list-base_($query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n $feat-typography: mdc-feature-create-target($query, typography);\n\n @include mdc-typography(subtitle1, $query);\n\n @include mdc-feature-targets($feat-typography) {\n // According to the mocks and stickersheet, the line-height is\n // adjusted to 24px for text content, same as for body1.\n /* @alternate */\n line-height: map-get(map-get($mdc-typography-styles, body1), line-height);\n }\n\n @include mdc-feature-targets($feat-structure) {\n margin: 0;\n padding: 8px 0;\n list-style-type: none;\n }\n\n @include mdc-list-item-primary-text-ink-color(text-primary-on-background, $query);\n}\n\n@mixin mdc-list-item-base_ {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: flex-start;\n height: 48px;\n padding: 0 $mdc-list-side-padding;\n overflow: hidden;\n\n &:focus {\n outline: none;\n }\n}\n\n// Ripple styles for an interactive list item (one that is enabled and inside an interactive list).\n@mixin mdc-list-item-interactive-ripple_($query: mdc-feature-all()) {\n @include mdc-ripple-surface($query);\n @include mdc-ripple-radius-bounded($query: $query);\n @include mdc-states(mdc-theme-prop-value(on-surface), false, $query);\n @include mdc-states-activated(primary, false, $query);\n @include mdc-states-selected(primary, false, $query);\n}\n\n// Sets the width and height of the graphic element, as well as calculates the margins for\n// the graphic element such that the text is always offset by 72px, which is defined within\n// the spec.\n@mixin mdc-list-graphic-size_($size) {\n $text-offset: 72px;\n $side-padding: $mdc-list-side-padding;\n $margin-value: $text-offset - $side-padding - $size;\n\n @include mdc-rtl-reflexive-box(margin, right, $margin-value, \".mdc-list-item\");\n\n width: $size;\n height: $size;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-list/mdc-list.scss","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n// MDC Ripple keyframes are split into their own file so that _mixins.scss can rely on them.\n\n@import \"@material/animation/variables\";\n@import \"./variables\";\n\n@mixin mdc-ripple-keyframes_ {\n @keyframes mdc-ripple-fg-radius-in {\n from {\n animation-timing-function: $mdc-animation-standard-curve-timing-function;\n // NOTE: For these keyframes, we do not need custom property fallbacks because they are only\n // used in conjunction with `.mdc-ripple-upgraded`. Since MDCRippleFoundation checks to ensure\n // that custom properties are supported within the browser before adding this class, we can\n // safely use them without a fallback.\n transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);\n }\n\n to {\n transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));\n }\n }\n\n @keyframes mdc-ripple-fg-opacity-in {\n from {\n animation-timing-function: linear;\n opacity: 0;\n }\n\n to {\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n }\n\n @keyframes mdc-ripple-fg-opacity-out {\n from {\n animation-timing-function: linear;\n opacity: var(--mdc-ripple-fg-opacity, 0);\n }\n\n to {\n opacity: 0;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/ripple/_keyframes.scss",".rmwc-icon {\n \n}\n\n.rmwc-icon--image {\n min-width: 1em;\n min-height: 1em;\n background-repeat: no-repeat;\n font-size: 1.5rem;\n background-size: 1em;\n background-position: center center;\n}\n\n.rmwc-icon--size-xsmall {\n font-size: 1.125rem;\n width: 1em;\n height: 1em;\n}\n\n.rmwc-icon--size-small {\n font-size: 1.25rem;\n width: 1em;\n height: 1em;\n}\n\n.rmwc-icon--size-medium {\n font-size: 1.5rem;\n width: 1em;\n height: 1em;\n}\n\n.rmwc-icon--size-large {\n font-size: 2.25rem;\n width: 1em;\n height: 1em;\n}\n\n.rmwc-icon--size-xlarge {\n font-size: 3rem;\n width: 1em;\n height: 1em;\n}\n","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n.mdc-drawer {\n border-color: rgba(0, 0, 0, 0.12);\n background-color: #fff;\n /* @noflip */\n border-radius: 0 0 0 0;\n z-index: 6;\n width: 256px;\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n box-sizing: border-box;\n height: 100%;\n transition-property: -webkit-transform;\n transition-property: transform;\n transition-property: transform, -webkit-transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n /* @noflip */\n border-right-width: 1px;\n /* @noflip */\n border-right-style: solid;\n overflow: hidden;\n}\n.mdc-drawer .mdc-drawer__title {\n color: rgba(0, 0, 0, 0.87);\n}\n.mdc-drawer .mdc-list-group__subheader {\n color: rgba(0, 0, 0, 0.6);\n}\n.mdc-drawer .mdc-drawer__subtitle {\n color: rgba(0, 0, 0, 0.6);\n}\n.mdc-drawer .mdc-list-item__graphic {\n color: rgba(0, 0, 0, 0.6);\n}\n.mdc-drawer .mdc-list-item {\n color: rgba(0, 0, 0, 0.87);\n}\n.mdc-drawer .mdc-list-item--activated .mdc-list-item__graphic {\n color: #6200ee;\n}\n.mdc-drawer .mdc-list-item--activated {\n color: rgba(98, 0, 238, 0.87);\n}\n[dir=rtl] .mdc-drawer, .mdc-drawer[dir=rtl] {\n /* @noflip */\n border-radius: 0 0 0 0;\n}\n.mdc-drawer .mdc-list-item {\n border-radius: 4px;\n}\n.mdc-drawer.mdc-drawer--open:not(.mdc-drawer--closing) + .mdc-drawer-app-content {\n /* @noflip */\n margin-left: 256px;\n /* @noflip */\n margin-right: 0;\n}\n[dir=rtl] .mdc-drawer.mdc-drawer--open:not(.mdc-drawer--closing) + .mdc-drawer-app-content, .mdc-drawer.mdc-drawer--open:not(.mdc-drawer--closing) + .mdc-drawer-app-content[dir=rtl] {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 256px;\n}\n[dir=rtl] .mdc-drawer, .mdc-drawer[dir=rtl] {\n /* @noflip */\n border-right-width: 0;\n /* @noflip */\n border-left-width: 1px;\n /* @noflip */\n border-right-style: none;\n /* @noflip */\n border-left-style: solid;\n}\n.mdc-drawer .mdc-list-item {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.875rem;\n line-height: 1.375rem;\n font-weight: 500;\n letter-spacing: 0.0071428571em;\n text-decoration: inherit;\n text-transform: inherit;\n height: calc(48px - 2 * 4px);\n margin: 8px 8px;\n padding: 0 8px;\n}\n.mdc-drawer .mdc-list-item:nth-child(1) {\n margin-top: 2px;\n}\n.mdc-drawer .mdc-list-item:nth-last-child(1) {\n margin-bottom: 0;\n}\n.mdc-drawer .mdc-list-group__subheader {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 400;\n letter-spacing: 0.0178571429em;\n text-decoration: inherit;\n text-transform: inherit;\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n margin: 0;\n padding: 0 16px;\n}\n.mdc-drawer .mdc-list-group__subheader::before {\n display: inline-block;\n width: 0;\n height: 24px;\n content: \"\";\n vertical-align: 0;\n}\n.mdc-drawer .mdc-list-divider {\n margin: 3px 0 4px 0;\n}\n.mdc-drawer .mdc-list-item__text,\n.mdc-drawer .mdc-list-item__graphic {\n pointer-events: none;\n}\n\n.mdc-drawer--animate {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n}\n[dir=rtl] .mdc-drawer--animate, .mdc-drawer--animate[dir=rtl] {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n\n.mdc-drawer--opening {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n transition-duration: 250ms;\n}\n[dir=rtl] .mdc-drawer--opening, .mdc-drawer--opening[dir=rtl] {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n}\n\n.mdc-drawer--closing {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n transition-duration: 200ms;\n}\n[dir=rtl] .mdc-drawer--closing, .mdc-drawer--closing[dir=rtl] {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n\n.mdc-drawer__header {\n flex-shrink: 0;\n box-sizing: border-box;\n min-height: 64px;\n padding: 0 16px 4px;\n}\n\n.mdc-drawer__title {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 1.25rem;\n line-height: 2rem;\n font-weight: 500;\n letter-spacing: 0.0125em;\n text-decoration: inherit;\n text-transform: inherit;\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n margin-bottom: -20px;\n}\n.mdc-drawer__title::before {\n display: inline-block;\n width: 0;\n height: 36px;\n content: \"\";\n vertical-align: 0;\n}\n.mdc-drawer__title::after {\n display: inline-block;\n width: 0;\n height: 20px;\n content: \"\";\n vertical-align: -20px;\n}\n\n.mdc-drawer__subtitle {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 400;\n letter-spacing: 0.0178571429em;\n text-decoration: inherit;\n text-transform: inherit;\n display: block;\n margin-top: 0;\n /* @alternate */\n line-height: normal;\n margin-bottom: 0;\n}\n.mdc-drawer__subtitle::before {\n display: inline-block;\n width: 0;\n height: 20px;\n content: \"\";\n vertical-align: 0;\n}\n\n.mdc-drawer__content {\n height: 100%;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.mdc-drawer--dismissible {\n /* @noflip */\n left: 0;\n /* @noflip */\n right: initial;\n display: none;\n position: absolute;\n}\n[dir=rtl] .mdc-drawer--dismissible, .mdc-drawer--dismissible[dir=rtl] {\n /* @noflip */\n left: initial;\n /* @noflip */\n right: 0;\n}\n.mdc-drawer--dismissible.mdc-drawer--open {\n display: flex;\n}\n\n.mdc-drawer-app-content {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 0;\n position: relative;\n}\n[dir=rtl] .mdc-drawer-app-content, .mdc-drawer-app-content[dir=rtl] {\n /* @noflip */\n margin-left: 0;\n /* @noflip */\n margin-right: 0;\n}\n\n.mdc-drawer--modal {\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\n /* @noflip */\n left: 0;\n /* @noflip */\n right: initial;\n display: none;\n position: fixed;\n}\n.mdc-drawer--modal + .mdc-drawer-scrim {\n background-color: rgba(0, 0, 0, 0.32);\n}\n[dir=rtl] .mdc-drawer--modal, .mdc-drawer--modal[dir=rtl] {\n /* @noflip */\n left: initial;\n /* @noflip */\n right: 0;\n}\n.mdc-drawer--modal.mdc-drawer--open {\n display: flex;\n}\n\n.mdc-drawer-scrim {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n z-index: 5;\n}\n.mdc-drawer--open + .mdc-drawer-scrim {\n display: block;\n}\n.mdc-drawer--animate + .mdc-drawer-scrim {\n opacity: 0;\n}\n.mdc-drawer--opening + .mdc-drawer-scrim {\n transition-duration: 250ms;\n opacity: 1;\n}\n.mdc-drawer--closing + .mdc-drawer-scrim {\n transition-duration: 200ms;\n opacity: 0;\n}\n/*# sourceMappingURL=mdc.drawer.css.map*/","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/animation/functions\";\n@import \"@material/animation/variables\";\n@import \"@material/rtl/mixins\";\n@import \"@material/typography/mixins\";\n@import \"@material/typography/variables\";\n@import \"@material/theme/variables\";\n@import \"@material/theme/mixins\";\n@import \"./variables\";\n@import \"./mixins\";\n\n// postcss-bem-linter: define drawer\n\n.mdc-drawer {\n @include mdc-drawer-title-ink-color($mdc-drawer-title-ink-color);\n @include mdc-drawer-subtitle-ink-color($mdc-drawer-subtitle-ink-color);\n @include mdc-drawer-border-color($mdc-drawer-divider-color);\n @include mdc-drawer-surface-fill-color($mdc-drawer-surface-fill-color);\n @include mdc-drawer-item-icon-ink-color($mdc-drawer-item-inactive-ink-color);\n @include mdc-drawer-item-text-ink-color($mdc-drawer-item-inactive-ink-color);\n @include mdc-drawer-item-activated-icon-ink-color($mdc-drawer-item-activated-ink-color);\n @include mdc-drawer-item-activated-text-ink-color($mdc-drawer-item-activated-ink-color);\n @include mdc-drawer-shape-radius(large);\n @include mdc-drawer-item-shape-radius(4px);\n @include mdc-drawer-z-index($mdc-drawer-z-index);\n @include mdc-drawer-width($mdc-drawer-width);\n\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n box-sizing: border-box;\n height: 100%;\n transition-property: transform;\n transition-timing-function: $mdc-animation-standard-curve-timing-function;\n /* @noflip */\n border-right-width: 1px;\n /* @noflip */\n border-right-style: solid;\n overflow: hidden;\n\n @include mdc-rtl {\n /* @noflip */\n border-right-width: 0;\n /* @noflip */\n border-left-width: 1px;\n /* @noflip */\n border-right-style: none;\n /* @noflip */\n border-left-style: solid;\n }\n\n // postcss-bem-linter: ignore\n .mdc-list-item {\n @include mdc-typography(subtitle2);\n\n height: calc(48px - 2 * #{$mdc-drawer-list-item-spacing});\n // To accomodate margin conflict.\n margin: ($mdc-drawer-list-item-spacing * 2) 8px;\n padding: 0 $mdc-drawer-surface-padding / 2;\n }\n\n // postcss-bem-linter: ignore\n .mdc-list-item:nth-child(1) {\n margin-top: 2px;\n }\n\n // postcss-bem-linter: ignore\n .mdc-list-item:nth-last-child(1) {\n margin-bottom: 0;\n }\n\n // postcss-bem-linter: ignore\n .mdc-list-group__subheader {\n @include mdc-typography(body2);\n @include mdc-typography-baseline-top(24px);\n\n margin: 0;\n padding: 0 $mdc-drawer-surface-padding;\n }\n\n // postcss-bem-linter: ignore\n .mdc-list-divider {\n margin: 3px 0 4px 0;\n }\n\n // Prevents list item children from being included in the click target.\n // postcss-bem-linter: ignore\n .mdc-list-item__text,\n .mdc-list-item__graphic {\n pointer-events: none;\n }\n}\n\n.mdc-drawer--animate {\n transform: translateX(-100%);\n\n @include mdc-rtl {\n transform: translateX(100%);\n }\n}\n\n.mdc-drawer--opening {\n transform: translateX(0);\n transition-duration: $mdc-drawer-animation-enter;\n\n // Required to level the specificity with animate class.\n @include mdc-rtl {\n transform: translateX(0);\n }\n}\n\n.mdc-drawer--closing {\n transform: translateX(-100%);\n transition-duration: $mdc-drawer-animation-exit;\n\n @include mdc-rtl {\n transform: translateX(100%);\n }\n}\n\n.mdc-drawer__header {\n flex-shrink: 0;\n box-sizing: border-box;\n min-height: 64px; // same as $mdc-top-app-bar-row-height\n padding: 0 $mdc-drawer-surface-padding 4px;\n}\n\n.mdc-drawer__title {\n @include mdc-typography(headline6);\n @include mdc-typography-baseline-top(36px);\n @include mdc-typography-baseline-bottom(20px);\n}\n\n.mdc-drawer__subtitle {\n @include mdc-typography(body2);\n @include mdc-typography-baseline-top(20px);\n\n margin-bottom: 0;\n}\n\n.mdc-drawer__content {\n height: 100%;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n// postcss-bem-linter: end\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/mdc-drawer.scss","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/theme/mixins\";\n@import \"@material/list/mixins\";\n@import \"@material/ripple/mixins\";\n@import \"@material/shape/mixins\";\n@import \"./variables\";\n\n@mixin mdc-drawer-activated-overlay-color($color) {\n :not(.mdc-list--non-interactive) > .mdc-list-item {\n @include mdc-states-activated($color);\n }\n}\n\n@mixin mdc-drawer-border-color($color) {\n $value: rgba(mdc-theme-prop-value($color), $mdc-drawer-divider-opacity);\n\n @include mdc-theme-prop(border-color, $value);\n}\n\n@mixin mdc-drawer-item-shape-radius($radius, $rtl-reflexive: true) {\n @include mdc-list-item-shape-radius($radius, $rtl-reflexive);\n}\n\n@mixin mdc-drawer-shape-radius($radius) {\n @if length($radius) > 2 {\n @error \"Invalid radius: '#{$radius}' component doesn't allow customizing all corners\";\n } @else if length($radius) == 2 {\n $radius: 0 nth($radius, 1) nth($radius, 2) 0;\n } @else {\n $radius: 0 $radius $radius 0;\n }\n\n @include mdc-shape-radius($radius, $rtl-reflexive: true);\n}\n\n@mixin mdc-drawer-divider-color($color) {\n $value: rgba(mdc-theme-prop-value($color), $mdc-drawer-divider-opacity);\n\n @include mdc-list-divider-color($value);\n}\n\n@mixin mdc-drawer-title-ink-color($color) {\n $value: rgba(mdc-theme-prop-value($color), $mdc-drawer-title-ink-opacity);\n\n .mdc-drawer__title {\n @include mdc-theme-prop(color, $value);\n }\n}\n\n@mixin mdc-drawer-subtitle-ink-color($color) {\n $value: rgba(mdc-theme-prop-value($color), $mdc-drawer-subtitle-ink-opacity);\n\n @include mdc-list-group-subheader-ink-color($value);\n\n .mdc-drawer__subtitle {\n @include mdc-theme-prop(color, $value);\n }\n}\n\n@mixin mdc-drawer-fill-color-accessible($color) {\n $accessibleColor: mdc-theme-accessible-ink-color($color);\n\n @include mdc-drawer-title-ink-color($accessibleColor);\n @include mdc-drawer-subtitle-ink-color($accessibleColor);\n @include mdc-drawer-item-text-ink-color($accessibleColor);\n @include mdc-drawer-item-icon-ink-color($accessibleColor);\n @include mdc-drawer-surface-fill-color($color);\n}\n\n@mixin mdc-drawer-item-icon-ink-color($color) {\n $value: rgba(mdc-theme-prop-value($color), $mdc-drawer-item-inactive-icon-ink-opacity);\n\n @include mdc-list-item-graphic-ink-color($value);\n}\n\n@mixin mdc-drawer-item-activated-icon-ink-color($color) {\n $value: rgba(mdc-theme-prop-value($color), $mdc-drawer-item-active-icon-ink-opacity);\n\n .mdc-list-item--activated {\n @include mdc-list-item-graphic-ink-color($value);\n }\n}\n\n@mixin mdc-drawer-item-activated-text-ink-color($color) {\n $value: rgba(mdc-theme-prop-value($color), $mdc-drawer-item-active-text-ink-opacity);\n\n .mdc-list-item--activated {\n @include mdc-list-item-primary-text-ink-color($value);\n }\n}\n\n@mixin mdc-drawer-item-text-ink-color($color) {\n $value: rgba(mdc-theme-prop-value($color), $mdc-drawer-item-inactive-text-ink-opacity);\n\n .mdc-list-item {\n @include mdc-list-item-primary-text-ink-color($value);\n }\n}\n\n@mixin mdc-drawer-surface-fill-color($color) {\n $value: mdc-theme-prop-value($color);\n\n @include mdc-theme-prop(background-color, $value);\n}\n\n@mixin mdc-drawer-scrim-fill-color($color) {\n $value: rgba(mdc-theme-prop-value($color), $mdc-drawer-modal-scrim-opacity);\n\n + .mdc-drawer-scrim {\n @include mdc-theme-prop(background-color, $value);\n }\n}\n\n@mixin mdc-drawer-z-index($value) {\n z-index: $value;\n}\n\n@mixin mdc-drawer-width($width) {\n width: $width;\n\n &.mdc-drawer--open:not(.mdc-drawer--closing) + .mdc-drawer-app-content {\n @include mdc-rtl-reflexive-box(margin, left, $width);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/_mixins.scss","// Copyright 2016 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n@import \"@material/rtl/mixins\";\n@import \"@material/theme/mixins\";\n@import \"@material/shape/mixins\";\n@import \"@material/ripple/mixins\";\n@import \"@material/theme/functions\";\n@import \"@material/typography/mixins\";\n@import \"@material/typography/variables\";\n@import \"@material/feature-targeting/functions\";\n@import \"@material/feature-targeting/mixins\";\n@import \"./variables\";\n\n//\n// Public\n//\n\n@mixin mdc-list-core-styles($query: mdc-feature-all()) {\n @include mdc-list-without-ripple($query);\n @include mdc-list-ripple($query);\n}\n\n// This API is intended for use by frameworks that may want to separate the ripple-related styles from the other\n// list styles. It is recommended that most users use `mdc-list-core-styles` instead.\n@mixin mdc-list-without-ripple($query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n $feat-typography: mdc-feature-create-target($query, typography);\n\n $item-primary-text-baseline-height: 32px;\n $item-secondary-text-baseline-height: 20px;\n $dense-item-primary-text-baseline-height: 24px;\n $divider-color: if(\n mdc-theme-tone($mdc-theme-background) == \"dark\",\n $mdc-list-divider-color-on-dark-bg,\n $mdc-list-divider-color-on-light-bg\n );\n\n .mdc-list {\n @include mdc-list-base_($query);\n }\n\n @include mdc-list-item-secondary-text-ink-color(text-secondary-on-background, $query);\n @include mdc-list-item-graphic-fill-color(transparent, $query);\n @include mdc-list-item-graphic-ink-color(text-icon-on-background, $query);\n @include mdc-list-item-meta-ink-color(text-hint-on-background, $query);\n @include mdc-list-group-subheader-ink-color(text-primary-on-background, $query);\n\n .mdc-list--dense {\n @include mdc-feature-targets($feat-structure) {\n padding-top: 4px;\n padding-bottom: 4px;\n font-size: .812rem;\n }\n }\n\n .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-item-base_;\n }\n }\n\n // \"Selected\" is ephemeral and likely to change soon. E.g., selecting one or more photos to share in Google Photos.\n // \"Activated\" is more permanent. E.g., the currently highlighted navigation destination in a drawer.\n .mdc-list-item--selected,\n .mdc-list-item--activated {\n @include mdc-list-item-primary-text-ink-color(primary, $query);\n @include mdc-list-item-graphic-ink-color(primary, $query);\n }\n\n .mdc-list-item--disabled {\n @include mdc-list-item-primary-text-ink-color(text-disabled-on-background, $query);\n }\n\n .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-graphic-size_(24px);\n\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n fill: currentColor;\n }\n }\n\n // Extra specificity is to override .material-icons display style if used in\n // conjunction with mdc-list-item__graphic\n // stylelint-disable plugin/selector-bem-pattern\n .mdc-list .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n display: inline-flex;\n }\n }\n // stylelint-enable plugin/selector-bem-pattern\n\n .mdc-list-item__meta {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-rtl-reflexive-property(margin, auto, 0, \".mdc-list-item\");\n }\n }\n\n .mdc-list-item__text {\n @include mdc-typography-overflow-ellipsis($query);\n }\n\n // Disable interaction on label elements that may automatically\n // toggle corresponding checkbox / radio input.\n .mdc-list-item__text[for] {\n @include mdc-feature-targets($feat-structure) {\n pointer-events: none;\n }\n }\n\n .mdc-list-item__primary-text {\n @include mdc-typography-overflow-ellipsis($query);\n @include mdc-typography-baseline-top($item-primary-text-baseline-height, $query);\n @include mdc-typography-baseline-bottom($item-secondary-text-baseline-height, $query);\n\n @include mdc-feature-targets($feat-structure) {\n display: block;\n }\n\n // stylelint-disable plugin/selector-bem-pattern\n .mdc-list--dense & {\n @include mdc-typography-baseline-top($dense-item-primary-text-baseline-height, $query);\n @include mdc-typography-baseline-bottom($item-secondary-text-baseline-height, $query);\n }\n // stylelint-enable plugin/selector-bem-pattern\n }\n\n .mdc-list-item__secondary-text {\n @include mdc-typography(body2, $query);\n @include mdc-typography-overflow-ellipsis($query);\n @include mdc-typography-baseline-top($item-secondary-text-baseline-height, $query);\n\n @include mdc-feature-targets($feat-structure) {\n display: block;\n }\n\n // stylelint-disable plugin/selector-bem-pattern\n .mdc-list--dense & {\n @include mdc-typography-baseline-top($item-secondary-text-baseline-height, $query);\n\n @include mdc-feature-targets($feat-structure) {\n font-size: inherit;\n }\n }\n // stylelint-enable plugin/selector-bem-pattern\n }\n\n // stylelint-disable plugin/selector-bem-pattern\n .mdc-list--dense .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n height: 40px;\n }\n }\n\n .mdc-list--dense .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-graphic-size_(20px);\n }\n }\n\n .mdc-list--avatar-list .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n height: 56px;\n }\n }\n\n .mdc-list--avatar-list .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-graphic-size_(40px);\n\n border-radius: 50%;\n }\n }\n\n .mdc-list--two-line .mdc-list-item__text {\n @include mdc-feature-targets($feat-structure) {\n align-self: flex-start;\n }\n }\n\n .mdc-list--two-line .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n height: 72px;\n }\n }\n\n .mdc-list--two-line.mdc-list--dense .mdc-list-item,\n .mdc-list--avatar-list.mdc-list--dense .mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n height: 60px;\n }\n }\n\n .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-list-graphic-size_(36px);\n }\n }\n\n // Only change mouse cursor for interactive list items which are not disabled.\n :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n cursor: pointer;\n }\n }\n\n // Override anchor tag styles for the use-case of a list being used for navigation\n // stylelint-disable selector-max-type,selector-no-qualifying-type\n a.mdc-list-item {\n @include mdc-feature-targets($feat-structure) {\n color: inherit;\n text-decoration: none;\n }\n }\n // stylelint-enable selector-max-type,selector-no-qualifying-type\n\n .mdc-list-divider {\n @include mdc-feature-targets($feat-structure) {\n height: 0;\n margin: 0;\n border: none;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n }\n }\n\n // Note: ideally we'd be able to hoist this to the top-level `$feat-color`, but doing so\n // will cause the `border` declaration on `.mdc-list-divider` above to override it.\n @include mdc-list-divider-color($divider-color, $query);\n\n .mdc-list-divider--padded {\n @include mdc-feature-targets($feat-structure) {\n // Leave gaps on each side to match the padding on list items\n margin: 0 $mdc-list-side-padding;\n }\n }\n\n .mdc-list-divider--inset {\n @include mdc-feature-targets($feat-structure) {\n @include mdc-rtl-reflexive-box(margin, left, $mdc-list-text-offset, \".mdc-list-group\");\n\n width: calc(100% - #{$mdc-list-text-offset});\n }\n }\n\n .mdc-list-divider--inset.mdc-list-divider--padded {\n @include mdc-feature-targets($feat-structure) {\n width: calc(100% - #{$mdc-list-text-offset} - #{$mdc-list-side-padding});\n }\n }\n\n .mdc-list-group {\n @include mdc-feature-targets($feat-structure) {\n // Cancel top/bottom padding on individual lists within group\n .mdc-list {\n padding: 0;\n }\n }\n }\n\n .mdc-list-group__subheader {\n $mdc-list-subheader-virtual-height: 3rem;\n $mdc-list-subheader-leading: map-get(map-get($mdc-typography-styles, body1), line-height);\n $mdc-list-subheader-margin: ($mdc-list-subheader-virtual-height - $mdc-list-subheader-leading) / 2;\n\n @include mdc-typography(subtitle1, $query);\n\n @include mdc-feature-targets($feat-structure) {\n margin: $mdc-list-subheader-margin $mdc-list-side-padding;\n }\n }\n}\n\n// This API is intended for use by frameworks that may want to separate the ripple-related styles from the other\n// list styles. It is recommended that most users use `mdc-list-core-styles` instead.\n@mixin mdc-list-ripple($query: mdc-feature-all()) {\n @include mdc-ripple-common($query);\n\n // List items should support states by default, but it should be possible to opt out.\n // Direct child combinator is necessary for non-interactive modifier on parent to not\n // match this selector.\n :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled).mdc-list-item {\n @include mdc-list-item-interactive-ripple_($query);\n }\n}\n\n@mixin mdc-list-item-primary-text-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n}\n\n@mixin mdc-list-item-secondary-text-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-item__secondary-text {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n@mixin mdc-list-item-graphic-fill-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(background-color, $color);\n }\n }\n}\n\n@mixin mdc-list-item-graphic-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-item__graphic {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n@mixin mdc-list-item-meta-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-item__meta {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n@mixin mdc-list-item-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) {\n .mdc-list-item {\n @include mdc-shape-radius($radius, $rtl-reflexive, $query: $query);\n }\n}\n\n@mixin mdc-list-divider-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-divider {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(border-bottom-color, $color);\n }\n }\n}\n\n@mixin mdc-list-group-subheader-ink-color($color, $query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n\n .mdc-list-group__subheader {\n @include mdc-feature-targets($feat-color) {\n @include mdc-theme-prop(color, $color);\n }\n }\n}\n\n//\n// Private\n//\n\n@mixin mdc-list-base_($query: mdc-feature-all()) {\n $feat-color: mdc-feature-create-target($query, color);\n $feat-structure: mdc-feature-create-target($query, structure);\n $feat-typography: mdc-feature-create-target($query, typography);\n\n @include mdc-typography(subtitle1, $query);\n\n @include mdc-feature-targets($feat-typography) {\n // According to the mocks and stickersheet, the line-height is\n // adjusted to 24px for text content, same as for body1.\n /* @alternate */\n line-height: map-get(map-get($mdc-typography-styles, body1), line-height);\n }\n\n @include mdc-feature-targets($feat-structure) {\n margin: 0;\n padding: 8px 0;\n list-style-type: none;\n }\n\n @include mdc-list-item-primary-text-ink-color(text-primary-on-background, $query);\n}\n\n@mixin mdc-list-item-base_ {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: flex-start;\n height: 48px;\n padding: 0 $mdc-list-side-padding;\n overflow: hidden;\n\n &:focus {\n outline: none;\n }\n}\n\n// Ripple styles for an interactive list item (one that is enabled and inside an interactive list).\n@mixin mdc-list-item-interactive-ripple_($query: mdc-feature-all()) {\n @include mdc-ripple-surface($query);\n @include mdc-ripple-radius-bounded($query: $query);\n @include mdc-states(mdc-theme-prop-value(on-surface), false, $query);\n @include mdc-states-activated(primary, false, $query);\n @include mdc-states-selected(primary, false, $query);\n}\n\n// Sets the width and height of the graphic element, as well as calculates the margins for\n// the graphic element such that the text is always offset by 72px, which is defined within\n// the spec.\n@mixin mdc-list-graphic-size_($size) {\n $text-offset: 72px;\n $side-padding: $mdc-list-side-padding;\n $margin-value: $text-offset - $side-padding - $size;\n\n @include mdc-rtl-reflexive-box(margin, right, $margin-value, \".mdc-list-item\");\n\n width: $size;\n height: $size;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/node_modules/@material/list/_mixins.scss","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/animation/functions\";\n@import \"@material/rtl/mixins\";\n@import \"../variables\";\n@import \"../mixins\";\n\n.mdc-drawer--dismissible {\n @include mdc-rtl-reflexive-position(left, 0);\n\n display: none;\n position: absolute;\n\n &.mdc-drawer--open {\n display: flex;\n }\n}\n\n.mdc-drawer-app-content {\n @include mdc-rtl-reflexive-box(margin, left, 0);\n\n position: relative;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/dismissible/mdc-drawer-dismissible.scss","//\n// Copyright 2018 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@import \"@material/animation/functions\";\n@import \"@material/elevation/mixins\";\n@import \"@material/rtl/mixins\";\n@import \"../mixins\";\n@import \"../variables\";\n\n.mdc-drawer--modal {\n @include mdc-drawer-scrim-fill-color($mdc-drawer-modal-scrim-color);\n @include mdc-elevation($mdc-drawer-modal-elevation);\n @include mdc-rtl-reflexive-position(left, 0);\n\n display: none;\n position: fixed;\n\n &.mdc-drawer--open {\n display: flex;\n }\n}\n\n.mdc-drawer-scrim {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n transition-property: opacity;\n transition-timing-function: $mdc-animation-standard-curve-timing-function;\n z-index: $mdc-drawer-z-index - 1;\n\n .mdc-drawer--open + & {\n display: block;\n }\n\n .mdc-drawer--animate + & {\n opacity: 0;\n }\n\n .mdc-drawer--opening + & {\n transition-duration: $mdc-drawer-animation-enter;\n opacity: 1;\n }\n\n .mdc-drawer--closing + & {\n transition-duration: $mdc-drawer-animation-exit;\n opacity: 0;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/modal/mdc-drawer-modal.scss"]} \ No newline at end of file diff --git a/ui/web/static/css/main.72fe53e6.chunk.css b/ui/web/static/css/main.72fe53e6.chunk.css new file mode 100644 index 000000000..c0f726c27 --- /dev/null +++ b/ui/web/static/css/main.72fe53e6.chunk.css @@ -0,0 +1,2 @@ +@import url(https://fonts.googleapis.com/icon?family=Material+Icons);body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.QueryHistory{height:300px;overflow:scroll}.QueryHistory .mdc-list-item{display:flex}.QueryHistory .query{height:2em;font-family:monospace;white-space:nowrap;flex:1 1}.QueryHistory .time{flex-shrink:0}.QueryHistory .language,.QueryHistory .status{margin:0 16px}main{display:flex;flex-direction:column}.graph{width:100%;flex:1 1}.graph svg{height:100%;width:100%}.App{height:100vh;width:100vw;background:#eee;box-sizing:border-box;overflow:hidden;display:flex;flex-direction:row}.App .Logo{height:2rem;margin-right:8px;position:relative;top:.5rem;display:inline-block}.App>main{flex:1 1;overflow:hidden;height:100%;box-sizing:border-box}.App>main .mdc-typography--headline6{margin:0 30px;padding:12px 0;display:block}.App>main .actions{background:#fff;padding:8px 24px;border-color:#d3d3d3;border-style:solid;border-width:1px 0}.App main .actions>.mdc-button{margin-right:24px}.App main .actions>.mdc-button:not(:first-child){margin-left:24px} +/*# sourceMappingURL=main.72fe53e6.chunk.css.map */ \ No newline at end of file diff --git a/ui/web/static/css/main.72fe53e6.chunk.css.map b/ui/web/static/css/main.72fe53e6.chunk.css.map new file mode 100644 index 000000000..eb666da1b --- /dev/null +++ b/ui/web/static/css/main.72fe53e6.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["main.72fe53e6.chunk.css","index.css","QueryHistory.css","VisualizePage.css","App.css"],"names":[],"mappings":"AAAA,oEAAoE,CCApE,KACE,QAAS,CACT,mIAEY,CACZ,kCAAmC,CACnC,iCACF,CAEA,KACE,uEAEF,CCZA,cACE,YAAa,CACb,eACF,CAEA,6BACE,YACF,CAEA,qBACE,UAAW,CACX,qBAAsB,CACtB,kBAAmB,CACnB,QACF,CAEA,oBACE,aACF,CAEA,8CAEE,aACF,CCvBA,KACE,YAAa,CACb,qBACF,CAEA,OACE,UAAW,CACX,QACF,CAEA,WACE,WAAY,CACZ,UACF,CCXA,KACE,YAAa,CACb,WAAY,CACZ,eAAgB,CAChB,qBAAsB,CACtB,eAAgB,CAChB,YAAa,CACb,kBACF,CAEA,WACE,WAAY,CACZ,gBAAiB,CACjB,iBAAkB,CAClB,SAAW,CACX,oBACF,CAEA,UACE,QAAO,CACP,eAAgB,CAChB,WAAY,CACZ,qBACF,CAEA,qCACE,aAAc,CACd,cAAe,CACf,aACF,CAEA,mBACE,eAAiB,CACjB,gBAAiB,CAMjB,oBAAqB,CAArB,kBAAqB,CAArB,kBACF,CAEA,+BACE,iBACF,CAEA,iDACE,gBACF","file":"main.72fe53e6.chunk.css","sourcesContent":["@import url(https://fonts.googleapis.com/icon?family=Material+Icons);\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\n.QueryHistory {\n height: 300px;\n overflow: scroll;\n}\n\n.QueryHistory .mdc-list-item {\n display: flex;\n}\n\n.QueryHistory .query {\n height: 2em;\n font-family: monospace;\n white-space: nowrap;\n flex: 1 1;\n}\n\n.QueryHistory .time {\n flex-shrink: 0;\n}\n\n.QueryHistory .language,\n.QueryHistory .status {\n margin: 0 16px;\n}\n\nmain {\n display: flex;\n flex-direction: column;\n}\n\n.graph {\n width: 100%;\n flex: 1 1;\n}\n\n.graph svg {\n height: 100%;\n width: 100%;\n}\n\n.App {\n height: 100vh;\n width: 100vw;\n background: #eee;\n box-sizing: border-box;\n overflow: hidden;\n display: flex;\n flex-direction: row;\n}\n\n.App .Logo {\n height: 2rem;\n margin-right: 8px;\n position: relative;\n top: 0.5rem;\n display: inline-block;\n}\n\n.App > main {\n flex: 1 1;\n overflow: hidden;\n height: 100%;\n box-sizing: border-box;\n}\n\n.App > main .mdc-typography--headline6 {\n margin: 0 30px;\n padding: 12px 0;\n display: block;\n}\n\n.App > main .actions {\n background: white;\n padding: 8px 24px;\n border-color: #d3d3d3;\n border-style: solid;\n border-top-width: 1px;\n border-bottom-width: 1px;\n border-left-width: 0;\n border-right-width: 0;\n}\n\n.App main .actions > .mdc-button {\n margin-right: 24px;\n}\n\n.App main .actions > .mdc-button:not(:first-child) {\n margin-left: 24px;\n}\n\n","body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n",".QueryHistory {\n height: 300px;\n overflow: scroll;\n}\n\n.QueryHistory .mdc-list-item {\n display: flex;\n}\n\n.QueryHistory .query {\n height: 2em;\n font-family: monospace;\n white-space: nowrap;\n flex: 1;\n}\n\n.QueryHistory .time {\n flex-shrink: 0;\n}\n\n.QueryHistory .language,\n.QueryHistory .status {\n margin: 0 16px;\n}\n","main {\n display: flex;\n flex-direction: column;\n}\n\n.graph {\n width: 100%;\n flex: 1;\n}\n\n.graph svg {\n height: 100%;\n width: 100%;\n}\n","@import \"https://fonts.googleapis.com/icon?family=Material+Icons\";\n\n.App {\n height: 100vh;\n width: 100vw;\n background: #eee;\n box-sizing: border-box;\n overflow: hidden;\n display: flex;\n flex-direction: row;\n}\n\n.App .Logo {\n height: 2rem;\n margin-right: 8px;\n position: relative;\n top: 0.5rem;\n display: inline-block;\n}\n\n.App > main {\n flex: 1;\n overflow: hidden;\n height: 100%;\n box-sizing: border-box;\n}\n\n.App > main .mdc-typography--headline6 {\n margin: 0 30px;\n padding: 12px 0;\n display: block;\n}\n\n.App > main .actions {\n background: white;\n padding: 8px 24px;\n border-color: #d3d3d3;\n border-style: solid;\n border-top-width: 1px;\n border-bottom-width: 1px;\n border-left-width: 0;\n border-right-width: 0;\n}\n\n.App main .actions > .mdc-button {\n margin-right: 24px;\n}\n\n.App main .actions > .mdc-button:not(:first-child) {\n margin-left: 24px;\n}\n"]} \ No newline at end of file diff --git a/ui/web/static/js/2.7d84b3fa.chunk.js b/ui/web/static/js/2.7d84b3fa.chunk.js new file mode 100644 index 000000000..106507d8f --- /dev/null +++ b/ui/web/static/js/2.7d84b3fa.chunk.js @@ -0,0 +1,2 @@ +(this["webpackJsonpcayley-ui"]=this["webpackJsonpcayley-ui"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(48)},function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"a",function(){return i}),n.d(t,"d",function(){return a}),n.d(t,"c",function(){return l});var r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function o(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}function l(e,t){var n="function"===typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(l){o={error:l}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}},function(e,t,n){"use strict";n.d(t,"b",function(){return l});var r=n(37),o=n.n(r),i=n(8),a=n.n(i);n.d(t,"a",function(){return a.a});var l=o.a},function(e,t,n){e.exports=n(61)()},function(e,t,n){"use strict";function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,l=e[Symbol.iterator]();!(r=(a=l.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(u){o=!0,i=u}finally{try{r||null==l.return||l.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}n.d(t,"a",function(){return r})},function(e,t,n){"use strict";n.d(t,"a",function(){return p});var r=n(0),o=n(23),i=n(2),a=n(6),l=n(13),u=function(){return(u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"},o);Object(l.a)("Icon component prop 'iconOptions' is deprecated. You options should now be passed directly to the 'icon' prop. I.E. icon={"+JSON.stringify(p)+"}")}var h=u({},function(e){return r.isValidElement(e)||e&&"object"!==typeof e?{icon:e}:e}(n),o),m=h.icon,y=h.strategy,v=h.prefix,g=h.basename,b=h.render,_=h.size,E=s(h,["icon","strategy","prefix","basename","render","size"]),T=a.icon||{},C=T.basename,O=void 0===C?null:C,w=T.prefix,S=void 0===w?null:w,x=T.strategy,I=void 0===x?null:x,A=T.render,k=void 0===A?null:A,P=m,N=c(P,y||null,I||null),L=void 0===g?O:g,R="className"===N&&"string"===typeof m?""+String(v||S)+m:null,D="custom"===N?b||k:!!N&&f[N]||null;if(!D)return console.error("Icon: rendering not implemented for "+String(N)+"."),null;var M=D(u({},d,E,{content:P,className:Object(i.a)("rmwc-icon",L,d.className,E.className,R,(t={},t["rmwc-icon--size-"+(_||"")]=!!_,t))}));return M.props.children&&M.props.children.type&&["Avatar","Icon"].includes(M.props.children.type.displayName)?r.cloneElement(M.props.children,u({},M.props.children.props,M.props,{children:M.props.children.props.children,className:Object(i.a)(M.props.className,M.props.children.props.className)})):M});p.displayName="Icon"},function(e,t,n){"use strict";n.d(t,"a",function(){return d});var r=n(0),o=n(8),i=n.n(o),a=n(19),l=n(13),u=function(){return(u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0)&&!(r=i.next()).done;)a.push(r.value)}catch(l){o={error:l}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},f=function(){for(var e=[],t=0;t0&&v.some(function(e){return t.adapter_.containsEventTarget(e)})?this.resetActivationState_():(void 0!==e&&(v.push(e.target),this.registerDeactivationHandlers_(e)),n.wasElementMadeActive=this.checkElementMadeActive_(e),n.wasElementMadeActive&&this.animateActivation_(),requestAnimationFrame(function(){v=[],n.wasElementMadeActive||void 0===e||" "!==e.key&&32!==e.keyCode||(n.wasElementMadeActive=t.checkElementMadeActive_(e),n.wasElementMadeActive&&t.animateActivation_()),n.wasElementMadeActive||(t.activationState_=t.defaultActivationState_())}))}}},t.prototype.checkElementMadeActive_=function(e){return void 0===e||"keydown"!==e.type||this.adapter_.isSurfaceActive()},t.prototype.animateActivation_=function(){var e=this,n=t.strings,r=n.VAR_FG_TRANSLATE_START,o=n.VAR_FG_TRANSLATE_END,i=t.cssClasses,a=i.FG_DEACTIVATION,l=i.FG_ACTIVATION,u=t.numbers.DEACTIVATION_TIMEOUT_MS;this.layoutInternal_();var s="",c="";if(!this.adapter_.isUnbounded()){var f=this.getFgTranslationCoordinates_(),d=f.startPoint,p=f.endPoint;s=d.x+"px, "+d.y+"px",c=p.x+"px, "+p.y+"px"}this.adapter_.updateCssVariable(r,s),this.adapter_.updateCssVariable(o,c),clearTimeout(this.activationTimer_),clearTimeout(this.fgDeactivationRemovalTimer_),this.rmBoundedActivationClasses_(),this.adapter_.removeClass(a),this.adapter_.computeBoundingRect(),this.adapter_.addClass(l),this.activationTimer_=setTimeout(function(){return e.activationTimerCallback_()},u)},t.prototype.getFgTranslationCoordinates_=function(){var e,t=this.activationState_,n=t.activationEvent;return{startPoint:e={x:(e=t.wasActivatedByPointer?p(n,this.adapter_.getWindowPageOffset(),this.adapter_.computeBoundingRect()):{x:this.frame_.width/2,y:this.frame_.height/2}).x-this.initialSize_/2,y:e.y-this.initialSize_/2},endPoint:{x:this.frame_.width/2-this.initialSize_/2,y:this.frame_.height/2-this.initialSize_/2}}},t.prototype.runDeactivationUXLogicIfReady_=function(){var e=this,n=t.cssClasses.FG_DEACTIVATION,r=this.activationState_,o=r.hasDeactivationUXRun,i=r.isActivated;(o||!i)&&this.activationAnimationHasEnded_&&(this.rmBoundedActivationClasses_(),this.adapter_.addClass(n),this.fgDeactivationRemovalTimer_=setTimeout(function(){e.adapter_.removeClass(n)},f.FG_DEACTIVATION_MS))},t.prototype.rmBoundedActivationClasses_=function(){var e=t.cssClasses.FG_ACTIVATION;this.adapter_.removeClass(e),this.activationAnimationHasEnded_=!1,this.adapter_.computeBoundingRect()},t.prototype.resetActivationState_=function(){var e=this;this.previousActivationEvent_=this.activationState_.activationEvent,this.activationState_=this.defaultActivationState_(),setTimeout(function(){return e.previousActivationEvent_=void 0},t.numbers.TAP_DELAY_MS)},t.prototype.deactivate_=function(){var e=this,t=this.activationState_;if(t.isActivated){var n=l.a({},t);t.isProgrammatic?(requestAnimationFrame(function(){return e.animateDeactivation_(n)}),this.resetActivationState_()):(this.deregisterDeactivationHandlers_(),requestAnimationFrame(function(){e.activationState_.hasDeactivationUXRun=!0,e.animateDeactivation_(n),e.resetActivationState_()}))}},t.prototype.animateDeactivation_=function(e){var t=e.wasActivatedByPointer,n=e.wasElementMadeActive;(t||n)&&this.runDeactivationUXLogicIfReady_()},t.prototype.layoutInternal_=function(){var e=this;this.frame_=this.adapter_.computeBoundingRect();var n=Math.max(this.frame_.height,this.frame_.width);this.maxRadius_=this.adapter_.isUnbounded()?n:Math.sqrt(Math.pow(e.frame_.width,2)+Math.pow(e.frame_.height,2))+t.numbers.PADDING,this.initialSize_=Math.floor(n*t.numbers.INITIAL_ORIGIN_SCALE),this.fgScale_=""+this.maxRadius_/this.initialSize_,this.updateLayoutCssVars_()},t.prototype.updateLayoutCssVars_=function(){var e=t.strings,n=e.VAR_FG_SIZE,r=e.VAR_LEFT,o=e.VAR_TOP,i=e.VAR_FG_SCALE;this.adapter_.updateCssVariable(n,this.initialSize_+"px"),this.adapter_.updateCssVariable(i,this.fgScale_),this.adapter_.isUnbounded()&&(this.unboundedCoords_={left:Math.round(this.frame_.width/2-this.initialSize_/2),top:Math.round(this.frame_.height/2-this.initialSize_/2)},this.adapter_.updateCssVariable(r,this.unboundedCoords_.left+"px"),this.adapter_.updateCssVariable(o,this.unboundedCoords_.top+"px"))},t}(u),b=n(98);function _(e,t){if(void 0===e&&(e=window),void 0===t&&(t=!1),void 0===h||t){var n=!1;try{e.document.addEventListener("test",function(){},{get passive(){return n=!0}})}catch(r){}h=n}return!!h&&{passive:!0}}var E=n(2),T=n(36),C=n(13),O=n(23);n.d(t,"a",function(){return k}),n.d(t,"b",function(){return P});var w=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),S=function(){return(S=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=(i=(m+v)/2))?m=i:v=i,(c=n>=(a=(y+g)/2))?y=a:g=a,o=p,!(p=p[f=c<<1|s]))return o[f]=h,e;if(l=+e._x.call(null,p.data),u=+e._y.call(null,p.data),t===l&&n===u)return h.next=p,o?o[f]=h:e._root=h,e;do{o=o?o[f]=new Array(4):e._root=new Array(4),(s=t>=(i=(m+v)/2))?m=i:v=i,(c=n>=(a=(y+g)/2))?y=a:g=a}while((f=c<<1|s)===(d=(u>=a)<<1|l>=i));return o[d]=p,o[f]=h,e}var i=function(e,t,n,r,o){this.node=e,this.x0=t,this.y0=n,this.x1=r,this.y1=o};function a(e){return e[0]}function l(e){return e[1]}function u(e,t,n){var r=new s(null==t?a:t,null==n?l:n,NaN,NaN,NaN,NaN);return null==e?r:r.addAll(e)}function s(e,t,n,r,o,i){this._x=e,this._y=t,this._x0=n,this._y0=r,this._x1=o,this._y1=i,this._root=void 0}function c(e){for(var t={data:e.data},n=t;e=e.next;)n=n.next={data:e.data};return t}var f=u.prototype=s.prototype;f.copy=function(){var e,t,n=new s(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=c(r),n;for(e=[{source:r,target:n._root=new Array(4)}];r=e.pop();)for(var o=0;o<4;++o)(t=r.source[o])&&(t.length?e.push({source:t,target:r.target[o]=new Array(4)}):r.target[o]=c(t));return n},f.add=function(e){var t=+this._x.call(null,e),n=+this._y.call(null,e);return o(this.cover(t,n),t,n,e)},f.addAll=function(e){var t,n,r,i,a=e.length,l=new Array(a),u=new Array(a),s=1/0,c=1/0,f=-1/0,d=-1/0;for(n=0;nf&&(f=r),id&&(d=i));if(s>f||c>d)return this;for(this.cover(s,c).cover(f,d),n=0;ne||e>=o||r>t||t>=i;)switch(l=(tp||(a=s.y0)>h||(l=s.x1)=g)<<1|e>=v)&&(s=m[m.length-1],m[m.length-1]=m[m.length-1-c],m[m.length-1-c]=s)}else{var b=e-+this._x.call(null,y.data),_=t-+this._y.call(null,y.data),E=b*b+_*_;if(E=(l=(h+y)/2))?h=l:y=l,(c=a>=(u=(m+v)/2))?m=u:v=u,t=p,!(p=p[f=c<<1|s]))return this;if(!p.length)break;(t[f+1&3]||t[f+2&3]||t[f+3&3])&&(n=t,d=f)}for(;p.data!==e;)if(r=p,!(p=p.next))return this;return(o=p.next)&&delete p.next,r?(o?r.next=o:delete r.next,this):t?(o?t[f]=o:delete t[f],(p=t[0]||t[1]||t[2]||t[3])&&p===(t[3]||t[2]||t[1]||t[0])&&!p.length&&(n?n[d]=p:this._root=p),this):(this._root=o,this)},f.removeAll=function(e){for(var t=0,n=e.length;t=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:n}})}function E(e,t){for(var n,r=0,o=e.length;r0)for(var n,r,o=new Array(n),i=0;i=0&&t._call.call(null,e),t=t._next;--S}()}finally{S=0,function(){var e,t,n=C,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),e=n,n=n._next):(t=n._next,n._next=null,n=e?e._next=t:C=t);O=e,V(r)}(),P=0}}function B(){var e=L.now(),t=e-k;t>A&&(N-=t,k=e)}function V(e){S||(x&&(x=clearTimeout(x)),e-P>24?(e<1/0&&(x=setTimeout(U,e-L.now()-N)),I&&(I=clearInterval(I))):(I||(k=L.now(),I=setInterval(B,A)),S=1,R(U)))}j.prototype=F.prototype={constructor:j,restart:function(e,t,n){if("function"!==typeof e)throw new TypeError("callback is not a function");n=(null==n?D():+n)+(null==t?0:+t),this._next||O===this||(O?O._next=this:C=this,O=this),this._call=e,this._time=n,V()},stop:function(){this._call&&(this._call=null,this._time=1/0,V())}};function H(e){return e.x}function z(e){return e.y}var K=10,W=Math.PI*(3-Math.sqrt(5)),G=function(e){var t,n=1,r=.001,o=1-Math.pow(r,1/300),i=0,a=.6,l=new Map,u=F(c),s=w("tick","end");function c(){f(),s.call("tick",t),n1?(null==n?l.delete(e):l.set(e,p(n)),t):l.get(e)},find:function(t,n,r){var o,i,a,l,u,s=0,c=e.length;for(null==r?r=1/0:r*=r,s=0;s1?(s.on(e,n),t):s.on(e)}}},q=function(){var e,t,n,r,o=d(-30),i=1,a=1/0,l=.81;function s(r){var o,i=e.length,a=u(e,H,z).visitAfter(f);for(n=r,o=0;o=a)){(e.data!==t||e.next)&&(0===c&&(h+=(c=p())*c),0===f&&(h+=(f=p())*f),h0;this.notchOutline(e)},t.prototype.handleMenuOpened=function(){this.adapter_.addClass(c.ACTIVATED)},t.prototype.handleMenuClosed=function(){this.adapter_.removeClass(c.ACTIVATED)},t.prototype.handleChange=function(e){void 0===e&&(e=!0);var t=this.getValue(),n=t.length>0,r=this.adapter_.hasClass(c.REQUIRED);this.notchOutline(n),this.adapter_.hasClass(c.FOCUSED)||this.adapter_.floatLabel(n),e&&(this.adapter_.notifyChange(t),r&&(this.setValid(this.isValid()),this.helperText_&&this.helperText_.setValidity(this.isValid())))},t.prototype.handleFocus=function(){this.adapter_.addClass(c.FOCUSED),this.adapter_.floatLabel(!0),this.notchOutline(!0),this.adapter_.activateBottomLine(),this.helperText_&&this.helperText_.showToScreenReader()},t.prototype.handleBlur=function(){this.adapter_.isMenuOpen()||(this.adapter_.removeClass(c.FOCUSED),this.handleChange(!1),this.adapter_.deactivateBottomLine(),this.adapter_.hasClass(c.REQUIRED)&&(this.setValid(this.isValid()),this.helperText_&&this.helperText_.setValidity(this.isValid())))},t.prototype.handleClick=function(e){this.adapter_.isMenuOpen()||(this.adapter_.setRippleCenter(e),this.adapter_.openMenu())},t.prototype.handleKeydown=function(e){if(!this.adapter_.isMenuOpen()){var t="Enter"===e.key||13===e.keyCode,n="Space"===e.key||32===e.keyCode,r="ArrowUp"===e.key||38===e.keyCode,o="ArrowDown"===e.key||40===e.keyCode;this.adapter_.hasClass(c.FOCUSED)&&(t||n||r||o)&&(this.adapter_.openMenu(),e.preventDefault())}},t.prototype.notchOutline=function(e){if(this.adapter_.hasOutline()){var t=this.adapter_.hasClass(c.FOCUSED);if(e){var n=d.LABEL_SCALE,r=this.adapter_.getLabelWidth()*n;this.adapter_.notchOutline(r)}else t||this.adapter_.closeOutline()}},t.prototype.setLeadingIconAriaLabel=function(e){this.leadingIcon_&&this.leadingIcon_.setAriaLabel(e)},t.prototype.setLeadingIconContent=function(e){this.leadingIcon_&&this.leadingIcon_.setContent(e)},t.prototype.setValid=function(e){this.adapter_.setValid(e)},t.prototype.isValid=function(){return this.adapter_.checkValidity()},t}(s),h={ICON_EVENT:"MDCSelect:icon",ICON_ROLE:"button"},m=["click","keydown"],y=function(e){function t(n){var r=e.call(this,u.a({},t.defaultAdapter,n))||this;return r.savedTabIndex_=null,r.interactionHandler_=function(e){return r.handleInteraction(e)},r}return u.b(t,e),Object.defineProperty(t,"strings",{get:function(){return h},enumerable:!0,configurable:!0}),Object.defineProperty(t,"defaultAdapter",{get:function(){return{getAttr:function(){return null},setAttr:function(){},removeAttr:function(){},setContent:function(){},registerInteractionHandler:function(){},deregisterInteractionHandler:function(){},notifyIconAction:function(){}}},enumerable:!0,configurable:!0}),t.prototype.init=function(){var e=this;this.savedTabIndex_=this.adapter_.getAttr("tabindex"),m.forEach(function(t){e.adapter_.registerInteractionHandler(t,e.interactionHandler_)})},t.prototype.destroy=function(){var e=this;m.forEach(function(t){e.adapter_.deregisterInteractionHandler(t,e.interactionHandler_)})},t.prototype.setDisabled=function(e){this.savedTabIndex_&&(e?(this.adapter_.setAttr("tabindex","-1"),this.adapter_.removeAttr("role")):(this.adapter_.setAttr("tabindex",this.savedTabIndex_),this.adapter_.setAttr("role",h.ICON_ROLE)))},t.prototype.setAriaLabel=function(e){this.adapter_.setAttr("aria-label",e)},t.prototype.setContent=function(e){this.adapter_.setContent(e)},t.prototype.handleInteraction=function(e){var t="Enter"===e.key||13===e.keyCode;("click"===e.type||t)&&this.adapter_.notifyIconAction()},t}(s),v=n(6),g=n(100),b=n(36),_=function(){function e(e){void 0===e&&(e={}),this.adapter_=e}return Object.defineProperty(e,"cssClasses",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"strings",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"numbers",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"defaultAdapter",{get:function(){return{}},enumerable:!0,configurable:!0}),e.prototype.init=function(){},e.prototype.destroy=function(){},e}(),E={LABEL_FLOAT_ABOVE:"mdc-floating-label--float-above",LABEL_SHAKE:"mdc-floating-label--shake",ROOT:"mdc-floating-label"},T=function(e){function t(n){var r=e.call(this,u.a({},t.defaultAdapter,n))||this;return r.shakeAnimationEndHandler_=function(){return r.handleShakeAnimationEnd_()},r}return u.b(t,e),Object.defineProperty(t,"cssClasses",{get:function(){return E},enumerable:!0,configurable:!0}),Object.defineProperty(t,"defaultAdapter",{get:function(){return{addClass:function(){},removeClass:function(){},getWidth:function(){return 0},registerInteractionHandler:function(){},deregisterInteractionHandler:function(){}}},enumerable:!0,configurable:!0}),t.prototype.init=function(){this.adapter_.registerInteractionHandler("animationend",this.shakeAnimationEndHandler_)},t.prototype.destroy=function(){this.adapter_.deregisterInteractionHandler("animationend",this.shakeAnimationEndHandler_)},t.prototype.getWidth=function(){return this.adapter_.getWidth()},t.prototype.shake=function(e){var n=t.cssClasses.LABEL_SHAKE;e?this.adapter_.addClass(n):this.adapter_.removeClass(n)},t.prototype.float=function(e){var n=t.cssClasses,r=n.LABEL_FLOAT_ABOVE,o=n.LABEL_SHAKE;e?this.adapter_.addClass(r):(this.adapter_.removeClass(r),this.adapter_.removeClass(o))},t.prototype.handleShakeAnimationEnd_=function(){var e=t.cssClasses.LABEL_SHAKE;this.adapter_.removeClass(e)},t}(_),C=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),O=function(){return(O=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(e+=j.NOTCH_ELEMENT_PADDING),this.adapter_.setNotchWidthProperty(e),this.adapter_.addClass(n)},t.prototype.closeNotch=function(){var e=t.cssClasses.OUTLINE_NOTCHED;this.adapter_.removeClass(e),this.adapter_.removeNotchWidthProperty()},t}(D),B=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),V=function(){return(V=Object.assign||function(e){for(var t,n=1,r=arguments.length;nY.ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO&&(i="center"),(this.isHoistedElement_||this.isFixedPosition_)&&this.adjustPositionForHoistedElement_(f),this.adapter_.setTransformOrigin(i+" "+r),this.adapter_.setPosition(f),this.adapter_.setMaxHeight(n?n+"px":"")},t.prototype.getAutoLayoutMeasurements_=function(){var e=this.adapter_.getAnchorDimensions(),t=this.adapter_.getBodyDimensions(),n=this.adapter_.getWindowDimensions(),r=this.adapter_.getWindowScroll();return e||(e={top:this.position_.y,right:this.position_.x,bottom:this.position_.y,left:this.position_.x,width:0,height:0}),{anchorSize:e,bodySize:t,surfaceSize:this.dimensions_,viewportDistance:{top:e.top,right:n.width-e.right,bottom:n.height-e.bottom,left:e.left},viewportSize:n,windowScroll:r}},t.prototype.getOriginCorner_=function(){var e=i.TOP_LEFT,t=this.measurements_,n=t.viewportDistance,r=t.anchorSize,a=t.surfaceSize,l=this.hasBit_(this.anchorCorner_,o.BOTTOM),u=l?n.top+r.height+this.anchorMargin_.bottom:n.top+this.anchorMargin_.top,s=l?n.bottom-this.anchorMargin_.bottom:n.bottom+r.height-this.anchorMargin_.top,c=a.height-u,f=a.height-s;f>0&&c0&&g=0&&(this.adapter_.removeAttributeFromElementAtIndex(t,J.ARIA_CHECKED_ATTR),this.adapter_.removeClassFromElementAtIndex(t,Z.MENU_SELECTED_LIST_ITEM)),this.adapter_.addClassToElementAtIndex(e,Z.MENU_SELECTED_LIST_ITEM),this.adapter_.addAttributeToElementAtIndex(e,J.ARIA_CHECKED_ATTR,"true")},t.prototype.validatedIndex_=function(e){var t=this.adapter_.getMenuItemCount();if(!(e>=0&&e0?t[0]:null,this.lastFocusableElement=t.length>0?t[t.length-1]:null,this.foundation.open()}else this.foundation&&this.foundation.isOpen()&&this.foundation.close()},enumerable:!0,configurable:!0}),t.prototype.getDefaultFoundation=function(){var e=this;return new $(ue({addClass:function(t){e.root.addClass(t)},removeClass:function(t){e.root.removeClass(t)},hasClass:function(t){return"mdc-menu-surface"===t||e.root.hasClass(t)},hasAnchor:function(){return!!e.anchorElement},notifyClose:function(){e.emit("onClose",{}),e.deregisterBodyClickListener(),e.props.open&&(e.open=e.props.open)},notifyOpen:function(){e.emit("onOpen",{}),e.registerBodyClickListener()},isElementInContainer:function(t){return e.root.ref===t||!!e.root.ref&&e.root.ref.contains(t)},isRtl:function(){return!!e.root.ref&&"rtl"===getComputedStyle(e.root.ref).getPropertyValue("direction")},setTransformOrigin:function(t){e.root.setStyle(r.getTransformPropertyName(window)+"-origin",t)}},this.getFocusAdapterMethods(),this.getDimensionAdapterMethods()))},t.prototype.getFocusAdapterMethods=function(){var e=this;return{isFocused:function(){return document.activeElement===e.root.ref},saveFocus:function(){e.previousFocus=document.activeElement},restoreFocus:function(){e.root.ref&&e.root.ref.contains(document.activeElement)&&e.previousFocus&&e.previousFocus.focus&&e.previousFocus.focus()},isFirstElementFocused:function(){return!!e.firstFocusableElement&&e.firstFocusableElement===document.activeElement},isLastElementFocused:function(){return!!e.firstFocusableElement&&e.firstFocusableElement===document.activeElement},focusFirstElement:function(){return!!e.firstFocusableElement&&e.firstFocusableElement.focus&&e.firstFocusableElement.focus()},focusLastElement:function(){return!!e.firstFocusableElement&&e.firstFocusableElement.focus&&e.firstFocusableElement.focus()}}},t.prototype.getDimensionAdapterMethods=function(){var e=this;return{getInnerDimensions:function(){return{width:e.root.ref?e.root.ref.offsetWidth:0,height:e.root.ref?e.root.ref.offsetHeight:0}},getAnchorDimensions:function(){return e.anchorElement&&e.anchorElement.getBoundingClientRect()},getWindowDimensions:function(){return{width:window.innerWidth,height:window.innerHeight}},getBodyDimensions:function(){return{width:document.body.clientWidth,height:document.body.clientHeight}},getWindowScroll:function(){return{x:window.pageXOffset,y:window.pageYOffset}},setPosition:function(t){e.root.setStyle("left",void 0!==t.left?t.left:null),e.root.setStyle("right",void 0!==t.right?t.right:null),e.root.setStyle("top",void 0!==t.top?t.top:null),e.root.setStyle("bottom",void 0!==t.bottom?t.bottom:null)},setMaxHeight:function(t){e.root.setStyle("maxHeight",t)}}},t.prototype.sync=function(e,t){var n=this;this.syncProp(e.fixed,t.fixed,function(){n.foundation.setFixedPosition(!!e.fixed)}),this.syncProp(e.hoistToBody,t.hoistToBody,function(){e.hoistToBody?n.hoistMenuToBody():n.unhoistMenuFromBody()});var r=e.anchorCorner&&function(e){return $.Corner[ce[e]]}(e.anchorCorner);this.syncProp(r,this.foundation.anchorCorner_,function(){r&&(n.foundation.setAnchorCorner(r),n.foundation.dimensions_=n.foundation.adapter_.getInnerDimensions(),n.foundation.autoPosition_())}),this.syncProp(e.open,t.open,function(){n.open=!!e.open})},t.prototype.hoistMenuToBody=function(){var e=this;this.root.ref&&this.root.ref.parentElement&&(document.body.appendChild(this.root.ref.parentElement.removeChild(this.root.ref)),this.hoisted=!0,this.foundation.setIsHoisted(!0),this.props.open&&setTimeout(function(){return e.foundation.autoPosition_()}))},t.prototype.unhoistMenuFromBody=function(){this.anchorElement&&this.root.ref&&(this.anchorElement.appendChild(this.root.ref),this.hoisted=!1,this.foundation.setIsHoisted(!1))},t.prototype.setAnchorCorner=function(e){this.foundation.setAnchorCorner(e)},t.prototype.registerBodyClickListener=function(){document.body.addEventListener("click",this.handleBodyClick),document.body.addEventListener("touchstart",this.handleBodyClick)},t.prototype.deregisterBodyClickListener=function(){document.body.removeEventListener("click",this.handleBodyClick),document.body.removeEventListener("touchstart",this.handleBodyClick)},t.prototype.handleBodyClick=function(e){this.foundation&&this.foundation.handleBodyClick(e)},t.prototype.handleKeydown=function(e){this.props.onKeyDown&&this.props.onKeyDown(e),this.foundation.handleKeydown(e)},t.prototype.render=function(){var e=this.props,t=e.children,n=(e.open,e.anchorCorner,e.onOpen,e.onClose,e.hoistToBody,se(e,["children","open","anchorCorner","onOpen","onClose","hoistToBody"]));return a.createElement(fe,ue({},this.root.props(n),{ref:this.root.setRef,onKeyDown:this.handleKeydown}),t)},t.displayName="MenuSurface",t}(b.a),pe=Object(v.a)({displayName:"MenuSurfaceAnchor",classNames:["mdc-menu-surface--anchor"]}),he=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),me=function(){return(me=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&!t.some(function(e){return e===document.activeElement})&&t[0].focus(),this.props.onOpen&&this.props.onOpen(e)},t.prototype.render=function(){var e=this,t=this.props,n=t.children,r=(t.focusOnOpen,ye(t,["children","focusOnOpen"])),o=!(n&&"object"===typeof n&&"MenuItems"===(n.type||{}).displayName);return a.createElement(de,me({},r,{"aria-hidden":!r.open,className:"mdc-menu "+(r.className||""),onKeyDown:this.handleKeydown,onClick:this.handleClick,onOpen:this.handleOpen,ref:function(t){return e.menuSurface=t}}),o?a.createElement(ve,{ref:function(t){return e.list=t}},n):a.cloneElement(n,{ref:function(t){return e.list=t}}))},t.displayName="Menu",t.defaultProps={focusOnOpen:!0},t}(b.a),_e=function(e){var t;return(t=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.state={open:!!e.props.open},e}return he(n,t),n.prototype.componentDidMount=function(){this.syncWithOpenProp(this.props.open)},n.prototype.componentDidUpdate=function(e){this.syncWithOpenProp(e.open)},n.prototype.syncWithOpenProp=function(e){void 0!==e&&this.state.open!==e&&this.setState({open:e})},n.prototype.render=function(){var t=this,n=this.props,r=n.handle,o=n.onClose,i=n.children,l=n.rootProps,u=void 0===l?{}:l,s=n.open,c=ye(n,["handle","onClose","children","rootProps","open"]),f=a.cloneElement(r,me({},r.props,{onClick:function(e){t.setState({open:!t.state.open}),r.props.onClick&&r.props.onClick(e)}}));return a.createElement(pe,me({},u),a.createElement(e,me({},c,{onClose:function(e){t.setState({open:!!s||!1}),o&&o(e)},open:this.state.open}),i),f)},n}(a.Component)).displayName="Simple"+e.displayName,t},Ee=(_e(be),_e(de),n(7));n.d(t,"a",function(){return Ne});var Te=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ce=function(){return(Ce=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0&&this.menu.items[this.state.selectedIndex].focus()},t.prototype.handleMenuClosed=function(){this.setState({menuOpen:!1}),document.activeElement!==this.selectedText&&this.foundation.handleBlur()},t.prototype.renderIcon=function(e,t){var n=this;return e&&"string"===typeof e||e.type&&e.type.displayName!==ke.displayName?a.createElement(ke,{ref:function(e){"leadingIcon_"===t?n.leadingIcon_=e&&e.foundation:n.trailingIcon_=e&&e.foundation},tabIndex:"trailingIcon_"===t?0:void 0,icon:e}):e},t.prototype.renderHelpText=function(){var e=this.props.helpText;if(!!!e)return null;var t="object"===typeof e&&!a.isValidElement(e);return e&&t?a.createElement(Pe,Ce({},e)):a.createElement(Pe,null,e)},t.prototype.render=function(){var e=this,t=this.props,n=t.placeholder,r=t.children,o=t.value,i=t.outlined,u=t.label,s=void 0===u?"":u,c=t.options,f=void 0===c?[]:c,d=t.rootProps,p=void 0===d?{}:d,h=t.className,m=t.enhanced,y=(t.icon,t.withLeadingIcon,t.onChange,t.onFocus,t.onBlur,t.onKeyDown,t.invalid),v=t.inputRef,g=(t.helpText,Oe(t,["placeholder","children","value","outlined","label","options","rootProps","className","enhanced","icon","withLeadingIcon","onChange","onFocus","onBlur","onKeyDown","invalid","inputRef","helpText"])),b=this.props,_=b.icon,E=b.withLeadingIcon;void 0!==E&&(Object(l.a)("Select prop 'withLeadingIcon' is now 'icon'."),_=E);var T=function e(t){return Array.isArray(t)&&t[0]&&"object"===typeof t[0]?t.map(function(t){if("object"!==typeof t)throw new Error("Encountered non object for Select "+t);return Ce({},t,{options:e(t.options)})}):Array.isArray(t)?t.map(function(e){return{value:e,label:e}}):"object"===typeof t?Object.keys(t).map(function(e){return{value:e,label:t[e]}}):t}(f),C=void 0!==o?void 0:this.props.defaultValue||"",O={onChange:this.handleChange,onFocus:this.handleFocus,onBlur:this.handleBlur,onTouchStart:this.handleClick,onMouseDown:this.handleClick},w={defaultValue:C,value:o,placeholder:n,selectOptions:T},x=a.createElement(S,Ce({},this.label.props({}),{ref:this.label.setRef}),s);return a.createElement(a.Fragment,null,a.createElement(we,Ce({ripple:!i},this.root.props(Ce({className:h},p)),{invalid:y,required:g.required,icon:_,outlined:i,ref:this.root.setRef}),!!_&&this.renderIcon(_,"leadingIcon_"),a.createElement(Se,null),m?a.createElement(a.Fragment,null,a.createElement("input",{type:"hidden",ref:function(t){return e.hiddenInput_=t}}),a.createElement("div",Ce({ref:function(t){return e.selectedText=t},className:"mdc-select__selected-text",tabIndex:this.props.disabled?-1:0,"aria-disabled":this.props.disabled?"true":"false","aria-expanded":this.state.menuOpen,onKeyDown:this.handleKeydown},O),this.state.selectedTextContent),a.createElement(Ie,Ce({},w,{selectedIndex:this.state.selectedIndex,apiRef:function(t){e.menu=t},open:this.state.menuOpen,onClose:this.handleMenuClosed,onOpen:this.handleMenuOpened,onSelect:this.handleMenuSelected}),r)):a.createElement(xe,Ce({},g,{elementRef:function(t){e.nativeControl=t,v&&v(t)}},w,O),r),i?a.createElement(W,Ce({},this.outline.props({})),x):a.createElement(a.Fragment,null,x,a.createElement(L,Ce({},this.lineRipple.props({}))))),this.renderHelpText())},t}(b.a),ke=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.root=t.createElement("root"),t}return Te(t,e),t.prototype.getDefaultFoundation=function(){var e=this;return new y({getAttr:function(t){return e.root.getProp(t)},setAttr:function(t,n){return e.root.setProp(t,n)},removeAttr:function(t){return e.root.removeProp(t)},setContent:function(t){e.root.ref&&(e.root.ref.textContent=t)},registerInteractionHandler:function(t,n){return e.root.addEventListener(t,n)},deregisterInteractionHandler:function(t,n){return e.root.removeEventListener(t,n)},notifyIconAction:function(){return e.emit("onClick",{},!0)}})},t.prototype.render=function(){return a.createElement(R.a,Ce({},this.root.props(Ce({},this.props,{className:"mdc-select__icon"}))))},t.displayName="SelectIcon",t}(b.a),Pe=Object(v.a)({displayName:"SelectHelperText",tag:"p",classNames:function(e){return["mdc-select-helper-text",{"mdc-select-helper-text--persistent":e.persistent,"mdc-select-helper-text--validation-msg":e.validationMsg}]},consumeProps:["persistent","validationMsg"]}),Ne=function(e){var t=e.enhanced,n=Oe(e,["enhanced"]);return a.createElement(Ae,Ce({key:t?"enhanced":"native",enhanced:t},n))};Ne.displayName="Select"},,function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,t){for(var n,l,u=a(e),s=1;s0)&&!(r=i.next()).done;)a.push(r.value)}catch(l){o={error:l}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},d=function(){for(var e=[],t=0;t0){var n=e[e.length-1];n!==t&&n.pause()}var r=e.indexOf(t);-1===r?e.push(t):(e.splice(r,1),e.push(t))},deactivateTrap:function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1),e.length>0&&e[e.length-1].unpause()}}}();function l(e){return setTimeout(e,0)}e.exports=function(e,t){var n=document,u="string"===typeof e?n.querySelector(e):e,s=i({returnFocusOnDeactivate:!0,escapeDeactivates:!0},t),c={firstTabbableNode:null,lastTabbableNode:null,nodeFocusedBeforeActivation:null,mostRecentlyFocusedNode:null,active:!1,paused:!1},f={activate:function(e){if(c.active)return;E(),c.active=!0,c.paused=!1,c.nodeFocusedBeforeActivation=n.activeElement;var t=e&&e.onActivate?e.onActivate:s.onActivate;t&&t();return p(),f},deactivate:d,pause:function(){if(c.paused||!c.active)return;c.paused=!0,h()},unpause:function(){if(!c.paused||!c.active)return;c.paused=!1,E(),p()}};return f;function d(e){if(c.active){clearTimeout(r),h(),c.active=!1,c.paused=!1,a.deactivateTrap(f);var t=e&&void 0!==e.onDeactivate?e.onDeactivate:s.onDeactivate;return t&&t(),(e&&void 0!==e.returnFocus?e.returnFocus:s.returnFocusOnDeactivate)&&l(function(){T(c.nodeFocusedBeforeActivation)}),f}}function p(){if(c.active)return a.activateTrap(f),r=l(function(){T(y())}),n.addEventListener("focusin",g,!0),n.addEventListener("mousedown",v,{capture:!0,passive:!1}),n.addEventListener("touchstart",v,{capture:!0,passive:!1}),n.addEventListener("click",_,{capture:!0,passive:!1}),n.addEventListener("keydown",b,{capture:!0,passive:!1}),f}function h(){if(c.active)return n.removeEventListener("focusin",g,!0),n.removeEventListener("mousedown",v,!0),n.removeEventListener("touchstart",v,!0),n.removeEventListener("click",_,!0),n.removeEventListener("keydown",b,!0),f}function m(e){var t=s[e],r=t;if(!t)return null;if("string"===typeof t&&!(r=n.querySelector(t)))throw new Error("`"+e+"` refers to no known node");if("function"===typeof t&&!(r=t()))throw new Error("`"+e+"` did not return a node");return r}function y(){var e;if(!(e=null!==m("initialFocus")?m("initialFocus"):u.contains(n.activeElement)?n.activeElement:c.firstTabbableNode||m("fallbackFocus")))throw new Error("You can't have a focus-trap without at least one focusable element");return e}function v(e){u.contains(e.target)||(s.clickOutsideDeactivates?d({returnFocus:!o.isFocusable(e.target)}):s.allowOutsideClick&&s.allowOutsideClick(e)||e.preventDefault())}function g(e){u.contains(e.target)||e.target instanceof Document||(e.stopImmediatePropagation(),T(c.mostRecentlyFocusedNode||y()))}function b(e){if(!1!==s.escapeDeactivates&&function(e){return"Escape"===e.key||"Esc"===e.key||27===e.keyCode}(e))return e.preventDefault(),void d();(function(e){return"Tab"===e.key||9===e.keyCode})(e)&&function(e){if(E(),e.shiftKey&&e.target===c.firstTabbableNode)return e.preventDefault(),void T(c.lastTabbableNode);if(!e.shiftKey&&e.target===c.lastTabbableNode)e.preventDefault(),T(c.firstTabbableNode)}(e)}function _(e){s.clickOutsideDeactivates||u.contains(e.target)||s.allowOutsideClick&&s.allowOutsideClick(e)||(e.preventDefault(),e.stopImmediatePropagation())}function E(){var e=o(u);c.firstTabbableNode=e[0]||y(),c.lastTabbableNode=e[e.length-1]||y()}function T(e){e!==n.activeElement&&(e&&e.focus?(e.focus(),c.mostRecentlyFocusedNode=e,function(e){return e.tagName&&"input"===e.tagName.toLowerCase()&&"function"===typeof e.select}(e)&&e.select()):T(y()))}}},function(e,t,n){"use strict";var r=n(0);t.a=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).liveMeasure,t=void 0===e||e,n=Object(r.useState)({}),o=n[0],i=n[1],a=Object(r.useState)(null),l=a[0],u=a[1],s=Object(r.useCallback)(function(e){u(e)},[]);return Object(r.useLayoutEffect)(function(){if(l){var e=function(){return window.requestAnimationFrame(function(){return i(function(e){var t=e.getBoundingClientRect();return{width:t.width,height:t.height,top:"x"in t?t.x:t.top,left:"y"in t?t.y:t.left,x:"x"in t?t.x:t.left,y:"y"in t?t.y:t.top,right:t.right,bottom:t.bottom}}(l))})};if(e(),t)return window.addEventListener("resize",e),window.addEventListener("scroll",e),function(){window.removeEventListener("resize",e),window.removeEventListener("scroll",e)}}},[l]),[s,o,l]}},,function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(13),a=n(7),l=n(14),u=n(1),s=function(){function e(e){void 0===e&&(e={}),this.adapter_=e}return Object.defineProperty(e,"cssClasses",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"strings",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"numbers",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"defaultAdapter",{get:function(){return{}},enumerable:!0,configurable:!0}),e.prototype.init=function(){},e.prototype.destroy=function(){},e}(),c={ICON_BUTTON_ON:"mdc-icon-button--on",ROOT:"mdc-icon-button"},f={ARIA_PRESSED:"aria-pressed",CHANGE_EVENT:"MDCIconButtonToggle:change"},d=function(e){function t(n){return e.call(this,u.a({},t.defaultAdapter,n))||this}return u.b(t,e),Object.defineProperty(t,"cssClasses",{get:function(){return c},enumerable:!0,configurable:!0}),Object.defineProperty(t,"strings",{get:function(){return f},enumerable:!0,configurable:!0}),Object.defineProperty(t,"defaultAdapter",{get:function(){return{addClass:function(){},hasClass:function(){return!1},notifyChange:function(){},removeClass:function(){},setAttr:function(){}}},enumerable:!0,configurable:!0}),t.prototype.init=function(){this.adapter_.setAttr(f.ARIA_PRESSED,""+this.isOn())},t.prototype.handleClick=function(){this.toggle(),this.adapter_.notifyChange({isOn:this.isOn()})},t.prototype.isOn=function(){return this.adapter_.hasClass(c.ICON_BUTTON_ON)},t.prototype.toggle=function(e){void 0===e&&(e=!this.isOn()),e?this.adapter_.addClass(c.ICON_BUTTON_ON):this.adapter_.removeClass(c.ICON_BUTTON_ON),this.adapter_.setAttr(f.ARIA_PRESSED,""+e)},t}(s),p=n(36),h=n(5),m=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),y=function(){return(y=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}n.d(t,"a",function(){return r})},function(e,t,n){"use strict";var r=n(8),o=n.n(r),i=n(0),a=n.n(i),l=n(3),u=n.n(l);function s(){return(s=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function f(e){var t=e.top,n=void 0===t?0:t,r=e.left,i=void 0===r?0:r,l=e.transform,u=e.className,f=e.children,d=e.innerRef,p=c(e,["top","left","transform","className","children","innerRef"]);return a.a.createElement("g",s({ref:d,className:o()("vx-group",u),transform:l||"translate(".concat(i,", ").concat(n,")")},p),f)}function d(e){var t=e.links,n=e.linkComponent,r=e.className;return a.a.createElement(f,null,t.map(function(e,t){return a.a.createElement(f,{className:o()("vx-network-links",r),key:"network-link-".concat(t)},a.a.createElement(n,{link:e}))}))}function p(e){var t=e.nodes,n=e.nodeComponent,r=e.className;return a.a.createElement(f,null,t.map(function(e,t){return a.a.createElement(f,{key:"network-node-".concat(t),className:o()("vx-network-nodes",r),transform:"translate(".concat(e.x,", ").concat(e.y,")")},a.a.createElement(n,{node:e}))}))}function h(e){var t=e.link;return a.a.createElement("line",{x1:t.source.x,y1:t.source.y,x2:t.target.x,y2:t.target.y,strokeWidth:2,stroke:"#999",strokeOpacity:.6})}function m(){return a.a.createElement("circle",{r:15,fill:"#21D4FD"})}function y(e){var t=e.graph,n=e.linkComponent,r=void 0===n?h:n,o=e.nodeComponent,i=void 0===o?m:o;return a.a.createElement(f,null,a.a.createElement(d,{links:t.links,linkComponent:r}),a.a.createElement(p,{nodes:t.nodes,nodeComponent:i}))}f.propTypes={top:u.a.number,left:u.a.number,transform:u.a.string,className:u.a.string,children:u.a.any,innerRef:u.a.oneOfType([u.a.func,u.a.object])},n.d(t,"a",function(){return y}),d.propTypes={links:u.a.array,linkComponent:u.a.any,className:u.a.string},p.propTypes={nodes:u.a.array,nodeComponent:u.a.any,className:u.a.string},h.propTypes={link:u.a.object},y.propTypes={graph:u.a.object,linkComponent:u.a.any,nodeComponent:u.a.any}},,,,,,function(e,t,n){"use strict";var r=n(28),o="function"===typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,l=o?Symbol.for("react.fragment"):60107,u=o?Symbol.for("react.strict_mode"):60108,s=o?Symbol.for("react.profiler"):60114,c=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.forward_ref"):60112,p=o?Symbol.for("react.suspense"):60113,h=o?Symbol.for("react.suspense_list"):60120,m=o?Symbol.for("react.memo"):60115,y=o?Symbol.for("react.lazy"):60116;o&&Symbol.for("react.fundamental"),o&&Symbol.for("react.responder"),o&&Symbol.for("react.scope");var v="function"===typeof Symbol&&Symbol.iterator;function g(e){for(var t=e.message,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;rL.length&&L.push(e)}function M(e,t,n){return null==e?0:function e(t,n,r,o){var l=typeof t;"undefined"!==l&&"boolean"!==l||(t=null);var u=!1;if(null===t)u=!0;else switch(l){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case a:u=!0}}if(u)return r(o,t,""===n?"."+j(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s