diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a8cdbc6b50..7e4ba6b338 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -55,7 +55,7 @@ jobs: uses: actions/checkout@v3 - name: Set up Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.20.2 check-latest: true diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 649a9e8a03..779b1b7292 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,7 +30,7 @@ jobs: uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.20.2 check-latest: true @@ -54,7 +54,7 @@ jobs: uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.20.2 check-latest: true @@ -79,7 +79,7 @@ jobs: - name: Setup Go id: go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.20.2 check-latest: true diff --git a/Makefile b/Makefile index 31875c24fd..3cbb1bb7a1 100644 --- a/Makefile +++ b/Makefile @@ -186,7 +186,8 @@ release-victoria-metrics: \ release-victoria-metrics-darwin-amd64 \ release-victoria-metrics-darwin-arm64 \ release-victoria-metrics-freebsd-amd64 \ - release-victoria-metrics-openbsd-amd64 + release-victoria-metrics-openbsd-amd64 \ + release-victoria-metrics-windows-amd64 # adds i386 arch release-victoria-metrics-linux-386: @@ -213,6 +214,9 @@ release-victoria-metrics-freebsd-amd64: release-victoria-metrics-openbsd-amd64: GOOS=openbsd GOARCH=amd64 $(MAKE) release-victoria-metrics-goos-goarch +release-victoria-metrics-windows-amd64: + GOARCH=amd64 $(MAKE) release-victoria-metrics-windows-goarch + release-victoria-metrics-goos-goarch: victoria-metrics-$(GOOS)-$(GOARCH)-prod cd bin && \ tar --transform="flags=r;s|-$(GOOS)-$(GOARCH)||" -czf victoria-metrics-$(GOOS)-$(GOARCH)-$(PKG_TAG).tar.gz \ @@ -222,6 +226,16 @@ release-victoria-metrics-goos-goarch: victoria-metrics-$(GOOS)-$(GOARCH)-prod | sed s/-$(GOOS)-$(GOARCH)-prod/-prod/ > victoria-metrics-$(GOOS)-$(GOARCH)-$(PKG_TAG)_checksums.txt cd bin && rm -rf victoria-metrics-$(GOOS)-$(GOARCH)-prod +release-victoria-metrics-windows-goarch: victoria-metrics-windows-$(GOARCH)-prod + cd bin && \ + zip victoria-metrics-windows-$(GOARCH)-$(PKG_TAG).zip \ + victoria-metrics-windows-$(GOARCH)-prod.exe \ + && sha256sum victoria-metrics-windows-$(GOARCH)-$(PKG_TAG).zip \ + victoria-metrics-windows-$(GOARCH)-prod.exe \ + > victoria-metrics-windows-$(GOARCH)-$(PKG_TAG)_checksums.txt + cd bin && rm -rf \ + victoria-metrics-windows-$(GOARCH)-prod.exe + release-vmutils: \ release-vmutils-linux-386 \ release-vmutils-linux-amd64 \ @@ -314,7 +328,6 @@ release-vmutils-windows-goarch: \ vmauth-windows-$(GOARCH)-prod.exe \ vmctl-windows-$(GOARCH)-prod.exe - pprof-cpu: go tool pprof -trim_path=github.com/VictoriaMetrics/VictoriaMetrics@ $(PPROF_FILE) diff --git a/README.md b/README.md index 8605ca981e..931aecfb9e 100644 --- a/README.md +++ b/README.md @@ -201,7 +201,7 @@ Changing scrape configuration is possible with text editor: vi $SNAP_DATA/var/snap/victoriametrics/current/etc/victoriametrics-scrape-config.yaml ``` -After changes were made, trigger config re-read with the command `curl 127.0.0.1:8248/-/reload`. +After changes were made, trigger config re-read with the command `curl 127.0.0.1:8428/-/reload`. ## Prometheus setup @@ -1447,12 +1447,14 @@ can be configured with the `-inmemoryDataFlushInterval` command-line flag (note In-memory parts are persisted to disk into `part` directories under the `<-storageDataPath>/data/small/YYYY_MM/` folder, where `YYYY_MM` is the month partition for the stored data. For example, `2022_11` is the partition for `parts` with [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) from `November 2022`. +Each partition directory contains `parts.json` file with the actual list of parts in the partition. -The `part` directory has the following name pattern: `rowsCount_blocksCount_minTimestamp_maxTimestamp`, where: +Every `part` directory contains `metadata.json` file with the following fields: -- `rowsCount` - the number of [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) stored in the part -- `blocksCount` - the number of blocks stored in the part (see details about blocks below) -- `minTimestamp` and `maxTimestamp` - minimum and maximum timestamps across raw samples stored in the part +- `RowsCount` - the number of [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) stored in the part +- `BlocksCount` - the number of blocks stored in the part (see details about blocks below) +- `MinTimestamp` and `MaxTimestamp` - minimum and maximum timestamps across raw samples stored in the part +- `MinDedupInterval` - the [deduplication interval](#deduplication) applied to the given part. Each `part` consists of `blocks` sorted by internal time series id (aka `TSID`). Each `block` contains up to 8K [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples), @@ -1474,9 +1476,8 @@ for fast block lookups, which belong to the given `TSID` and cover the given tim and [freeing up disk space for the deleted time series](#how-to-delete-time-series) are performed during the merge Newly added `parts` either successfully appear in the storage or fail to appear. -The newly added `parts` are being created in a temporary directory under `<-storageDataPath>/data/{small,big}/YYYY_MM/tmp` folder. -When the newly added `part` is fully written and [fsynced](https://man7.org/linux/man-pages/man2/fsync.2.html) -to a temporary directory, then it is atomically moved to the storage directory. +The newly added `part` is atomically registered in the `parts.json` file under the corresponding partition +after it is fully written and [fsynced](https://man7.org/linux/man-pages/man2/fsync.2.html) to the storage. Thanks to this alogrithm, storage never contains partially created parts, even if hardware power off occurrs in the middle of writing the `part` to disk - such incompletely written `parts` are automatically deleted on the next VictoriaMetrics start. @@ -1505,8 +1506,7 @@ Retention is configured with the `-retentionPeriod` command-line flag, which tak Data is split in per-month partitions inside `<-storageDataPath>/data/{small,big}` folders. Data partitions outside the configured retention are deleted on the first day of the new month. -Each partition consists of one or more data parts with the following name pattern `rowsCount_blocksCount_minTimestamp_maxTimestamp`. -Data parts outside of the configured retention are eventually deleted during +Each partition consists of one or more data parts. Data parts outside of the configured retention are eventually deleted during [background merge](https://medium.com/@valyala/how-victoriametrics-makes-instant-snapshots-for-multi-terabyte-time-series-data-e1f3fb0e0282). The maximum disk space usage for a given `-retentionPeriod` is going to be (`-retentionPeriod` + 1) months. diff --git a/SECURITY.md b/SECURITY.md index 052a44eda8..fae1eb383d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,10 +4,10 @@ | Version | Supported | |---------|--------------------| -| 1.81.x | :white_check_mark: | -| 1.80.x | :x: | -| 1.79.x | :white_check_mark: | -| < 1.78 | :x: | +| [latest release](https://docs.victoriametrics.com/CHANGELOG.html) | :white_check_mark: | +| v1.87.x LTS release | :white_check_mark: | +| v1.79.x LTS release | :white_check_mark: | +| other releases | :x: | ## Reporting a Vulnerability diff --git a/app/victoria-metrics/Makefile b/app/victoria-metrics/Makefile index baf91090c8..f8fa3d089e 100644 --- a/app/victoria-metrics/Makefile +++ b/app/victoria-metrics/Makefile @@ -39,6 +39,9 @@ victoria-metrics-freebsd-amd64-prod: victoria-metrics-openbsd-amd64-prod: APP_NAME=victoria-metrics $(MAKE) app-via-docker-openbsd-amd64 +victoria-metrics-windows-amd64-prod: + APP_NAME=victoria-metrics $(MAKE) app-via-docker-windows-amd64 + package-victoria-metrics: APP_NAME=victoria-metrics $(MAKE) package-via-docker @@ -100,6 +103,9 @@ victoria-metrics-freebsd-amd64: victoria-metrics-openbsd-amd64: APP_NAME=victoria-metrics CGO_ENABLED=0 GOOS=openbsd GOARCH=amd64 $(MAKE) app-local-goos-goarch +victoria-metrics-windows-amd64: + GOARCH=amd64 APP_NAME=victoria-metrics $(MAKE) app-local-windows-goarch + victoria-metrics-pure: APP_NAME=victoria-metrics $(MAKE) app-local-pure diff --git a/app/vmalert/config/config.go b/app/vmalert/config/config.go index 2de93fc555..35e00978f2 100644 --- a/app/vmalert/config/config.go +++ b/app/vmalert/config/config.go @@ -10,9 +10,9 @@ import ( "gopkg.in/yaml.v2" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/config/log" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/utils" "github.com/VictoriaMetrics/VictoriaMetrics/lib/envtemplate" - "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promutils" ) @@ -199,9 +199,17 @@ func (r *Rule) Validate() error { // ValidateTplFn must validate the given annotations type ValidateTplFn func(annotations map[string]string) error +// cLogger is a logger with support of logs suppressing. +// it is used when logs emitted by config package needs +// to be suppressed. +var cLogger = &log.Logger{} + // ParseSilent parses rule configs from given file patterns without emitting logs func ParseSilent(pathPatterns []string, validateTplFn ValidateTplFn, validateExpressions bool) ([]Group, error) { - files, err := readFromFS(pathPatterns, true) + cLogger.Suppress(true) + defer cLogger.Suppress(false) + + files, err := readFromFS(pathPatterns) if err != nil { return nil, fmt.Errorf("failed to read from the config: %s", err) } @@ -210,7 +218,7 @@ func ParseSilent(pathPatterns []string, validateTplFn ValidateTplFn, validateExp // Parse parses rule configs from given file patterns func Parse(pathPatterns []string, validateTplFn ValidateTplFn, validateExpressions bool) ([]Group, error) { - files, err := readFromFS(pathPatterns, false) + files, err := readFromFS(pathPatterns) if err != nil { return nil, fmt.Errorf("failed to read from the config: %s", err) } @@ -219,7 +227,7 @@ func Parse(pathPatterns []string, validateTplFn ValidateTplFn, validateExpressio return nil, fmt.Errorf("failed to parse %s: %s", pathPatterns, err) } if len(groups) < 1 { - logger.Warnf("no groups found in %s", strings.Join(pathPatterns, ";")) + cLogger.Warnf("no groups found in %s", strings.Join(pathPatterns, ";")) } return groups, nil } diff --git a/app/vmalert/config/fs.go b/app/vmalert/config/fs.go index f1aa8f5115..372d8066fa 100644 --- a/app/vmalert/config/fs.go +++ b/app/vmalert/config/fs.go @@ -4,9 +4,9 @@ import ( "fmt" "strings" "sync" + "time" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/config/fslocal" - "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" ) // FS represent a file system abstract for reading files. @@ -36,10 +36,9 @@ var ( // readFromFS returns an error if at least one FS failed to init. // The function can be called multiple times but each unique path // will be inited only once. -// If silent == true, readFromFS will not emit any logs. // // It is allowed to mix different FS types in path list. -func readFromFS(paths []string, silent bool) (map[string][]byte, error) { +func readFromFS(paths []string) (map[string][]byte, error) { var err error result := make(map[string][]byte) for _, path := range paths { @@ -65,18 +64,19 @@ func readFromFS(paths []string, silent bool) (map[string][]byte, error) { return nil, fmt.Errorf("failed to list files from %q", fs) } - if !silent { - logger.Infof("found %d files to read from %q", len(list), fs) - } + cLogger.Infof("found %d files to read from %q", len(list), fs) if len(list) < 1 { continue } + ts := time.Now() files, err := fs.Read(list) if err != nil { return nil, fmt.Errorf("error while reading files from %q: %w", fs, err) } + cLogger.Infof("finished reading %d files in %v from %q", len(list), time.Since(ts), fs) + for k, v := range files { if _, ok := result[k]; ok { return nil, fmt.Errorf("duplicate found for file name %q: file names must be unique", k) diff --git a/app/vmalert/config/log/logger.go b/app/vmalert/config/log/logger.go new file mode 100644 index 0000000000..8b79e55ac6 --- /dev/null +++ b/app/vmalert/config/log/logger.go @@ -0,0 +1,59 @@ +package log + +import ( + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// Logger is using lib/logger for logging +// but can be suppressed via Suppress method +type Logger struct { + mu sync.RWMutex + disabled bool +} + +// Suppress whether to ignore message logging. +// Once suppressed, logging continues to be ignored +// until logger is un-suppressed. +func (l *Logger) Suppress(v bool) { + l.mu.Lock() + l.disabled = v + l.mu.Unlock() +} + +func (l *Logger) isDisabled() bool { + l.mu.RLock() + defer l.mu.RUnlock() + return l.disabled +} + +// Errorf logs error message. +func (l *Logger) Errorf(format string, args ...interface{}) { + if l.isDisabled() { + return + } + logger.Errorf(format, args...) +} + +// Warnf logs warning message. +func (l *Logger) Warnf(format string, args ...interface{}) { + if l.isDisabled() { + return + } + logger.Warnf(format, args...) +} + +// Infof logs info message. +func (l *Logger) Infof(format string, args ...interface{}) { + if l.isDisabled() { + return + } + logger.Infof(format, args...) +} + +// Panicf logs panic message and panics. +// Panicf can't be suppressed +func (l *Logger) Panicf(format string, args ...interface{}) { + logger.Panicf(format, args...) +} diff --git a/app/vmalert/config/log/logger_test.go b/app/vmalert/config/log/logger_test.go new file mode 100644 index 0000000000..ea0f4fe6f7 --- /dev/null +++ b/app/vmalert/config/log/logger_test.go @@ -0,0 +1,54 @@ +package log + +import ( + "bytes" + "fmt" + "strings" + "testing" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +func TestOutput(t *testing.T) { + testOutput := &bytes.Buffer{} + logger.SetOutputForTests(testOutput) + defer logger.ResetOutputForTest() + + log := &Logger{} + + mustMatch := func(exp string) { + t.Helper() + if exp == "" { + if testOutput.String() != "" { + t.Errorf("expected output to be empty; got %q", testOutput.String()) + return + } + } + if !strings.Contains(testOutput.String(), exp) { + t.Errorf("output %q should contain %q", testOutput.String(), exp) + } + fmt.Println(testOutput.String()) + testOutput.Reset() + } + + log.Warnf("foo") + mustMatch("foo") + + log.Infof("info %d", 2) + mustMatch("info 2") + + log.Errorf("error %s %d", "baz", 5) + mustMatch("error baz 5") + + log.Suppress(true) + + log.Warnf("foo") + mustMatch("") + + log.Infof("info %d", 2) + mustMatch("") + + log.Errorf("error %q %d", "baz", 5) + mustMatch("") + +} diff --git a/app/vmalert/main.go b/app/vmalert/main.go index 2d32a5d3b5..28d4f5c175 100644 --- a/app/vmalert/main.go +++ b/app/vmalert/main.go @@ -319,6 +319,7 @@ func configReload(ctx context.Context, m *manager, groupsCfg []config.Group, sig // init reload metrics with positive values to improve alerting conditions configSuccess.Set(1) configTimestamp.Set(fasttime.UnixTimestamp()) + parseFn := config.Parse for { select { case <-ctx.Done(): @@ -330,7 +331,11 @@ func configReload(ctx context.Context, m *manager, groupsCfg []config.Group, sig } logger.Infof("SIGHUP received. Going to reload rules %q %s...", *rulePath, tmplMsg) configReloads.Inc() + // allow logs emitting during manual config reload + parseFn = config.Parse case <-configCheckCh: + // disable logs emitting during per-interval config reload + parseFn = config.ParseSilent } if err := notifier.Reload(); err != nil { configReloadErrors.Inc() @@ -345,7 +350,7 @@ func configReload(ctx context.Context, m *manager, groupsCfg []config.Group, sig logger.Errorf("failed to load new templates: %s", err) continue } - newGroupsCfg, err := config.ParseSilent(*rulePath, validateTplFn, *validateExpressions) + newGroupsCfg, err := parseFn(*rulePath, validateTplFn, *validateExpressions) if err != nil { configReloadErrors.Inc() configSuccess.Set(0) diff --git a/app/vmalert/notifier/alert.go b/app/vmalert/notifier/alert.go index f26cfcfa32..89dca7e176 100644 --- a/app/vmalert/notifier/alert.go +++ b/app/vmalert/notifier/alert.go @@ -111,11 +111,7 @@ func (a *Alert) ExecTemplate(q templates.QueryFn, labels, annotations map[string ActiveAt: a.ActiveAt, For: a.For, } - tmpl, err := templates.GetWithFuncs(templates.FuncsWithQuery(q)) - if err != nil { - return nil, fmt.Errorf("error getting a template: %w", err) - } - return templateAnnotations(annotations, tplData, tmpl, true) + return ExecTemplate(q, annotations, tplData) } // ExecTemplate executes the given template for given annotations map. diff --git a/app/vmalert/notifier/alert_test.go b/app/vmalert/notifier/alert_test.go index 9999f6f42e..bff5359968 100644 --- a/app/vmalert/notifier/alert_test.go +++ b/app/vmalert/notifier/alert_test.go @@ -200,6 +200,9 @@ func TestAlert_ExecTemplate(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { + if err := ValidateTemplates(tc.annotations); err != nil { + t.Fatal(err) + } tpl, err := tc.alert.ExecTemplate(qFn, tc.alert.Labels, tc.annotations) if err != nil { t.Fatal(err) diff --git a/app/vmalert/notifier/init.go b/app/vmalert/notifier/init.go index e85bc47f1c..4ec773fbfa 100644 --- a/app/vmalert/notifier/init.go +++ b/app/vmalert/notifier/init.go @@ -81,10 +81,6 @@ var ( // // Init returns an error if both mods are used. func Init(gen AlertURLGenerator, extLabels map[string]string, extURL string) (func() []Notifier, error) { - if externalLabels != nil || externalURL != "" { - return nil, fmt.Errorf("BUG: notifier.Init was called multiple times") - } - externalURL = extURL externalLabels = extLabels eu, err := url.Parse(externalURL) diff --git a/app/vmalert/notifier/init_test.go b/app/vmalert/notifier/init_test.go new file mode 100644 index 0000000000..c7ab2527fe --- /dev/null +++ b/app/vmalert/notifier/init_test.go @@ -0,0 +1,37 @@ +package notifier + +import ( + "github.com/VictoriaMetrics/VictoriaMetrics/lib/flagutil" + "testing" +) + +func TestInit(t *testing.T) { + oldAddrs := *addrs + defer func() { *addrs = oldAddrs }() + + *addrs = flagutil.ArrayString{"127.0.0.1", "127.0.0.2"} + + fn, err := Init(nil, nil, "") + if err != nil { + t.Fatalf("%s", err) + } + + nfs := fn() + if len(nfs) != 2 { + t.Fatalf("expected to get 2 notifiers; got %d", len(nfs)) + } + + targets := GetTargets() + if targets == nil || targets[TargetStatic] == nil { + t.Fatalf("expected to get static targets in response") + } + + nf1 := targets[TargetStatic][0] + if nf1.Addr() != "127.0.0.1/api/v2/alerts" { + t.Fatalf("expected to get \"127.0.0.1/api/v2/alerts\"; got %q instead", nf1.Addr()) + } + nf2 := targets[TargetStatic][1] + if nf2.Addr() != "127.0.0.2/api/v2/alerts" { + t.Fatalf("expected to get \"127.0.0.2/api/v2/alerts\"; got %q instead", nf2.Addr()) + } +} diff --git a/app/vmalert/remotewrite/init_test.go b/app/vmalert/remotewrite/init_test.go new file mode 100644 index 0000000000..330fef0f32 --- /dev/null +++ b/app/vmalert/remotewrite/init_test.go @@ -0,0 +1,20 @@ +package remotewrite + +import ( + "context" + "testing" +) + +func TestInit(t *testing.T) { + oldAddr := *addr + defer func() { *addr = oldAddr }() + + *addr = "http://localhost:8428" + cl, err := Init(context.Background()) + if err != nil { + t.Fatal(err) + } + if err := cl.Close(); err != nil { + t.Fatal(err) + } +} diff --git a/app/vmalert/templates/template_test.go b/app/vmalert/templates/template_test.go index d5378a4340..30bf1e975d 100644 --- a/app/vmalert/templates/template_test.go +++ b/app/vmalert/templates/template_test.go @@ -76,6 +76,20 @@ func TestTemplateFuncs(t *testing.T) { formatting("humanize1024", float64(146521335255970361638912), "124.1Zi") formatting("humanize1024", float64(150037847302113650318245888), "124.1Yi") formatting("humanize1024", float64(153638755637364377925883789312), "1.271e+05Yi") + + formatting("humanize", float64(127087), "127.1k") + formatting("humanize", float64(136458627186688), "136.5T") + + formatting("humanizeDuration", 1, "1s") + formatting("humanizeDuration", 0.2, "200ms") + formatting("humanizeDuration", 42000, "11h 40m 0s") + formatting("humanizeDuration", 16790555, "194d 8h 2m 35s") + + formatting("humanizePercentage", 1, "100%") + formatting("humanizePercentage", 0.8, "80%") + formatting("humanizePercentage", 0.015, "1.5%") + + formatting("humanizeTimestamp", 1679055557, "2023-03-17 12:19:17 +0000 UTC") } func mkTemplate(current, replacement interface{}) textTemplate { diff --git a/app/vmalert/web_test.go b/app/vmalert/web_test.go index 5648087c69..6000105272 100644 --- a/app/vmalert/web_test.go +++ b/app/vmalert/web_test.go @@ -7,6 +7,7 @@ import ( "net/http/httptest" "reflect" "testing" + "time" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/notifier" ) @@ -19,9 +20,18 @@ func TestHandler(t *testing.T) { }, state: newRuleState(10), } + ar.state.add(ruleStateEntry{ + time: time.Now(), + at: time.Now(), + samples: 10, + }) + rr := &RecordingRule{ + Name: "record", + state: newRuleState(10), + } g := &Group{ Name: "group", - Rules: []Rule{ar}, + Rules: []Rule{ar, rr}, } m := &manager{groups: make(map[uint64]*Group)} m.groups[0] = g @@ -62,6 +72,14 @@ func TestHandler(t *testing.T) { t.Run("/vmalert/rule", func(t *testing.T) { a := ar.ToAPI() getResp(ts.URL+"/vmalert/"+a.WebLink(), nil, 200) + r := rr.ToAPI() + getResp(ts.URL+"/vmalert/"+r.WebLink(), nil, 200) + }) + t.Run("/vmalert/alert", func(t *testing.T) { + alerts := ar.AlertsToAPI() + for _, a := range alerts { + getResp(ts.URL+"/vmalert/"+a.WebLink(), nil, 200) + } }) t.Run("/vmalert/rule?badParam", func(t *testing.T) { params := fmt.Sprintf("?%s=0&%s=1", paramGroupID, paramRuleID) diff --git a/app/vmctl/main.go b/app/vmctl/main.go index 6fc1c2dd9a..a4efd2b6dd 100644 --- a/app/vmctl/main.go +++ b/app/vmctl/main.go @@ -15,6 +15,7 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/app/vmctl/backoff" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmctl/native" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmctl/remoteread" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmctl/terminal" "github.com/urfave/cli/v2" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmctl/influx" @@ -71,7 +72,7 @@ func main() { } otsdbProcessor := newOtsdbProcessor(otsdbClient, importer, c.Int(otsdbConcurrency)) - return otsdbProcessor.run(c.Bool(globalSilent), c.Bool(globalVerbose)) + return otsdbProcessor.run(isNonInteractive(c), c.Bool(globalVerbose)) }, }, { @@ -112,7 +113,7 @@ func main() { c.String(influxMeasurementFieldSeparator), c.Bool(influxSkipDatabaseLabel), c.Bool(influxPrometheusMode)) - return processor.run(c.Bool(globalSilent), c.Bool(globalVerbose)) + return processor.run(isNonInteractive(c), c.Bool(globalVerbose)) }, }, { @@ -152,7 +153,7 @@ func main() { }, cc: c.Int(remoteReadConcurrency), } - return rmp.run(ctx, c.Bool(globalSilent), c.Bool(globalVerbose)) + return rmp.run(ctx, isNonInteractive(c), c.Bool(globalVerbose)) }, }, { @@ -186,7 +187,7 @@ func main() { im: importer, cc: c.Int(promConcurrency), } - return pp.run(c.Bool(globalSilent), c.Bool(globalVerbose)) + return pp.run(isNonInteractive(c), c.Bool(globalVerbose)) }, }, { @@ -244,7 +245,7 @@ func main() { backoff: backoff.New(), cc: c.Int(vmConcurrency), } - return p.run(ctx, c.Bool(globalSilent)) + return p.run(ctx, isNonInteractive(c)) }, }, { @@ -317,3 +318,8 @@ func initConfigVM(c *cli.Context) vm.Config { DisableProgressBar: c.Bool(vmDisableProgressBar), } } + +func isNonInteractive(c *cli.Context) bool { + isTerminal := terminal.IsTerminal(int(os.Stdout.Fd())) + return c.Bool(globalSilent) || !isTerminal +} diff --git a/app/vmctl/terminal/terminal.go b/app/vmctl/terminal/terminal.go new file mode 100644 index 0000000000..2f3e26eaa2 --- /dev/null +++ b/app/vmctl/terminal/terminal.go @@ -0,0 +1,14 @@ +//go:build darwin || linux || solaris +// +build darwin linux solaris + +package terminal + +import ( + "golang.org/x/sys/unix" +) + +// IsTerminal returns true if the file descriptor is terminal +func IsTerminal(fd int) bool { + _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) + return err == nil +} diff --git a/app/vmctl/terminal/unix.go b/app/vmctl/terminal/unix.go new file mode 100644 index 0000000000..610e17f8c2 --- /dev/null +++ b/app/vmctl/terminal/unix.go @@ -0,0 +1,8 @@ +//go:build aix || linux || solaris || zos +// +build aix linux solaris zos + +package terminal + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TCGETS diff --git a/app/vmctl/terminal/unix_bsd.go b/app/vmctl/terminal/unix_bsd.go new file mode 100644 index 0000000000..7f866d087f --- /dev/null +++ b/app/vmctl/terminal/unix_bsd.go @@ -0,0 +1,8 @@ +//go:build darwin +// +build darwin + +package terminal + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TIOCGETA diff --git a/app/vmselect/netstorage/netstorage.go b/app/vmselect/netstorage/netstorage.go index ad387bcbda..5dcebec217 100644 --- a/app/vmselect/netstorage/netstorage.go +++ b/app/vmselect/netstorage/netstorage.go @@ -149,40 +149,28 @@ func timeseriesWorker(qt *querytracer.Tracer, workChs []chan *timeseriesWork, wo // Then help others with the remaining work. rowsProcessed = 0 seriesProcessed = 0 - idx := int(workerID) - for { - tsw, idxNext := stealTimeseriesWork(workChs, idx) - if tsw == nil { - // There is no more work - break + for i := uint(1); i < uint(len(workChs)); i++ { + idx := (i + workerID) % uint(len(workChs)) + ch := workChs[idx] + for len(ch) > 0 { + // Give a chance other goroutines to perform their work. + runtime.Gosched() + // It is expected that every channel in the workChs is already closed, + // so the next line should return immediately. + tsw, ok := <-ch + if !ok { + break + } + tsw.err = tsw.do(&tmpResult.rs, workerID) + rowsProcessed += tsw.rowsProcessed + seriesProcessed++ } - tsw.err = tsw.do(&tmpResult.rs, workerID) - rowsProcessed += tsw.rowsProcessed - seriesProcessed++ - idx = idxNext } qt.Printf("others work processed: series=%d, samples=%d", seriesProcessed, rowsProcessed) putTmpResult(tmpResult) } -func stealTimeseriesWork(workChs []chan *timeseriesWork, startIdx int) (*timeseriesWork, int) { - for i := startIdx; i < startIdx+len(workChs); i++ { - // Give a chance other goroutines to perform their work - runtime.Gosched() - - idx := i % len(workChs) - ch := workChs[idx] - // It is expected that every channel in the workChs is already closed, - // so the next line should return immediately. - tsw, ok := <-ch - if ok { - return tsw, idx - } - } - return nil, startIdx -} - func getTmpResult() *result { v := resultPool.Get() if v == nil { @@ -208,10 +196,17 @@ type result struct { var resultPool sync.Pool +// MaxWorkers returns the maximum number of workers netstorage can spin when calling RunParallel() +func MaxWorkers() int { + return gomaxprocs +} + +var gomaxprocs = cgroup.AvailableCPUs() + // RunParallel runs f in parallel for all the results from rss. // // f shouldn't hold references to rs after returning. -// workerID is the id of the worker goroutine that calls f. +// workerID is the id of the worker goroutine that calls f. The workerID is in the range [0..MaxWorkers()-1]. // Data processing is immediately stopped if f returns non-nil error. // // rss becomes unusable after the call to RunParallel. @@ -245,7 +240,8 @@ func (rss *Results) runParallel(qt *querytracer.Tracer, f func(rs *Result, worke tsw.f = f tsw.mustStop = &mustStop } - if gomaxprocs == 1 || tswsLen == 1 { + maxWorkers := MaxWorkers() + if maxWorkers == 1 || tswsLen == 1 { // It is faster to process time series in the current goroutine. tsw := getTimeseriesWork() tmpResult := getTmpResult() @@ -281,8 +277,8 @@ func (rss *Results) runParallel(qt *querytracer.Tracer, f func(rs *Result, worke // Prepare worker channels. workers := len(tsws) - if workers > gomaxprocs { - workers = gomaxprocs + if workers > maxWorkers { + workers = maxWorkers } itemsPerWorker := (len(tsws) + workers - 1) / workers workChs := make([]chan *timeseriesWork, workers) @@ -334,8 +330,6 @@ var ( seriesReadPerQuery = metrics.NewHistogram(`vm_series_read_per_query`) ) -var gomaxprocs = cgroup.AvailableCPUs() - type packedTimeseries struct { metricName string brs []blockRef @@ -398,37 +392,25 @@ func unpackWorker(workChs []chan *unpackWork, workerID uint) { } // Then help others with their work. - idx := int(workerID) - for { - upw, idxNext := stealUnpackWork(workChs, idx) - if upw == nil { - // There is no more work - break + for i := uint(1); i < uint(len(workChs)); i++ { + idx := (i + workerID) % uint(len(workChs)) + ch := workChs[idx] + for len(ch) > 0 { + // Give a chance other goroutines to perform their work + runtime.Gosched() + // It is expected that every channel in the workChs is already closed, + // so the next line should return immediately. + upw, ok := <-ch + if !ok { + break + } + upw.unpack(tmpBlock) } - upw.unpack(tmpBlock) - idx = idxNext } putTmpStorageBlock(tmpBlock) } -func stealUnpackWork(workChs []chan *unpackWork, startIdx int) (*unpackWork, int) { - for i := startIdx; i < startIdx+len(workChs); i++ { - // Give a chance other goroutines to perform their work - runtime.Gosched() - - idx := i % len(workChs) - ch := workChs[idx] - // It is expected that every channel in the workChs is already closed, - // so the next line should return immediately. - upw, ok := <-ch - if ok { - return upw, idx - } - } - return nil, startIdx -} - func getTmpStorageBlock() *storage.Block { v := tmpStorageBlockPool.Get() if v == nil { @@ -1096,7 +1078,6 @@ func ExportBlocks(qt *querytracer.Tracer, sq *storage.SearchQuery, deadline sear indexSearchDuration.UpdateDuration(startTime) // Start workers that call f in parallel on available CPU cores. - gomaxprocs := cgroup.AvailableCPUs() workCh := make(chan *exportWork, gomaxprocs*8) var ( errGlobal error diff --git a/app/vmselect/promql/aggr_incremental.go b/app/vmselect/promql/aggr_incremental.go index 26f91ed0e5..f3d5bd4167 100644 --- a/app/vmselect/promql/aggr_incremental.go +++ b/app/vmselect/promql/aggr_incremental.go @@ -3,8 +3,9 @@ package promql import ( "math" "strings" - "sync" + "unsafe" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" "github.com/VictoriaMetrics/metricsql" ) @@ -63,31 +64,36 @@ var incrementalAggrFuncCallbacksMap = map[string]*incrementalAggrFuncCallbacks{ }, } +type incrementalAggrContextMap struct { + m map[string]*incrementalAggrContext + + // The padding prevents false sharing on widespread platforms with + // 128 mod (cache line size) = 0 . + _ [128 - unsafe.Sizeof(map[string]*incrementalAggrContext{})%128]byte +} + type incrementalAggrFuncContext struct { ae *metricsql.AggrFuncExpr - m sync.Map + byWorkerID []incrementalAggrContextMap callbacks *incrementalAggrFuncCallbacks } func newIncrementalAggrFuncContext(ae *metricsql.AggrFuncExpr, callbacks *incrementalAggrFuncCallbacks) *incrementalAggrFuncContext { return &incrementalAggrFuncContext{ - ae: ae, - callbacks: callbacks, + ae: ae, + byWorkerID: make([]incrementalAggrContextMap, netstorage.MaxWorkers()), + callbacks: callbacks, } } func (iafc *incrementalAggrFuncContext) updateTimeseries(tsOrig *timeseries, workerID uint) { - v, ok := iafc.m.Load(workerID) - if !ok { - // It is safe creating and storing m in iafc.m without locking, - // since it is guaranteed that only a single goroutine can execute - // code for the given workerID at a time. - v = make(map[string]*incrementalAggrContext, 1) - iafc.m.Store(workerID, v) + v := &iafc.byWorkerID[workerID] + if v.m == nil { + v.m = make(map[string]*incrementalAggrContext, 1) } - m := v.(map[string]*incrementalAggrContext) + m := v.m ts := tsOrig keepOriginal := iafc.callbacks.keepOriginal @@ -128,9 +134,9 @@ func (iafc *incrementalAggrFuncContext) updateTimeseries(tsOrig *timeseries, wor func (iafc *incrementalAggrFuncContext) finalizeTimeseries() []*timeseries { mGlobal := make(map[string]*incrementalAggrContext) mergeAggrFunc := iafc.callbacks.mergeAggrFunc - iafc.m.Range(func(k, v interface{}) bool { - m := v.(map[string]*incrementalAggrContext) - for k, iac := range m { + byWorkerID := iafc.byWorkerID + for i := range byWorkerID { + for k, iac := range byWorkerID[i].m { iacGlobal := mGlobal[k] if iacGlobal == nil { if iafc.ae.Limit > 0 && len(mGlobal) >= iafc.ae.Limit { @@ -142,8 +148,7 @@ func (iafc *incrementalAggrFuncContext) finalizeTimeseries() []*timeseries { } mergeAggrFunc(iacGlobal, iac) } - return true - }) + } tss := make([]*timeseries, 0, len(mGlobal)) finalizeAggrFunc := iafc.callbacks.finalizeAggrFunc for _, iac := range mGlobal { diff --git a/app/vmselect/promql/aggr_incremental_test.go b/app/vmselect/promql/aggr_incremental_test.go index 781296511e..1676297582 100644 --- a/app/vmselect/promql/aggr_incremental_test.go +++ b/app/vmselect/promql/aggr_incremental_test.go @@ -8,6 +8,7 @@ import ( "sync" "testing" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" "github.com/VictoriaMetrics/metricsql" ) @@ -99,7 +100,7 @@ func TestIncrementalAggr(t *testing.T) { } func testIncrementalParallelAggr(iafc *incrementalAggrFuncContext, tssSrc, tssExpected []*timeseries) error { - const workersCount = 3 + workersCount := netstorage.MaxWorkers() tsCh := make(chan *timeseries) var wg sync.WaitGroup wg.Add(workersCount) diff --git a/app/vmselect/promql/timeseries_test.go b/app/vmselect/promql/timeseries_test.go index b77433ef00..b0d14edb60 100644 --- a/app/vmselect/promql/timeseries_test.go +++ b/app/vmselect/promql/timeseries_test.go @@ -4,6 +4,7 @@ import ( "os" "reflect" "testing" + "unsafe" "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" ) @@ -24,6 +25,26 @@ func TestMarshalTimeseriesFast(t *testing.T) { if !reflect.DeepEqual(tss, tss2) { t.Fatalf("unexpected timeseries unmarshaled\ngot\n%#v\nwant\n%#v", tss2[0], tss[0]) } + + // Check 8-byte alignment. + // This prevents from SIGBUS error on arm architectures. + // See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3927 + for _, ts := range tss2 { + if len(ts.Values) == 0 { + continue + } + + // check float64 alignment + addr := uintptr(unsafe.Pointer(&ts.Values[0])) + if mod := addr % unsafe.Alignof(ts.Values[0]); mod != 0 { + t.Fatalf("mis-aligned; &ts.Values[0]=%p; mod=%d", &ts.Values[0], mod) + } + // check int64 alignment + addr = uintptr(unsafe.Pointer(&ts.Timestamps[0])) + if mod := addr % unsafe.Alignof(ts.Timestamps[0]); mod != 0 { + t.Fatalf("mis-aligned; &ts.Timestamps[0]=%p; mod=%d", &ts.Timestamps[0], mod) + } + } } // Single series diff --git a/app/vmselect/vmui/asset-manifest.json b/app/vmselect/vmui/asset-manifest.json index 87dea36ef6..743c4512d0 100644 --- a/app/vmselect/vmui/asset-manifest.json +++ b/app/vmselect/vmui/asset-manifest.json @@ -1,14 +1,14 @@ { "files": { - "main.css": "./static/css/main.8d8c45cf.css", - "main.js": "./static/js/main.d5e360af.js", + "main.css": "./static/css/main.69d78cc2.css", + "main.js": "./static/js/main.1be8603e.js", "static/js/27.c1ccfd29.chunk.js": "./static/js/27.c1ccfd29.chunk.js", "static/media/Lato-Regular.ttf": "./static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf", "static/media/Lato-Bold.ttf": "./static/media/Lato-Bold.32360ba4b57802daa4d6.ttf", "index.html": "./index.html" }, "entrypoints": [ - "static/css/main.8d8c45cf.css", - "static/js/main.d5e360af.js" + "static/css/main.69d78cc2.css", + "static/js/main.1be8603e.js" ] } \ No newline at end of file diff --git a/app/vmselect/vmui/index.html b/app/vmselect/vmui/index.html index 4513983546..a533f17360 100644 --- a/app/vmselect/vmui/index.html +++ b/app/vmselect/vmui/index.html @@ -1 +1 @@ -<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/><meta name="theme-color" content="#000000"/><meta name="description" content="UI for VictoriaMetrics"/><link rel="apple-touch-icon" href="./apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="./favicon-32x32.png"><link rel="manifest" href="./manifest.json"/><title>VM UI</title><script src="./dashboards/index.js" type="module"></script><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="./preview.jpg"><meta name="twitter:title" content="UI for VictoriaMetrics"><meta name="twitter:description" content="Explore and troubleshoot your VictoriaMetrics data"><meta name="twitter:site" content="@VictoriaMetrics"><meta property="og:title" content="Metric explorer for VictoriaMetrics"><meta property="og:description" content="Explore and troubleshoot your VictoriaMetrics data"><meta property="og:image" content="./preview.jpg"><meta property="og:type" content="website"><script defer="defer" src="./static/js/main.d5e360af.js"></script><link href="./static/css/main.8d8c45cf.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html> \ No newline at end of file +<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/><meta name="theme-color" content="#000000"/><meta name="description" content="UI for VictoriaMetrics"/><link rel="apple-touch-icon" href="./apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="./favicon-32x32.png"><link rel="manifest" href="./manifest.json"/><title>VM UI</title><script src="./dashboards/index.js" type="module"></script><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="./preview.jpg"><meta name="twitter:title" content="UI for VictoriaMetrics"><meta name="twitter:description" content="Explore and troubleshoot your VictoriaMetrics data"><meta name="twitter:site" content="@VictoriaMetrics"><meta property="og:title" content="Metric explorer for VictoriaMetrics"><meta property="og:description" content="Explore and troubleshoot your VictoriaMetrics data"><meta property="og:image" content="./preview.jpg"><meta property="og:type" content="website"><script defer="defer" src="./static/js/main.1be8603e.js"></script><link href="./static/css/main.69d78cc2.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html> \ No newline at end of file diff --git a/app/vmselect/vmui/static/css/main.69d78cc2.css b/app/vmselect/vmui/static/css/main.69d78cc2.css new file mode 100644 index 0000000000..ca8fed68ae --- /dev/null +++ b/app/vmselect/vmui/static/css/main.69d78cc2.css @@ -0,0 +1 @@ +.vm-tabs{gap:16px;height:100%;position:relative;-webkit-user-select:none;user-select:none}.vm-tabs,.vm-tabs-item{align-items:center;display:flex;justify-content:center}.vm-tabs-item{color:inherit;cursor:pointer;font-size:inherit;font-weight:inherit;opacity:.6;padding:16px 8px;text-decoration:none;text-transform:uppercase;transition:opacity .2s}.vm-tabs-item_active{opacity:1}.vm-tabs-item:hover{opacity:.8}.vm-tabs-item__icon{display:grid;margin-right:8px;width:15px}.vm-tabs-item__icon_single{margin-right:0}.vm-tabs__indicator{border-bottom:2px solid;position:absolute;transition:width .2s ease,left .3s cubic-bezier(.28,.84,.42,1)}.vm-alert{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-radius:8px;box-shadow:var(--box-shadow);color:var(--color-text);display:grid;font-size:14px;font-weight:400;gap:8px;grid-template-columns:20px 1fr;line-height:20px;padding:16px;position:relative}.vm-alert_mobile{align-items:flex-start;border-radius:0}.vm-alert:after{border-radius:8px;content:"";height:100%;left:0;opacity:.1;position:absolute;top:0;width:100%;z-index:1}.vm-alert_mobile:after{border-radius:0}.vm-alert__content,.vm-alert__icon{position:relative;z-index:2}.vm-alert__icon{align-items:center;display:flex;justify-content:center}.vm-alert__content{-webkit-filter:brightness(.6);filter:brightness(.6);white-space:pre-line}.vm-alert_success{color:var(--color-success)}.vm-alert_success:after{background-color:var(--color-success)}.vm-alert_error{color:var(--color-error)}.vm-alert_error:after{background-color:var(--color-error)}.vm-alert_info{color:var(--color-info)}.vm-alert_info:after{background-color:var(--color-info)}.vm-alert_warning{color:var(--color-warning)}.vm-alert_warning:after{background-color:var(--color-warning)}.vm-alert_dark:after{opacity:.1}.vm-alert_dark .vm-alert__content{-webkit-filter:none;filter:none}.vm-header{align-items:center;display:flex;flex-wrap:wrap;gap:0 48px;justify-content:flex-start;min-height:51px;padding:8px 24px;z-index:99}.vm-header_app{padding:8px 0}@media(max-width:1000px){.vm-header{gap:8px;padding:8px;position:-webkit-sticky;position:sticky;top:0}}.vm-header_mobile{display:grid;grid-template-columns:33px 1fr 33px;justify-content:space-between}.vm-header_dark .vm-header-button,.vm-header_dark button,.vm-header_dark button:before{background-color:var(--color-background-block)}.vm-header-logo{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;margin-bottom:2px;max-width:65px;min-width:65px;overflow:hidden;position:relative;width:100%}@media(max-width:1200px){.vm-header-logo{max-width:14px;min-width:14px}}.vm-header-logo svg,.vm-header-logo_mobile{max-width:65px;min-width:65px}.vm-header-logo_mobile{margin:0 auto}.vm-header-nav{align-items:center;display:flex;font-size:10px;font-weight:700;gap:16px;justify-content:flex-start}.vm-header-nav_column{align-items:stretch;flex-direction:column;gap:8px}.vm-header-nav_column .vm-header-nav-item{padding:16px 0}.vm-header-nav_column .vm-header-nav-item_sub{justify-content:stretch}.vm-header-nav-item{cursor:pointer;opacity:.5;padding:16px 8px;position:relative;text-transform:uppercase;transition:opacity .2s ease-in}.vm-header-nav-item_sub{grid-gap:4px;align-items:center;cursor:default;display:grid;gap:4px;grid-template-columns:auto 14px;justify-content:center}.vm-header-nav-item:hover,.vm-header-nav-item_active{opacity:1}.vm-header-nav-item svg{-webkit-transform:rotate(0deg);transform:rotate(0deg);transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in}.vm-header-nav-item_open svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-header-nav-item-submenu{border-radius:2px;color:#fff;display:grid;font-size:10px;font-weight:700;opacity:1;padding:8px;-webkit-transform-origin:top center;transform-origin:top center;white-space:nowrap}.vm-header-nav-item-submenu-item{cursor:pointer}.vm-popper{background-color:var(--color-background-block);border-radius:4px;box-shadow:var(--box-shadow-popper);opacity:0;pointer-events:none;position:fixed;transition:opacity .1s ease-in-out;z-index:-99}.vm-popper_open{-webkit-animation:vm-slider .15s cubic-bezier(.28,.84,.42,1.1);animation:vm-slider .15s cubic-bezier(.28,.84,.42,1.1);opacity:1;pointer-events:auto;-webkit-transform-origin:top center;transform-origin:top center;z-index:101}.vm-popper_mobile{-webkit-animation:none;animation:none;border-radius:0;bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0;width:100%}.vm-popper-header{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-bottom:var(--border-divider);border-radius:4px 4px 0 0;color:var(--color-text);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between;margin-bottom:16px;min-height:51px;padding:8px 8px 8px 16px}.vm-popper-header__title{font-weight:700;-webkit-user-select:none;user-select:none}@-webkit-keyframes vm-slider{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes vm-slider{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}.vm-modal{align-items:center;background:hsla(0,6%,6%,.55);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:100}.vm-modal_mobile{align-items:flex-start;max-height:calc(var(--vh)*100);min-height:calc(var(--vh)*100);overflow:auto}.vm-modal_mobile .vm-modal-content{border-radius:0;grid-template-rows:70px -webkit-max-content;grid-template-rows:70px max-content;max-height:-webkit-max-content;max-height:max-content;min-height:100%;overflow:visible;width:100vw}.vm-modal_mobile .vm-modal-content-header{margin-bottom:16px;padding:8px 8px 8px 16px}.vm-modal_mobile .vm-modal-content-body{align-items:flex-start;display:grid;min-height:100%;padding:0 16px 22px}.vm-modal-content{align-items:flex-start;background:var(--color-background-block);border-radius:4px;box-shadow:0 0 24px hsla(0,6%,6%,.07);display:grid;grid-template-rows:auto 1fr;max-height:calc(var(--vh)*90);overflow:auto}.vm-modal-content-header{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-bottom:var(--border-divider);border-radius:4px 4px 0 0;color:var(--color-text);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between;margin-bottom:22px;min-height:51px;padding:16px 22px;position:-webkit-sticky;position:sticky;top:0;z-index:3}.vm-modal-content-header__title{font-weight:700;-webkit-user-select:none;user-select:none}.vm-modal-content-header__close{align-items:center;box-sizing:initial;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:10px;width:24px}.vm-modal-content-body{padding:0 22px 22px}.vm-shortcuts{min-width:400px}@media(max-width:500px){.vm-shortcuts{min-width:100%}}.vm-shortcuts-section{margin-bottom:24px}.vm-shortcuts-section__title{border-bottom:var(--border-divider);font-weight:700;margin-bottom:16px;padding:8px 0}.vm-shortcuts-section-list{grid-gap:16px;display:grid;gap:16px}@media(max-width:500px){.vm-shortcuts-section-list{gap:24px}}.vm-shortcuts-section-list-item{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:210px 1fr}@media(max-width:500px){.vm-shortcuts-section-list-item{grid-template-columns:1fr}}.vm-shortcuts-section-list-item__key{align-items:center;display:flex;gap:4px}.vm-shortcuts-section-list-item__key code{background-color:var(--color-background-body);background-repeat:repeat-x;border:var(--border-divider);border-radius:4px;color:var(--color-text);display:inline-block;font-size:10px;line-height:2;padding:2px 8px 0;text-align:center}.vm-shortcuts-section-list-item__description{font-size:12px}.vm-tooltip{-webkit-animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);background-color:var(--color-background-tooltip);border-radius:4px;box-shadow:var(--box-shadow-popper);color:#fff;font-size:10px;line-height:150%;opacity:1;padding:3px 8px;pointer-events:auto;position:fixed;transition:opacity .1s ease-in-out;white-space:nowrap;z-index:101}@-webkit-keyframes vm-scale{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes vm-scale{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}.vm-menu-burger{background:none;border:none;cursor:pointer;height:18px;outline:none;padding:0;position:relative;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;width:18px}.vm-menu-burger:after{background-color:hsla(0,6%,6%,.1);border-radius:50%;content:"";height:calc(100% + 12px);left:-6px;position:absolute;top:-6px;-webkit-transform:scale(0) translateZ(-2px);transform:scale(0) translateZ(-2px);transition:-webkit-transform .14s ease-in-out;transition:transform .14s ease-in-out;transition:transform .14s ease-in-out,-webkit-transform .14s ease-in-out;width:calc(100% + 12px)}.vm-menu-burger:hover:after{-webkit-transform:scale(1) translateZ(-2px);transform:scale(1) translateZ(-2px)}.vm-menu-burger span{border-top:2px solid #fff;display:block;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);transition:border-color .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,border-color .3s ease;transition:transform .3s ease,border-color .3s ease,-webkit-transform .3s ease}.vm-menu-burger span,.vm-menu-burger span:after,.vm-menu-burger span:before{border-radius:6px;height:2px;left:0;position:absolute;width:100%}.vm-menu-burger span:after,.vm-menu-burger span:before{-webkit-animation-duration:.6s;animation-duration:.6s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.645,.045,.355,1);animation-timing-function:cubic-bezier(.645,.045,.355,1);background:#fff;content:"";top:0}.vm-menu-burger span:before{-webkit-animation-name:topLineBurger;animation-name:topLineBurger}.vm-menu-burger span:after{-webkit-animation-name:bottomLineBurger;animation-name:bottomLineBurger}.vm-menu-burger_opened span{border-color:transparent}.vm-menu-burger_opened span:before{-webkit-animation-name:topLineCross;animation-name:topLineCross}.vm-menu-burger_opened span:after{-webkit-animation-name:bottomLineCross;animation-name:bottomLineCross}@-webkit-keyframes topLineCross{0%{-webkit-transform:translateY(-7px);transform:translateY(-7px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(45deg);transform:translateY(-2px) translateX(30%) rotate(45deg);width:60%}}@keyframes topLineCross{0%{-webkit-transform:translateY(-7px);transform:translateY(-7px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(45deg);transform:translateY(-2px) translateX(30%) rotate(45deg);width:60%}}@-webkit-keyframes bottomLineCross{0%{-webkit-transform:translateY(3px);transform:translateY(3px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(-45deg);transform:translateY(-2px) translateX(30%) rotate(-45deg);width:60%}}@keyframes bottomLineCross{0%{-webkit-transform:translateY(3px);transform:translateY(3px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(-45deg);transform:translateY(-2px) translateX(30%) rotate(-45deg);width:60%}}@-webkit-keyframes topLineBurger{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(-7px) rotate(0deg);transform:translateY(-7px) rotate(0deg)}}@keyframes topLineBurger{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(-7px) rotate(0deg);transform:translateY(-7px) rotate(0deg)}}@-webkit-keyframes bottomLineBurger{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(3px) rotate(0deg);transform:translateY(3px) rotate(0deg)}}@keyframes bottomLineBurger{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(3px) rotate(0deg);transform:translateY(3px) rotate(0deg)}}.vm-header-sidebar{background-color:inherit;color:inherit;height:24px;width:24px}.vm-header-sidebar-button{align-items:center;display:flex;height:51px;justify-content:center;left:0;position:absolute;top:0;transition:left .35s cubic-bezier(.28,.84,.42,1);width:51px}.vm-header-sidebar-button_open{left:149px;position:fixed;z-index:102}.vm-header-sidebar-menu{grid-gap:16px;background-color:inherit;box-shadow:var(--box-shadow-popper);display:grid;gap:16px;grid-template-rows:1fr auto;height:100%;left:0;padding:16px;position:fixed;top:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:left;transform-origin:left;transition:-webkit-transform .3s cubic-bezier(.28,.84,.42,1);transition:transform .3s cubic-bezier(.28,.84,.42,1);transition:transform .3s cubic-bezier(.28,.84,.42,1),-webkit-transform .3s cubic-bezier(.28,.84,.42,1);width:200px;z-index:101}.vm-header-sidebar-menu_open{-webkit-transform:translateX(0);transform:translateX(0)}.vm-header-sidebar-menu__logo{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;position:relative;width:65px}.vm-header-sidebar-menu-settings{grid-gap:8px;align-items:center;display:grid;gap:8px}.vm-tenant-input{position:relative}.vm-tenant-input-list{border-radius:8px;max-height:300px;overflow:auto;overscroll-behavior:none}.vm-tenant-input-list_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-tenant-input-list_mobile .vm-tenant-input-list__search{padding:0 16px 8px}.vm-tenant-input-list__search{background-color:var(--color-background-block);padding:8px 16px;position:-webkit-sticky;position:sticky;top:0}.vm-text-field{display:grid;margin:6px 0;position:relative;width:100%}.vm-text-field_textarea:after{content:attr(data-replicated-value) " ";visibility:hidden;white-space:pre-wrap}.vm-text-field:after,.vm-text-field__input{background-color:transparent;border:var(--border-divider);font-size:12px;grid-area:1/1/2/2;line-height:18px;overflow:hidden;padding:8px 16px;width:100%}.vm-text-field__error,.vm-text-field__helper-text,.vm-text-field__label{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;background-color:var(--color-background-block);display:-webkit-box;font-size:10px;left:8px;line-height:12px;max-width:calc(100% - 16px);overflow:hidden;padding:0 3px;pointer-events:none;position:absolute;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;z-index:2}@media(max-width:500px){.vm-text-field__error,.vm-text-field__helper-text,.vm-text-field__label{-webkit-line-clamp:1;line-clamp:1}}.vm-text-field__label{color:var(--color-text-secondary);top:-7px}.vm-text-field__error{color:var(--color-error);top:calc(100% - 7px)}.vm-text-field__helper-text{bottom:-5px;color:var(--color-text-secondary)}.vm-text-field__input{background-color:transparent;border-radius:4px;color:var(--color-text);display:block;min-height:34px;overflow:hidden;resize:none;transition:border .2s ease}.vm-text-field__input:focus,.vm-text-field__input:hover{border:1px solid var(--color-primary)}.vm-text-field__input_error,.vm-text-field__input_error:focus,.vm-text-field__input_error:hover{border:1px solid var(--color-error)}.vm-text-field__input_icon-start{padding-left:31px}.vm-text-field__input:disabled{background-color:inherit;color:inherit}.vm-text-field__input:disabled:hover{border-color:var(--color-text-disabled)}.vm-text-field__icon-end,.vm-text-field__icon-start{align-items:center;color:var(--color-text-secondary);display:flex;height:100%;justify-content:center;left:8px;max-width:15px;position:absolute;top:auto}.vm-text-field__icon-end{left:auto;right:8px}.vm-step-control{display:inline-flex}.vm-step-control button{text-transform:none}.vm-step-control__value{display:inline;margin-left:3px}.vm-step-control-popper{grid-gap:8px;display:grid;font-size:12px;gap:8px;max-height:208px;max-width:300px;overflow:auto;padding:16px}.vm-step-control-popper_mobile{max-height:calc(var(--vh)*100 - 70px);max-width:100%;padding:0 16px 8px}.vm-step-control-popper_mobile .vm-step-control-popper-info{font-size:12px}.vm-step-control-popper-info{font-size:10px;line-height:1.6}.vm-step-control-popper-info a{margin:0 .2em}.vm-step-control-popper-info code{background-color:var(--color-hover-black);border-radius:6px;font-size:85%;margin:0 .2em;padding:.2em .4em}.vm-time-duration{font-size:12px;max-height:227px;overflow:auto}.vm-time-duration_mobile{max-height:100%}.vm-time-selector{display:grid;grid-template-columns:repeat(2,230px);padding:16px 0}.vm-time-selector_mobile{grid-template-columns:1fr;max-height:calc(var(--vh)*100 - 70px);min-width:250px;overflow:auto;width:100%}.vm-time-selector_mobile .vm-time-selector-left{border-bottom:var(--border-divider);border-right:none;padding-bottom:16px}.vm-time-selector-left{border-right:var(--border-divider);display:flex;flex-direction:column;gap:8px;padding:0 16px}.vm-time-selector-left-inputs{align-items:flex-start;display:grid;flex-grow:1;justify-content:stretch}.vm-time-selector-left-timezone{align-items:center;display:flex;font-size:10px;gap:8px;justify-content:space-between;margin-bottom:8px}.vm-time-selector-left-timezone__utc{align-items:center;background-color:var(--color-hover-black);border-radius:4px;display:inline-flex;justify-content:center;padding:4px}.vm-time-selector-left__controls{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(2,1fr)}.vm-calendar{background-color:var(--color-background-block);border-radius:8px;display:grid;font-size:12px;grid-template-rows:auto 1fr auto;padding:16px;-webkit-user-select:none;user-select:none}.vm-calendar_mobile{padding:0 16px}.vm-calendar-header{grid-gap:24px;align-items:center;display:grid;gap:24px;grid-template-columns:1fr auto;justify-content:center;min-height:36px;padding-bottom:16px}.vm-calendar-header-left{grid-gap:8px;align-items:center;cursor:pointer;display:grid;gap:8px;grid-template-columns:auto auto;justify-content:flex-start;transition:opacity .2s ease-in-out}.vm-calendar-header-left:hover{opacity:.8}.vm-calendar-header-left__date{color:var(--color-text);font-size:12px;font-weight:700}.vm-calendar-header-left__select-year{align-items:center;display:grid;height:14px;justify-content:center;width:14px}.vm-calendar-header-right{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:18px 18px;justify-content:center}.vm-calendar-header-right__next,.vm-calendar-header-right__prev{cursor:pointer;margin:-8px;padding:8px;transition:opacity .2s ease-in-out}.vm-calendar-header-right__next:hover,.vm-calendar-header-right__prev:hover{opacity:.8}.vm-calendar-header-right__prev{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.vm-calendar-header-right__next{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.vm-calendar-body{grid-gap:2px;align-items:center;display:grid;gap:2px;grid-template-columns:repeat(7,32px);grid-template-rows:repeat(7,32px);justify-content:center}@media(max-width:500px){.vm-calendar-body{grid-template-columns:repeat(7,calc(14.28571vw - 6.28571px));grid-template-rows:repeat(7,calc(14.28571vw - 6.28571px))}}.vm-calendar-body-cell{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;text-align:center}.vm-calendar-body-cell_weekday{color:var(--color-text-secondary)}.vm-calendar-body-cell_day{cursor:pointer;transition:color .2s ease,background-color .3s ease-in-out}.vm-calendar-body-cell_day:hover{background-color:var(--color-hover-black)}.vm-calendar-body-cell_day_empty{pointer-events:none}.vm-calendar-body-cell_day_active{color:#fff}.vm-calendar-body-cell_day_active,.vm-calendar-body-cell_day_active:hover{background-color:var(--color-primary)}.vm-calendar-body-cell_day_today{border:1px solid var(--color-primary)}.vm-calendar-years{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(3,1fr);max-height:400px;overflow:auto}.vm-calendar-years__year{align-items:center;border-radius:8px;cursor:pointer;display:flex;justify-content:center;padding:8px 16px;transition:color .2s ease,background-color .3s ease-in-out}.vm-calendar-years__year:hover{background-color:var(--color-hover-black)}.vm-calendar-years__year_selected{color:#fff}.vm-calendar-years__year_selected,.vm-calendar-years__year_selected:hover{background-color:var(--color-primary)}.vm-calendar-years__year_today{border:1px solid var(--color-primary)}.vm-date-time-input{grid-gap:8px 0;align-items:center;cursor:pointer;display:grid;gap:8px 0;grid-template-columns:1fr;justify-content:center;margin-bottom:16px;position:relative;transition:color .2s ease-in-out,border-bottom-color .3s ease}.vm-date-time-input:hover input{border-bottom-color:var(--color-primary)}.vm-date-time-input label{color:var(--color-text-secondary);font-size:10px;grid-column:1/3;-webkit-user-select:none;user-select:none;width:100%}.vm-date-time-input__icon{bottom:2px;position:absolute;right:0}.vm-date-time-input input{background:transparent;border:none;border-bottom:var(--border-divider);color:var(--color-text);padding:0 0 8px}.vm-date-time-input input:focus{border-bottom-color:var(--color-primary)}.vm-date-time-input_error input{border-color:var(--color-error)}.vm-date-time-input_error input:focus{border-bottom-color:var(--color-error)}.vm-date-time-input__error-text{bottom:-10px;color:var(--color-error);font-size:10px;left:0;position:absolute}.vm-button{align-items:center;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:10px;font-weight:400;justify-content:center;line-height:15px;min-height:31px;padding:6px 14px;position:relative;text-transform:uppercase;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-user-select:none;user-select:none;white-space:nowrap}.vm-button:hover:after{background-color:var(--color-hover-black)}.vm-button:after,.vm-button:before{border-radius:6px;content:"";height:100%;left:0;position:absolute;top:0;transition:background-color .2s ease;width:100%}.vm-button:before{-webkit-transform:translateZ(-2px);transform:translateZ(-2px)}.vm-button:after{background-color:transparent;-webkit-transform:translateZ(-1px);transform:translateZ(-1px)}.vm-button span{align-items:center;display:grid;justify-content:center}.vm-button span svg{width:15px}.vm-button__start-icon{margin-right:6px}.vm-button__end-icon{margin-left:6px}.vm-button_disabled{cursor:not-allowed;opacity:.3}.vm-button_icon{padding:6px 8px}.vm-button_icon .vm-button__end-icon,.vm-button_icon .vm-button__start-icon{margin:0}.vm-button_small{min-height:25px;padding:4px 6px}.vm-button_small span svg{width:13px}.vm-button_contained_primary{color:var(--color-primary-text)}.vm-button_contained_primary,.vm-button_contained_primary:before{background-color:var(--color-primary)}.vm-button_contained_primary:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_secondary{color:var(--color-secondary-text)}.vm-button_contained_secondary:before{background-color:var(--color-secondary)}.vm-button_contained_secondary:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_success{color:var(--color-success-text)}.vm-button_contained_success:before{background-color:var(--color-success)}.vm-button_contained_success:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_error{color:var(--color-error-text)}.vm-button_contained_error:before{background-color:var(--color-error)}.vm-button_contained_gray{color:var(--color-text-secondary)}.vm-button_contained_gray:before{background-color:var(--color-text-secondary)}.vm-button_contained_warning{color:var(--color-warning)}.vm-button_contained_warning:before{background-color:var(--color-warning);opacity:.2}.vm-button_text_primary{color:var(--color-primary)}.vm-button_text_secondary{color:var(--color-secondary)}.vm-button_text_success{color:var(--color-success)}.vm-button_text_error{color:var(--color-error)}.vm-button_text_gray{color:var(--color-text-secondary)}.vm-button_text_warning{color:var(--color-warning)}.vm-button_outlined_primary{border:1px solid var(--color-primary);color:var(--color-primary)}.vm-button_outlined_error{border:1px solid var(--color-error);color:var(--color-error)}.vm-button_outlined_secondary{border:1px solid var(--color-secondary);color:var(--color-secondary)}.vm-button_outlined_success{border:1px solid var(--color-success);color:var(--color-success)}.vm-button_outlined_gray{border:1px solid var(--color-text-secondary);color:var(--color-text-secondary)}.vm-button_outlined_warning{border:1px solid var(--color-warning);color:var(--color-warning)}.vm-execution-controls-buttons{border-radius:7px;display:flex;justify-content:space-between;min-width:107px}.vm-execution-controls-buttons_mobile{flex-direction:column;gap:24px}.vm-execution-controls-buttons__arrow{align-items:center;display:flex;justify-content:center;-webkit-transform:rotate(0);transform:rotate(0);transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out}.vm-execution-controls-buttons__arrow_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-execution-controls-list{font-size:12px;max-height:208px;overflow:auto;padding:8px 0;width:124px}.vm-execution-controls-list_mobile{max-height:calc(var(--vh)*100 - 70px);padding:0;width:100%}.vm-server-configurator{align-items:center;display:flex;flex-direction:column;gap:24px;padding-bottom:24px;width:600px}.vm-server-configurator_mobile{align-items:flex-start;grid-auto-rows:-webkit-min-content;grid-auto-rows:min-content;height:100%;width:100%}@media(max-width:768px){.vm-server-configurator{width:100%}}.vm-server-configurator__input{width:100%}.vm-server-configurator__title{align-items:center;display:flex;font-size:12px;font-weight:700;grid-column:auto/span 2;justify-content:flex-start;margin-bottom:16px}.vm-limits-configurator-title__reset{align-items:center;display:flex;flex-grow:1;justify-content:flex-end}.vm-limits-configurator__inputs{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}.vm-limits-configurator__inputs_mobile{gap:8px}.vm-limits-configurator__inputs div{flex-grow:1}.vm-accordion-header{align-items:center;cursor:pointer;display:grid;font-size:inherit;position:relative}.vm-accordion-header__arrow{align-items:center;display:flex;justify-content:center;position:absolute;right:14px;top:auto;-webkit-transform:rotate(0);transform:rotate(0);transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out}.vm-accordion-header__arrow_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-accordion-header__arrow svg{height:auto;width:14px}.accordion-section{overflow:hidden}.vm-timezones-item{align-items:center;cursor:pointer;display:flex;gap:8px;justify-content:space-between}.vm-timezones-item_selected{border:var(--border-divider);border-radius:4px;padding:8px 16px}.vm-timezones-item__title{text-transform:capitalize}.vm-timezones-item__utc{align-items:center;background-color:var(--color-hover-black);border-radius:4px;display:inline-flex;justify-content:center;padding:4px}.vm-timezones-item__icon{align-items:center;display:inline-flex;justify-content:flex-end;margin:0 0 0 auto;transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in}.vm-timezones-item__icon svg{width:14px}.vm-timezones-item__icon_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-timezones-list{background-color:var(--color-background-block);border-radius:8px;max-height:200px;overflow:auto}.vm-timezones-list_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-timezones-list_mobile .vm-timezones-list-header__search{padding:0 16px}.vm-timezones-list-header{background-color:var(--color-background-block);border-bottom:var(--border-divider);position:-webkit-sticky;position:sticky;top:0;z-index:2}.vm-timezones-list-header__search{padding:8px}.vm-timezones-list-group{border-bottom:var(--border-divider);padding:8px 0}.vm-timezones-list-group:last-child{border-bottom:none}.vm-timezones-list-group__title{color:var(--color-text-secondary);font-weight:700;padding:8px 16px}.vm-timezones-list-group-options{align-items:flex-start;display:grid}.vm-timezones-list-group-options__item{padding:8px 16px;transition:background-color .2s ease}.vm-timezones-list-group-options__item:hover{background-color:hsla(0,6%,6%,.1)}.vm-theme-control__toggle{display:inline-flex;min-width:300px;text-transform:capitalize}.vm-theme-control_mobile .vm-theme-control__toggle{display:flex;min-width:100%}.vm-toggles{grid-gap:3px;display:grid;gap:3px;position:relative;width:100%}.vm-toggles__label{color:var(--color-text-secondary);font-size:10px;line-height:1;padding:0 16px}.vm-toggles-group{overflow:hidden;width:100%}.vm-toggles-group,.vm-toggles-group-item{align-items:center;display:grid;justify-content:center;position:relative}.vm-toggles-group-item{border-bottom:var(--border-divider);border-right:var(--border-divider);border-top:var(--border-divider);color:var(--color-text-secondary);cursor:pointer;font-size:10px;font-weight:700;padding:8px;text-align:center;transition:color .15s ease-in;-webkit-user-select:none;user-select:none;z-index:2}.vm-toggles-group-item_first{border-left:var(--border-divider);border-radius:16px 0 0 16px}.vm-toggles-group-item:last-child{border-left:none;border-radius:0 16px 16px 0}.vm-toggles-group-item_icon{gap:4px;grid-template-columns:14px auto}.vm-toggles-group-item:hover{color:var(--color-primary)}.vm-toggles-group-item_active{border-color:transparent;color:var(--color-primary)}.vm-toggles-group-item_active:hover{background-color:transparent}.vm-toggles-group__highlight{background-color:rgba(var(--color-primary),.08);border:1px solid var(--color-primary);height:100%;position:absolute;top:0;transition:left .2s cubic-bezier(.28,.84,.42,1),border-radius .2s linear;z-index:1}.vm-header-controls{align-items:center;display:flex;flex-grow:1;gap:8px;justify-content:flex-end}.vm-header-controls_mobile{display:grid;grid-template-columns:1fr;padding:0}.vm-header-controls_mobile .vm-header-button{border:none}.vm-header-controls-modal{-webkit-transform:scale(0);transform:scale(0)}.vm-header-controls-modal_open{-webkit-transform:scale(1);transform:scale(1)}.vm-container{display:flex;flex-direction:column;min-height:calc(var(--vh)*100 - var(--scrollbar-height))}.vm-container-body{background-color:var(--color-background-body);flex-grow:1;min-height:100%;padding:24px}.vm-container-body_mobile{padding:8px 0 0}@media(max-width:768px){.vm-container-body{padding:8px 0 0}}.vm-container-body_app{background-color:transparent;padding:8px 0}.vm-footer{align-items:center;background:var(--color-background-body);border-top:var(--border-divider);color:var(--color-text-secondary);display:flex;flex-wrap:wrap;gap:24px;justify-content:center;padding:24px}@media(max-width:768px){.vm-footer{gap:16px;padding:16px}}.vm-footer__link,.vm-footer__website{grid-gap:6px;align-items:center;display:grid;gap:6px;grid-template-columns:12px auto;justify-content:center}.vm-footer__website{margin-right:16px}@media(max-width:768px){.vm-footer__website{margin-right:0}}.vm-footer__link{grid-template-columns:14px auto}.vm-footer__copyright{flex-grow:1;text-align:right}@media(max-width:768px){.vm-footer__copyright{font-size:10px;text-align:center;width:100%}}.uplot,.uplot *,.uplot :after,.uplot :before{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;width:-webkit-min-content;width:min-content}.u-title{font-size:18px;font-weight:700;text-align:center}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;height:100%;position:relative;width:100%}.u-axis{position:absolute}.u-legend{margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{display:inline-block;vertical-align:middle}.u-legend .u-marker{background-clip:padding-box!important;height:1em;margin-right:4px;width:1em}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:rgba(0,0,0,.07)}.u-cursor-x,.u-cursor-y,.u-select{pointer-events:none;position:absolute}.u-cursor-x,.u-cursor-y{left:0;top:0;will-change:transform;z-index:100}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{background-clip:padding-box!important;border:0 solid;border-radius:50%;left:0;pointer-events:none;position:absolute;top:0;will-change:transform;z-index:100}.u-axis.u-off,.u-cursor-pt.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-select.u-off{display:none}.vm-line-chart{pointer-events:auto}.vm-line-chart_panning{pointer-events:none}.vm-line-chart__u-plot{position:relative}.vm-chart-tooltip{grid-gap:16px;word-wrap:break-word;background:var(--color-background-tooltip);border-radius:8px;color:#fff;display:grid;font-family:monospace;font-size:10px;font-weight:400;gap:16px;line-height:150%;padding:8px;pointer-events:none;position:absolute;-webkit-user-select:text;user-select:text;width:325px;z-index:98}.vm-chart-tooltip_sticky{pointer-events:auto;z-index:99}.vm-chart-tooltip_moved{margin-left:-271.5px;margin-top:-20.5px;position:fixed}.vm-chart-tooltip-header{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:1fr 25px 25px;justify-content:center;min-height:25px}.vm-chart-tooltip-header__close{color:#fff}.vm-chart-tooltip-header__drag{color:#fff;cursor:move}.vm-chart-tooltip-data{grid-gap:8px;align-items:flex-start;display:grid;gap:8px;grid-template-columns:auto 1fr;line-height:12px;word-break:break-all}.vm-chart-tooltip-data__marker{height:12px;width:12px}.vm-chart-tooltip-info{grid-gap:4px;display:grid;word-break:break-all}.vm-legend-item{grid-gap:8px;align-items:start;background-color:var(--color-background-block);cursor:pointer;display:grid;grid-template-columns:auto auto;justify-content:start;margin-bottom:8px;padding:8px;transition:.2s ease}.vm-legend-item:hover{background-color:rgba(0,0,0,.1)}.vm-legend-item_hide{opacity:.5;text-decoration:line-through}.vm-legend-item__marker{border-radius:2px;box-sizing:border-box;height:14px;transition:.2s ease;width:14px}.vm-legend-item-info{font-weight:400;word-break:break-all}.vm-legend-item-info__label{margin-right:2px}.vm-legend-item-info__free-fields{cursor:pointer;padding:2px}.vm-legend-item-info__free-fields:hover{text-decoration:underline}.vm-legend-item-values{align-items:center;display:flex;gap:8px;grid-column:2}.vm-legend{cursor:default;display:flex;flex-wrap:wrap;margin-top:24px;position:relative}.vm-legend-group{margin:0 16px 16px 0;min-width:23%;width:100%}.vm-legend-group-title{align-items:center;border-bottom:var(--border-divider);display:flex;margin-bottom:1px;padding:8px}.vm-legend-group-title__count{font-weight:700;margin-right:8px}.vm-graph-view{width:100%}.vm-graph-view_full-width{width:calc(100vw - 96px - var(--scrollbar-width))}@media(max-width:768px){.vm-graph-view_full-width{width:calc(100vw - 48px - var(--scrollbar-width))}}.vm-graph-view_full-width_mobile{width:calc(100vw - 32px - var(--scrollbar-width))}.vm-autocomplete{max-height:300px;overflow:auto;overscroll-behavior:none}.vm-autocomplete_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-autocomplete__no-options{color:var(--color-text-disabled);padding:16px;text-align:center}.vm-query-editor-autocomplete{max-height:300px;overflow:auto}.vm-additional-settings{align-items:center;display:inline-flex;flex-wrap:wrap;gap:16px;justify-content:flex-start}.vm-additional-settings__input{flex-basis:160px;margin-bottom:-6px}.vm-additional-settings_mobile{grid-gap:24px;align-items:flex-start;display:grid;gap:24px;grid-template-columns:1fr;padding:0 16px;width:100%}.vm-switch{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;-webkit-user-select:none;user-select:none}.vm-switch_full-width{flex-direction:row-reverse;justify-content:space-between}.vm-switch_full-width .vm-switch__label{margin-left:0}.vm-switch_disabled{cursor:default;opacity:.6}.vm-switch_secondary_active .vm-switch-track{background-color:var(--color-secondary)}.vm-switch_primary_active .vm-switch-track{background-color:var(--color-primary)}.vm-switch_active .vm-switch-track__thumb{left:20px}.vm-switch:hover .vm-switch-track{opacity:.8}.vm-switch-track{align-items:center;background-color:hsla(0,6%,6%,.4);border-radius:17px;display:flex;height:17px;justify-content:flex-start;padding:3px;position:relative;transition:background-color .2s ease,opacity .3s ease-out;width:34px}.vm-switch-track__thumb{background-color:var(--color-background-block);border-radius:50%;left:3px;min-height:11px;min-width:11px;position:absolute;top:auto;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;transition:right .2s ease-out,left .2s ease-out}.vm-switch__label{color:inherit;font-size:inherit;margin-left:8px;transition:color .2s ease;white-space:nowrap}.vm-query-configurator{grid-gap:16px;display:grid;gap:16px}.vm-query-configurator-list{display:grid}.vm-query-configurator-list-row{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto auto}.vm-query-configurator-list-row_mobile{gap:4px}.vm-query-configurator-list-row_disabled{-webkit-filter:grayscale(100%);filter:grayscale(100%);opacity:.5}.vm-query-configurator-list-row__button{display:grid;min-height:36px;width:36px}.vm-query-configurator-settings{align-items:center;display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between}.vm-query-configurator-settings__buttons{grid-gap:8px;display:grid;flex-grow:1;gap:8px;grid-template-columns:repeat(2,auto);justify-content:flex-end}.vm-json-view__copy{display:flex;justify-content:flex-end;position:-webkit-sticky;position:sticky;top:0;z-index:2}.vm-json-view__code{font-size:12px;line-height:1.4;-webkit-transform:translateY(-32px);transform:translateY(-32px);white-space:pre-wrap}.vm-axes-limits{grid-gap:16px;align-items:center;display:grid;gap:16px;max-width:300px}.vm-axes-limits_mobile{gap:24px;max-width:100%;width:100%}.vm-axes-limits_mobile .vm-axes-limits-list__inputs{grid-template-columns:repeat(2,1fr)}.vm-axes-limits-list{grid-gap:16px;align-items:center;display:grid;gap:16px}.vm-axes-limits-list__inputs{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(2,120px)}.vm-graph-settings-popper{grid-gap:16px;display:grid;gap:16px;padding:0 0 16px}.vm-graph-settings-popper__body{grid-gap:8px;display:grid;gap:8px;padding:0 16px}.vm-spinner{align-items:center;-webkit-animation:vm-fade 2s cubic-bezier(.28,.84,.42,1.1);animation:vm-fade 2s cubic-bezier(.28,.84,.42,1.1);background-color:hsla(0,0%,100%,.5);bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:99}.vm-spinner_dark{background-color:hsla(0,6%,6%,.2)}.vm-spinner__message{color:rgba(var(--color-text),.9);font-size:14px;line-height:1.3;margin-top:24px;text-align:center;white-space:pre-line}.half-circle-spinner,.half-circle-spinner *{box-sizing:border-box}.half-circle-spinner{border-radius:100%;height:60px;position:relative;width:60px}.half-circle-spinner .circle{border:6px solid transparent;border-radius:100%;content:"";height:100%;position:absolute;width:100%}.half-circle-spinner .circle.circle-1{-webkit-animation:half-circle-spinner-animation 1s infinite;animation:half-circle-spinner-animation 1s infinite;border-top-color:var(--color-primary)}.half-circle-spinner .circle.circle-2{-webkit-animation:half-circle-spinner-animation 1s infinite alternate;animation:half-circle-spinner-animation 1s infinite alternate;border-bottom-color:var(--color-primary)}@-webkit-keyframes half-circle-spinner-animation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes half-circle-spinner-animation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes vm-fade{0%{opacity:0}to{opacity:1}}@keyframes vm-fade{0%{opacity:0}to{opacity:1}}.vm-tracings-view{grid-gap:24px;display:grid;gap:24px}.vm-tracings-view-trace-header{align-items:center;border-bottom:var(--border-divider);display:flex;justify-content:space-between;padding:8px 8px 8px 24px}.vm-tracings-view-trace-header-title{flex-grow:1;font-size:14px;margin-right:8px}.vm-tracings-view-trace-header-title__query{font-weight:700}.vm-tracings-view-trace__nav{padding:24px 24px 24px 0}.vm-tracings-view-trace__nav_mobile{padding:8px 8px 8px 0}.vm-line-progress{grid-gap:8px;align-items:center;color:var(--color-text-secondary);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:center}.vm-line-progress-track{background-color:var(--color-hover-black);border-radius:4px;height:20px;width:100%}.vm-line-progress-track__thumb{background-color:#1a90ff;border-radius:4px;height:100%}.vm-nested-nav{background-color:rgba(201,227,246,.4);border-radius:4px;margin-left:24px}.vm-nested-nav_mobile{margin-left:8px}.vm-nested-nav_dark{background-color:hsla(0,6%,6%,.1)}.vm-nested-nav-header{grid-gap:8px;border-radius:4px;cursor:pointer;display:grid;gap:8px;grid-template-columns:auto 1fr;padding:8px;transition:background-color .2s ease-in-out}.vm-nested-nav-header:hover{background-color:var(--color-hover-black)}.vm-nested-nav-header__icon{align-items:center;display:flex;justify-content:center;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;width:20px}.vm-nested-nav-header__icon_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-nested-nav-header__progress{grid-column:2}.vm-nested-nav-header__message{-webkit-line-clamp:3;-webkit-box-orient:vertical;line-clamp:3;display:-moz-box;display:-webkit-box;grid-column:2;line-height:130%;overflow:hidden;position:relative;text-overflow:ellipsis}.vm-nested-nav-header__message_show-full{display:block;overflow:visible}.vm-nested-nav-header-bottom{align-items:center;display:grid;grid-column:2;grid-template-columns:1fr auto}.vm-nested-nav-header-bottom__duration{color:var(--color-text-secondary)}.vm-json-form{grid-gap:16px;display:grid;gap:16px;grid-template-rows:auto calc(var(--vh)*70 - 150px) auto;max-height:900px;max-width:1000px;overflow:hidden;width:70vw}.vm-json-form_mobile{grid-template-rows:auto calc(var(--vh)*100 - 248px) auto;min-height:100%;width:100%}.vm-json-form_one-field{grid-template-rows:calc(var(--vh)*70 - 150px) auto}.vm-json-form_one-field_mobile{grid-template-rows:calc(var(--vh)*100 - 192px) auto}.vm-json-form textarea{height:100%;max-height:900px;overflow:auto;width:100%}.vm-json-form-footer{align-items:center;display:flex;gap:8px;justify-content:space-between}@media(max-width:500px){.vm-json-form-footer{flex-direction:column}.vm-json-form-footer button{flex-grow:1}}.vm-json-form-footer__controls{align-items:center;display:flex;flex-grow:1;gap:8px;justify-content:flex-start}@media(max-width:500px){.vm-json-form-footer__controls{grid-template-columns:repeat(2,1fr);justify-content:center;width:100%}}.vm-json-form-footer__controls_right{display:grid;grid-template-columns:repeat(2,90px);justify-content:flex-end}@media(max-width:500px){.vm-json-form-footer__controls_right{grid-template-columns:repeat(2,1fr);justify-content:center;width:100%}}.vm-table-settings-popper{display:grid;min-width:250px}.vm-table-settings-popper_mobile .vm-table-settings-popper-list{gap:16px}.vm-table-settings-popper_mobile .vm-table-settings-popper-list:first-child{padding-top:0}.vm-table-settings-popper-list{grid-gap:8px;border-bottom:var(--border-divider);display:grid;gap:8px;max-height:350px;overflow:auto;padding:16px}.vm-table-settings-popper-list_first{padding-top:0}.vm-table-settings-popper-list-header{align-items:center;display:grid;grid-template-columns:1fr auto;justify-content:space-between;min-height:25px}.vm-table-settings-popper-list-header__title{font-weight:700}.vm-table-settings-popper-list__item{font-size:12px;text-transform:capitalize}.vm-checkbox{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;-webkit-user-select:none;user-select:none}.vm-checkbox_disabled{cursor:default;opacity:.6}.vm-checkbox_secondary_active .vm-checkbox-track{background-color:var(--color-secondary)}.vm-checkbox_secondary .vm-checkbox-track{border:1px solid var(--color-secondary)}.vm-checkbox_primary_active .vm-checkbox-track{background-color:var(--color-primary)}.vm-checkbox_primary .vm-checkbox-track{border:1px solid var(--color-primary)}.vm-checkbox_active .vm-checkbox-track__thumb{-webkit-transform:scale(1);transform:scale(1)}.vm-checkbox:hover .vm-checkbox-track{opacity:.8}.vm-checkbox-track{align-items:center;background-color:transparent;border-radius:4px;display:flex;height:16px;justify-content:center;padding:2px;position:relative;transition:background-color .2s ease,opacity .3s ease-out;width:16px}.vm-checkbox-track__thumb{align-items:center;color:#fff;display:grid;height:12px;justify-content:center;-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .1s ease-in-out;transition:transform .1s ease-in-out;transition:transform .1s ease-in-out,-webkit-transform .1s ease-in-out;width:12px}.vm-checkbox__label{color:inherit;font-size:inherit;margin-left:8px;transition:color .2s ease;white-space:nowrap}.vm-custom-panel{grid-gap:24px;align-items:flex-start;display:grid;gap:24px;grid-template-columns:100%;height:100%}.vm-custom-panel_mobile{gap:8px}.vm-custom-panel__warning{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between}.vm-custom-panel__warning_mobile{grid-template-columns:1fr}.vm-custom-panel-body{position:relative}.vm-custom-panel-body-header{align-items:center;border-bottom:var(--border-divider);display:flex;font-size:10px;justify-content:space-between;margin:-24px -24px 24px;padding:0 24px;position:relative;z-index:1}.vm-custom-panel-body_mobile .vm-custom-panel-body-header{margin:-16px -16px 16px;padding:0 16px}.vm-table-view{margin-top:-24px;max-width:100%;overflow:auto}.vm-table-view_mobile{margin-top:-16px}.vm-table-view table{margin-top:0}.vm-predefined-panel-header{grid-gap:8px;align-items:center;border-bottom:var(--border-divider);display:grid;gap:8px;grid-template-columns:auto 1fr auto;justify-content:flex-start;padding:8px 16px}.vm-predefined-panel-header__description{line-height:1.3;white-space:pre-wrap}.vm-predefined-panel-header__description ol,.vm-predefined-panel-header__description ul{list-style-position:inside}.vm-predefined-panel-header__description a{color:#c9e3f6;text-decoration:underline}.vm-predefined-panel-header__info{align-items:center;color:var(--color-primary);display:flex;justify-content:center;width:18px}.vm-predefined-panel-body{min-height:500px;padding:8px 16px}@media(max-width:500px){.vm-predefined-panel-body{padding:0}}.vm-predefined-dashboard{background-color:transparent}.vm-predefined-dashboard-header{align-items:center;border-radius:4px;box-shadow:var(--box-shadow);display:grid;font-weight:700;grid-template-columns:1fr auto;justify-content:space-between;line-height:14px;overflow:hidden;padding:16px;position:relative;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;transition:box-shadow .2s ease-in-out}.vm-predefined-dashboard-header_open{border-radius:4px 4px 0 0;box-shadow:none}.vm-predefined-dashboard-header__title{font-size:12px}.vm-predefined-dashboard-header__count{font-size:10px;grid-column:2;margin-right:30px}.vm-predefined-dashboard-panels{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(12,1fr);padding:0}@media(max-width:1000px){.vm-predefined-dashboard-panels{grid-template-columns:1fr}}.vm-predefined-dashboard-panels-panel{border-radius:8px;overflow:hidden;position:relative}.vm-predefined-dashboard-panels-panel:hover .vm-predefined-dashboard-panels-panel__resizer{-webkit-transform:scale(1);transform:scale(1)}.vm-predefined-dashboard-panels-panel__resizer{bottom:0;cursor:se-resize;height:20px;position:absolute;right:0;-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;width:20px;z-index:1}.vm-predefined-dashboard-panels-panel__resizer:after{border-bottom:2px solid hsla(0,6%,6%,.2);border-right:2px solid hsla(0,6%,6%,.2);bottom:5px;content:"";height:5px;position:absolute;right:5px;width:5px}.vm-predefined-dashboard-panels-panel__alert{grid-column:span 12}.vm-predefined-panels{grid-gap:16px;align-items:flex-start;display:grid;gap:16px}@media(max-width:768px){.vm-predefined-panels{padding:24px 0}}@media(max-width:500px){.vm-predefined-panels{padding:8px 0}}.vm-predefined-panels-tabs{align-items:center;display:flex;flex-wrap:wrap;font-size:10px;gap:8px;justify-content:flex-start;overflow:hidden}@media(max-width:768px){.vm-predefined-panels-tabs{padding:0 16px}}.vm-predefined-panels-tabs__tab{background:var(--color-background-block);border:1px solid hsla(0,6%,6%,.2);border-radius:8px;color:var(--color-text-secondary);cursor:pointer;padding:8px 16px;text-align:center;text-transform:uppercase;transition:background .2s ease-in-out,color .15s ease-in}@media(max-width:500px){.vm-predefined-panels-tabs__tab{flex-grow:1}}.vm-predefined-panels-tabs__tab:hover{color:var(--color-primary)}.vm-predefined-panels-tabs__tab_active{border-color:var(--color-primary);color:var(--color-primary)}.vm-predefined-panels__dashboards{grid-gap:16px;display:grid;gap:16px}.vm-cardinality-configurator{grid-gap:8px;display:grid;gap:8px}.vm-cardinality-configurator-controls{align-items:center;display:flex;flex-wrap:wrap;gap:0 24px;justify-content:flex-start}.vm-cardinality-configurator-controls__query{flex-grow:8}.vm-cardinality-configurator-controls__item{flex-grow:1}.vm-cardinality-configurator-additional{align-items:center;display:flex;margin-bottom:8px}.vm-cardinality-configurator-bottom{flex-wrap:wrap}.vm-cardinality-configurator-bottom,.vm-cardinality-configurator-bottom__docs{align-items:center;display:flex;gap:16px}.vm-cardinality-configurator-bottom_mobile .vm-cardinality-configurator-bottom__docs{justify-content:space-between}.vm-cardinality-configurator-bottom__info{flex-grow:1;font-size:12px}.vm-cardinality-configurator-bottom a{color:var(--color-text-secondary)}.vm-cardinality-configurator-bottom button{margin:0 0 0 auto}.vm-cardinality-configurator-bottom_mobile{display:grid;grid-template-columns:1fr}.vm-cardinality-configurator-bottom_mobile button{margin:0}.u-legend{color:var(--color-text);font-family:Lato,sans-serif;font-size:14px}.u-legend .u-thead{display:none}.u-legend .u-series{display:flex;gap:8px}.u-legend .u-series th{display:none}.u-legend .u-series td:nth-child(2):after{content:":";margin-left:8px}.u-legend .u-series .u-value{display:block;padding:0;text-align:left}.vm-metrics-content-header{margin:-24px -24px 0}.vm-metrics-content_mobile .vm-metrics-content-header{margin:-16px -16px 0}.vm-metrics-content__table{overflow:auto;padding-top:24px;width:calc(100vw - 96px - var(--scrollbar-width))}@media(max-width:768px){.vm-metrics-content__table{width:calc(100vw - 48px - var(--scrollbar-width))}}.vm-metrics-content__table_mobile{width:calc(100vw - 32px - var(--scrollbar-width))}.vm-metrics-content__table .vm-table-cell_header{white-space:nowrap}.vm-metrics-content_mobile .vm-metrics-content__table{width:calc(100vw - 32px - var(--scrollbar-width))}.vm-cardinality-panel{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}.vm-cardinality-panel_mobile{gap:8px}.vm-top-queries-panel-header{margin:-24px -24px 0}.vm-top-queries-panel-header_mobile{margin:-16px -16px 0}.vm-top-queries-panel__table{overflow:auto;padding-top:24px;width:calc(100vw - 96px - var(--scrollbar-width))}@media(max-width:768px){.vm-top-queries-panel__table{width:calc(100vw - 48px - var(--scrollbar-width))}}.vm-top-queries-panel__table_mobile{width:calc(100vw - 32px - var(--scrollbar-width))}.vm-top-queries-panel__table .vm-table-cell_header{white-space:nowrap}.vm-top-queries{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}.vm-top-queries_mobile{gap:8px}.vm-top-queries-controls{grid-gap:8px;display:grid;gap:8px}.vm-top-queries-controls-fields{align-items:center;display:flex;flex-wrap:wrap;gap:24px}.vm-top-queries-controls-fields__item{flex-grow:1;min-width:200px}.vm-top-queries-controls-bottom{grid-gap:24px;align-items:flex-end;display:grid;gap:24px;grid-template-columns:1fr auto;justify-content:space-between}.vm-top-queries-controls-bottom_mobile{gap:8px;grid-template-columns:1fr}.vm-top-queries-controls-bottom__button{align-items:center;display:flex;justify-content:flex-end}.vm-top-queries-panels{grid-gap:24px;display:grid;gap:24px}.vm-trace-page{display:flex;flex-direction:column;min-height:100%}@media(max-width:768px){.vm-trace-page{padding:24px 0}}.vm-trace-page-controls{grid-gap:16px;align-items:center;display:grid;gap:16px;grid-template-columns:1fr 1fr;justify-content:center}.vm-trace-page-header{grid-gap:16px;align-items:start;display:grid;gap:16px;grid-template-columns:1fr auto;margin-bottom:24px}@media(max-width:768px){.vm-trace-page-header{grid-template-columns:1fr;padding:0 24px}}.vm-trace-page-header-errors{grid-gap:24px;align-items:flex-start;display:grid;gap:24px;grid-template-columns:1fr;justify-content:stretch}@media(max-width:768px){.vm-trace-page-header-errors{grid-row:2}}.vm-trace-page-header-errors-item{align-items:center;display:grid;justify-content:stretch;position:relative}.vm-trace-page-header-errors-item__filename{min-height:20px}.vm-trace-page-header-errors-item__close{position:absolute;right:8px;top:auto;z-index:2}.vm-trace-page-preview{align-items:center;display:flex;flex-direction:column;flex-grow:1;justify-content:center}.vm-trace-page-preview__text{font-size:14px;line-height:1.8;margin-bottom:16px;text-align:center;white-space:pre-line}.vm-trace-page__dropzone{align-items:center;box-shadow:inset var(--color-primary) 0 0 10px;display:flex;height:100%;justify-content:center;left:0;opacity:.5;pointer-events:none;position:fixed;top:0;width:100%;z-index:100}.vm-explore-metrics{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}@media(max-width:500px){.vm-explore-metrics{gap:8px}}.vm-explore-metrics-body{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}@media(max-width:500px){.vm-explore-metrics-body{gap:8px}}.vm-explore-metrics-graph,.vm-explore-metrics-graph_mobile{padding:0 16px 16px}.vm-explore-metrics-graph__warning{align-items:center;display:grid;grid-template-columns:1fr auto;justify-content:space-between}.vm-explore-metrics-item-header{grid-gap:16px;align-items:center;border-bottom:var(--border-divider);display:grid;gap:16px;grid-template-columns:auto 1fr auto auto;justify-content:flex-start;padding:16px}.vm-explore-metrics-item-header_mobile{grid-template-columns:1fr auto;padding:8px 16px}.vm-explore-metrics-item-header__index{color:var(--color-text-secondary);font-size:10px}.vm-explore-metrics-item-header__name{flex-grow:1;font-weight:700;line-height:130%;max-width:100%;overflow:hidden;text-overflow:ellipsis}.vm-explore-metrics-item-header-order{align-items:center;display:grid;grid-column:1;grid-template-columns:auto 20px auto;justify-content:flex-start;text-align:center}.vm-explore-metrics-item-header-order__up{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-explore-metrics-item-header__rate{grid-column:3}.vm-explore-metrics-item-header__close{align-items:center;display:grid;grid-column:4;grid-row:1}.vm-explore-metrics-item-header code{background-color:var(--color-hover-black);border-radius:6px;font-size:85%;padding:.2em .4em}.vm-explore-metrics-item-header-modal{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}.vm-explore-metrics-item-header-modal-order{align-items:center;display:flex;gap:24px;justify-content:space-between}.vm-explore-metrics-item-header-modal-order p{align-items:center;display:flex}.vm-explore-metrics-item-header-modal-order__index{margin-left:4px}.vm-explore-metrics-item-header-modal__rate{grid-gap:8px;display:grid;gap:8px}.vm-explore-metrics-item-header-modal__rate p{color:var(--color-text-secondary)}.vm-explore-metrics-item{position:relative}.vm-select-input{align-items:center;border:var(--border-divider);border-radius:4px;cursor:pointer;display:flex;justify-content:space-between;min-height:36px;padding:5px 0 5px 16px;position:relative}.vm-select-input-content{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-start;max-width:calc(100% - 77px);width:100%}.vm-select-input-content_mobile{flex-wrap:nowrap}.vm-select-input-content__counter{font-size:12px;line-height:12px}.vm-select-input-content__selected{align-items:center;background-color:var(--color-hover-black);border-radius:4px;display:inline-flex;font-size:12px;justify-content:center;line-height:12px;max-width:100%;padding:2px 2px 2px 6px}.vm-select-input-content__selected span{overflow:hidden;text-overflow:ellipsis;width:100%}.vm-select-input-content__selected svg{align-items:center;background-color:transparent;border-radius:4px;display:flex;justify-content:center;margin-left:10px;padding:4px;transition:background-color .2s ease-in-out;width:20px}.vm-select-input-content__selected svg:hover{background-color:hsla(0,6%,6%,.1)}.vm-select-input input{background-color:transparent;border:none;border-radius:4px;color:var(--color-text);display:inline-block;flex-grow:1;font-size:12px;height:18px;line-height:18px;min-width:100px;padding:0;position:relative;z-index:2}.vm-select-input input:placeholder-shown{width:auto}.vm-select-input__icon{align-items:center;border-right:var(--border-divider);color:var(--color-text-secondary);cursor:pointer;display:inline-flex;justify-content:flex-end;padding:0 8px;transition:opacity .2s ease-in,-webkit-transform .2s ease-in;transition:transform .2s ease-in,opacity .2s ease-in;transition:transform .2s ease-in,opacity .2s ease-in,-webkit-transform .2s ease-in}.vm-select-input__icon:last-child{border:none}.vm-select-input__icon svg{width:14px}.vm-select-input__icon_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-select-input__icon:hover{opacity:.7}.vm-select-options{grid-gap:8px;display:grid;font-size:12px;gap:8px;max-height:208px;max-width:300px;overflow:auto;padding:16px}.vm-select-options_mobile{max-height:calc(var(--vh)*100 - 70px);max-width:100%;padding:0 16px 8px}.vm-explore-metrics-header{align-items:center;display:flex;flex-wrap:wrap;gap:16px 18px;justify-content:flex-start;max-width:calc(100vw - var(--scrollbar-width))}.vm-explore-metrics-header_mobile{align-items:stretch;flex-direction:column}.vm-explore-metrics-header__job{flex-grow:1;min-width:150px}.vm-explore-metrics-header__instance{flex-grow:2;min-width:150px}.vm-explore-metrics-header__size{flex-grow:1;min-width:150px}.vm-explore-metrics-header-metrics{flex-grow:1;width:100%}.vm-explore-metrics-header__clear-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:2px}.vm-explore-metrics-header__clear-icon:hover{opacity:.7}.vm-preview-icons{grid-gap:16px;align-items:flex-start;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,100px);justify-content:center}.vm-preview-icons-item{grid-gap:8px;align-items:stretch;border:1px solid transparent;border-radius:4px;cursor:pointer;display:grid;gap:8px;grid-template-rows:1fr auto;height:100px;justify-content:center;padding:16px 8px;transition:box-shadow .2s ease-in-out}.vm-preview-icons-item:hover{box-shadow:0 1px 4px rgba(0,0,0,.16)}.vm-preview-icons-item:active .vm-preview-icons-item__svg{-webkit-transform:scale(.9);transform:scale(.9)}.vm-preview-icons-item__name{font-size:10px;line-height:2;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.vm-preview-icons-item__svg{align-items:center;display:flex;height:100%;justify-content:center;transition:-webkit-transform .1s ease-out;transition:transform .1s ease-out;transition:transform .1s ease-out,-webkit-transform .1s ease-out}.vm-preview-icons-item__svg svg{height:24px;width:auto}#root,body,html{background-attachment:fixed;background-color:#fefeff;background-color:var(--color-background-body);background-repeat:no-repeat;color:#110f0f;color:var(--color-text);cursor:default;font-family:Lato,sans-serif;font-size:12px;margin:0;min-height:100%}body{overflow:auto}*{-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:inherit;font:inherit;touch-action:pan-x pan-y}code{font-family:monospace}b{font-weight:700}input,textarea{cursor:text}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{-webkit-user-select:none;user-select:none}input::placeholder,textarea::placeholder{-webkit-user-select:none;user-select:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.vm-snackbar{bottom:16px;left:16px;position:fixed;z-index:999}.vm-snackbar-content{align-items:center;display:grid;grid-template-columns:1fr auto}.vm-snackbar-content__close{color:inherit;height:24px;opacity:.8;padding:4px;width:24px}.vm-snackbar_mobile{-webkit-animation:vm-slide-snackbar .15s cubic-bezier(.28,.84,.42,1.1);animation:vm-slide-snackbar .15s cubic-bezier(.28,.84,.42,1.1);bottom:0;left:0;right:0}@-webkit-keyframes vm-slide-snackbar{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes vm-slide-snackbar{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}svg{width:100%}*{scrollbar-color:#a09f9f #fff;scrollbar-color:var(--color-text-disabled) var(--color-background-block);scrollbar-width:thin}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#fff;background:var(--color-background-block)}::-webkit-scrollbar-thumb{background-color:#a09f9f;background-color:var(--color-text-disabled);border:3px solid #fff;border:3px solid var(--color-background-block);border-radius:20px}a,abbr,acronym,address,applet,article,aside,audio,big,body,canvas,caption,center,cite,code,del,details,dfn,div,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;margin:0;padding:0;vertical-align:initial}h1,h2,h3,h4,h5,h6{font-weight:400}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}q:after,q:before{content:""}table{border-collapse:collapse;border-spacing:0}input::-webkit-input-placeholder{opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}input::placeholder{opacity:1;transition:opacity .3s ease}input:focus::-webkit-input-placeholder{opacity:0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}input:focus::placeholder{opacity:0;transition:opacity .3s ease}*{box-sizing:border-box;outline:none}button{background:none;border:none;border-radius:0;padding:0}strong{letter-spacing:1px}input[type=file]{cursor:pointer;font-size:0;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}input[type=file]:disabled{cursor:not-allowed}a{color:inherit;text-decoration:inherit}input,textarea{-webkit-text-fill-color:inherit;appearance:none;-webkit-appearance:none}input:disabled,textarea:disabled{opacity:1!important}input:placeholder-shown,textarea:placeholder-shown{width:100%}input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-box-shadow:inset 0 0 0 0 #fff!important;width:100%;z-index:2}@font-face{font-family:Lato;font-style:normal;font-weight:400;src:url(../../static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf)}@font-face{font-family:Lato;font-style:normal;font-weight:700;src:url(../../static/media/Lato-Bold.32360ba4b57802daa4d6.ttf)}.vm-header-button{border:1px solid hsla(0,6%,6%,.2)}.vm-list-item{background-color:transparent;cursor:pointer;padding:12px 16px;transition:background-color .2s ease}.vm-list-item_mobile{padding:16px}.vm-list-item:hover,.vm-list-item_active{background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-list-item_multiselect{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:10px 1fr;justify-content:flex-start}.vm-list-item_multiselect svg{-webkit-animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);animation:vm-scale .15s cubic-bezier(.28,.84,.42,1)}.vm-list-item_multiselect span{grid-column:2}.vm-list-item_multiselect_selected{color:#3f51b5;color:var(--color-primary)}.vm-mobile-option{align-items:center;display:flex;gap:8px;justify-content:flex-start;padding:12px 0;-webkit-user-select:none;user-select:none;width:100%}.vm-mobile-option__arrow,.vm-mobile-option__icon{align-items:center;display:flex;justify-content:center}.vm-mobile-option__icon{color:#3f51b5;color:var(--color-primary);height:22px;width:22px}.vm-mobile-option__arrow{color:#3f51b5;color:var(--color-primary);height:14px;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);width:14px}.vm-mobile-option-text{grid-gap:2px;align-items:center;display:grid;flex-grow:1;gap:2px}.vm-mobile-option-text__label{font-weight:700}.vm-mobile-option-text__value{color:#706f6f;color:var(--color-text-secondary);font-size:10px}.vm-block{background-color:#fff;background-color:var(--color-background-block);border-radius:8px;box-shadow:1px 2px 6px rgba(0,0,0,.08);box-shadow:var(--box-shadow);padding:24px}.vm-block_mobile{border-radius:0;padding:16px}.vm-block_empty-padding{padding:0}.vm-section-header{align-items:center;border-bottom:1px solid rgba(0,0,0,.15);border-bottom:var(--border-divider);border-radius:8px 8px 0 0;display:grid;grid-template-columns:1fr auto;justify-content:center;padding:0 24px}.vm-section-header__title{font-size:12px;font-weight:700}.vm-section-header__title_mobile{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.vm-section-header__tabs{align-items:center;display:flex;font-size:10px;justify-content:flex-start}.vm-table{border-collapse:initial;border-spacing:0;margin-top:-24px;width:100%}.vm-table,.vm-table__row{background-color:#fff;background-color:var(--color-background-block)}.vm-table__row{transition:background-color .2s ease}.vm-table__row:hover:not(.vm-table__row_header){background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-table__row_header{position:relative;z-index:2}.vm-table__row_selected{background-color:rgba(26,144,255,.05)}.vm-table-cell{border-bottom:1px solid rgba(0,0,0,.15);border-bottom:var(--border-divider);height:40px;line-height:25px;padding:8px;vertical-align:top}.vm-table-cell__content{align-items:center;display:flex;justify-content:flex-start}.vm-table-cell_sort{cursor:pointer}.vm-table-cell_sort:hover{background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-table-cell_header{font-weight:700;text-align:left;text-transform:capitalize}.vm-table-cell_gray{color:#110f0f;color:var(--color-text);opacity:.4}.vm-table-cell_right{text-align:right}.vm-table-cell_right .vm-table-cell__content{justify-content:flex-end}.vm-table-cell_no-wrap{white-space:nowrap}.vm-table__sort-icon{align-items:center;display:flex;justify-content:center;margin:0 8px;opacity:.4;transition:opacity .2s ease,-webkit-transform .2s ease-in-out;transition:opacity .2s ease,transform .2s ease-in-out;transition:opacity .2s ease,transform .2s ease-in-out,-webkit-transform .2s ease-in-out;width:15px}.vm-table__sort-icon_active{opacity:1}.vm-table__sort-icon_desc{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-link{cursor:pointer;transition:color .2s ease}.vm-link_colored{color:#3f51b5;color:var(--color-primary)}.vm-link_with-icon{grid-gap:6px;align-items:center;display:grid;gap:6px;grid-template-columns:14px auto;justify-content:center}.vm-link:hover{color:#3f51b5;color:var(--color-primary);text-decoration:underline}:root{--color-primary:#3f51b5;--color-secondary:#e91e63;--color-error:#fd080e;--color-warning:#ff8308;--color-info:#03a9f4;--color-success:#4caf50;--color-primary-text:#fff;--color-secondary-text:#fff;--color-error-text:#fff;--color-warning-text:#fff;--color-info-text:#fff;--color-success-text:#fff;--color-background-body:#fefeff;--color-background-block:#fff;--color-background-tooltip:rgba(97,97,97,.92);--color-text:#110f0f;--color-text-secondary:#706f6f;--color-text-disabled:#a09f9f;--box-shadow:rgba(0,0,0,.08) 1px 2px 6px;--box-shadow-popper:rgba(0,0,0,.1) 0px 2px 8px 0px;--border-divider:1px solid rgba(0,0,0,.15);--color-hover-black:rgba(0,0,0,.06)} \ No newline at end of file diff --git a/app/vmselect/vmui/static/css/main.8d8c45cf.css b/app/vmselect/vmui/static/css/main.8d8c45cf.css deleted file mode 100644 index 29edde0966..0000000000 --- a/app/vmselect/vmui/static/css/main.8d8c45cf.css +++ /dev/null @@ -1 +0,0 @@ -.vm-tabs{gap:16px;height:100%;position:relative;-webkit-user-select:none;user-select:none}.vm-tabs,.vm-tabs-item{align-items:center;display:flex;justify-content:center}.vm-tabs-item{color:inherit;cursor:pointer;font-size:inherit;font-weight:inherit;opacity:.6;padding:16px 8px;text-decoration:none;text-transform:uppercase;transition:opacity .2s}.vm-tabs-item_active{opacity:1}.vm-tabs-item:hover{opacity:.8}.vm-tabs-item__icon{display:grid;margin-right:8px;width:15px}.vm-tabs-item__icon_single{margin-right:0}.vm-tabs__indicator{border-bottom:2px solid;position:absolute;transition:width .2s ease,left .3s cubic-bezier(.28,.84,.42,1)}.vm-alert{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-radius:8px;box-shadow:var(--box-shadow);color:var(--color-text);display:grid;font-size:14px;font-weight:400;gap:8px;grid-template-columns:20px 1fr;line-height:20px;padding:16px;position:relative}.vm-alert_mobile{align-items:flex-start;border-radius:0}.vm-alert:after{border-radius:8px;content:"";height:100%;left:0;opacity:.1;position:absolute;top:0;width:100%;z-index:1}.vm-alert_mobile:after{border-radius:0}.vm-alert__content,.vm-alert__icon{position:relative;z-index:2}.vm-alert__icon{align-items:center;display:flex;justify-content:center}.vm-alert__content{-webkit-filter:brightness(.6);filter:brightness(.6);white-space:pre-line}.vm-alert_success{color:var(--color-success)}.vm-alert_success:after{background-color:var(--color-success)}.vm-alert_error{color:var(--color-error)}.vm-alert_error:after{background-color:var(--color-error)}.vm-alert_info{color:var(--color-info)}.vm-alert_info:after{background-color:var(--color-info)}.vm-alert_warning{color:var(--color-warning)}.vm-alert_warning:after{background-color:var(--color-warning)}.vm-alert_dark:after{opacity:.1}.vm-alert_dark .vm-alert__content{-webkit-filter:none;filter:none}.vm-header{align-items:center;display:flex;flex-wrap:wrap;gap:0 48px;justify-content:flex-start;min-height:51px;padding:8px 24px;z-index:99}.vm-header_app{padding:8px 0}@media(max-width:1000px){.vm-header{gap:8px;padding:8px;position:-webkit-sticky;position:sticky;top:0}}.vm-header_mobile{display:grid;grid-template-columns:33px 1fr 33px;justify-content:space-between}.vm-header_dark .vm-header-button,.vm-header_dark button,.vm-header_dark button:before{background-color:var(--color-background-block)}.vm-header-logo{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;margin-bottom:2px;max-width:65px;min-width:65px;overflow:hidden;position:relative;width:100%}@media(max-width:1200px){.vm-header-logo{max-width:14px;min-width:14px}}.vm-header-logo svg,.vm-header-logo_mobile{max-width:65px;min-width:65px}.vm-header-logo_mobile{margin:0 auto}.vm-header-nav{align-items:center;display:flex;font-size:10px;font-weight:700;gap:16px;justify-content:flex-start}.vm-header-nav_column{align-items:stretch;flex-direction:column;gap:8px}.vm-header-nav_column .vm-header-nav-item{padding:16px 0}.vm-header-nav_column .vm-header-nav-item_sub{justify-content:stretch}.vm-header-nav-item{cursor:pointer;opacity:.5;padding:16px 8px;position:relative;text-transform:uppercase;transition:opacity .2s ease-in}.vm-header-nav-item_sub{grid-gap:4px;align-items:center;cursor:default;display:grid;gap:4px;grid-template-columns:auto 14px;justify-content:center}.vm-header-nav-item:hover,.vm-header-nav-item_active{opacity:1}.vm-header-nav-item svg{-webkit-transform:rotate(0deg);transform:rotate(0deg);transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in}.vm-header-nav-item_open svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-header-nav-item-submenu{border-radius:2px;color:#fff;display:grid;font-size:10px;font-weight:700;opacity:1;padding:8px;-webkit-transform-origin:top center;transform-origin:top center;white-space:nowrap}.vm-header-nav-item-submenu-item{cursor:pointer}.vm-popper{background-color:var(--color-background-block);border-radius:4px;box-shadow:var(--box-shadow-popper);opacity:0;pointer-events:none;position:fixed;transition:opacity .1s ease-in-out;z-index:-99}.vm-popper_open{-webkit-animation:vm-slider .15s cubic-bezier(.28,.84,.42,1.1);animation:vm-slider .15s cubic-bezier(.28,.84,.42,1.1);opacity:1;pointer-events:auto;-webkit-transform-origin:top center;transform-origin:top center;z-index:101}.vm-popper_mobile{-webkit-animation:none;animation:none;border-radius:0;bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0;width:100%}.vm-popper-header{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-bottom:var(--border-divider);border-radius:4px 4px 0 0;color:var(--color-text);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between;margin-bottom:16px;min-height:51px;padding:8px 8px 8px 16px}.vm-popper-header__title{font-weight:700;-webkit-user-select:none;user-select:none}@-webkit-keyframes vm-slider{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes vm-slider{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}.vm-modal{align-items:center;background:hsla(0,6%,6%,.55);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:100}.vm-modal_mobile{align-items:flex-start;max-height:calc(var(--vh)*100);min-height:calc(var(--vh)*100);overflow:auto}.vm-modal_mobile .vm-modal-content{border-radius:0;grid-template-rows:70px -webkit-max-content;grid-template-rows:70px max-content;max-height:-webkit-max-content;max-height:max-content;min-height:100%;overflow:visible;width:100vw}.vm-modal_mobile .vm-modal-content-header{margin-bottom:16px;padding:8px 8px 8px 16px}.vm-modal_mobile .vm-modal-content-body{align-items:flex-start;display:grid;min-height:100%;padding:0 16px 22px}.vm-modal-content{align-items:flex-start;background:var(--color-background-block);border-radius:4px;box-shadow:0 0 24px hsla(0,6%,6%,.07);display:grid;grid-template-rows:auto 1fr;max-height:calc(var(--vh)*90);overflow:auto}.vm-modal-content-header{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-bottom:var(--border-divider);border-radius:4px 4px 0 0;color:var(--color-text);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between;margin-bottom:22px;min-height:51px;padding:16px 22px;position:-webkit-sticky;position:sticky;top:0;z-index:3}.vm-modal-content-header__title{font-weight:700;-webkit-user-select:none;user-select:none}.vm-modal-content-header__close{align-items:center;box-sizing:initial;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:10px;width:24px}.vm-modal-content-body{padding:0 22px 22px}.vm-shortcuts{min-width:400px}@media(max-width:500px){.vm-shortcuts{min-width:100%}}.vm-shortcuts-section{margin-bottom:24px}.vm-shortcuts-section__title{border-bottom:var(--border-divider);font-weight:700;margin-bottom:16px;padding:8px 0}.vm-shortcuts-section-list{grid-gap:16px;display:grid;gap:16px}@media(max-width:500px){.vm-shortcuts-section-list{gap:24px}}.vm-shortcuts-section-list-item{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:210px 1fr}@media(max-width:500px){.vm-shortcuts-section-list-item{grid-template-columns:1fr}}.vm-shortcuts-section-list-item__key{align-items:center;display:flex;gap:4px}.vm-shortcuts-section-list-item__key code{background-color:var(--color-background-body);background-repeat:repeat-x;border:var(--border-divider);border-radius:4px;color:var(--color-text);display:inline-block;font-size:10px;line-height:2;padding:2px 8px 0;text-align:center}.vm-shortcuts-section-list-item__description{font-size:12px}.vm-tooltip{-webkit-animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);background-color:var(--color-background-tooltip);border-radius:4px;box-shadow:var(--box-shadow-popper);color:#fff;font-size:10px;line-height:150%;opacity:1;padding:3px 8px;pointer-events:auto;position:fixed;transition:opacity .1s ease-in-out;white-space:nowrap;z-index:101}@-webkit-keyframes vm-scale{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes vm-scale{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}.vm-menu-burger{background:none;border:none;cursor:pointer;height:18px;outline:none;padding:0;position:relative;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;width:18px}.vm-menu-burger:after{background-color:hsla(0,6%,6%,.1);border-radius:50%;content:"";height:calc(100% + 12px);left:-6px;position:absolute;top:-6px;-webkit-transform:scale(0) translateZ(-2px);transform:scale(0) translateZ(-2px);transition:-webkit-transform .14s ease-in-out;transition:transform .14s ease-in-out;transition:transform .14s ease-in-out,-webkit-transform .14s ease-in-out;width:calc(100% + 12px)}.vm-menu-burger:hover:after{-webkit-transform:scale(1) translateZ(-2px);transform:scale(1) translateZ(-2px)}.vm-menu-burger span{border-top:2px solid #fff;display:block;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);transition:border-color .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,border-color .3s ease;transition:transform .3s ease,border-color .3s ease,-webkit-transform .3s ease}.vm-menu-burger span,.vm-menu-burger span:after,.vm-menu-burger span:before{border-radius:6px;height:2px;left:0;position:absolute;width:100%}.vm-menu-burger span:after,.vm-menu-burger span:before{-webkit-animation-duration:.6s;animation-duration:.6s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.645,.045,.355,1);animation-timing-function:cubic-bezier(.645,.045,.355,1);background:#fff;content:"";top:0}.vm-menu-burger span:before{-webkit-animation-name:topLineBurger;animation-name:topLineBurger}.vm-menu-burger span:after{-webkit-animation-name:bottomLineBurger;animation-name:bottomLineBurger}.vm-menu-burger_opened span{border-color:transparent}.vm-menu-burger_opened span:before{-webkit-animation-name:topLineCross;animation-name:topLineCross}.vm-menu-burger_opened span:after{-webkit-animation-name:bottomLineCross;animation-name:bottomLineCross}@-webkit-keyframes topLineCross{0%{-webkit-transform:translateY(-7px);transform:translateY(-7px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(45deg);transform:translateY(-2px) translateX(30%) rotate(45deg);width:60%}}@keyframes topLineCross{0%{-webkit-transform:translateY(-7px);transform:translateY(-7px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(45deg);transform:translateY(-2px) translateX(30%) rotate(45deg);width:60%}}@-webkit-keyframes bottomLineCross{0%{-webkit-transform:translateY(3px);transform:translateY(3px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(-45deg);transform:translateY(-2px) translateX(30%) rotate(-45deg);width:60%}}@keyframes bottomLineCross{0%{-webkit-transform:translateY(3px);transform:translateY(3px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(-45deg);transform:translateY(-2px) translateX(30%) rotate(-45deg);width:60%}}@-webkit-keyframes topLineBurger{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(-7px) rotate(0deg);transform:translateY(-7px) rotate(0deg)}}@keyframes topLineBurger{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(-7px) rotate(0deg);transform:translateY(-7px) rotate(0deg)}}@-webkit-keyframes bottomLineBurger{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(3px) rotate(0deg);transform:translateY(3px) rotate(0deg)}}@keyframes bottomLineBurger{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(3px) rotate(0deg);transform:translateY(3px) rotate(0deg)}}.vm-header-sidebar{background-color:inherit;color:inherit;height:24px;width:24px}.vm-header-sidebar-button{align-items:center;display:flex;height:51px;justify-content:center;left:0;position:absolute;top:0;transition:left .35s cubic-bezier(.28,.84,.42,1);width:51px}.vm-header-sidebar-button_open{left:149px;position:fixed;z-index:102}.vm-header-sidebar-menu{grid-gap:16px;background-color:inherit;box-shadow:var(--box-shadow-popper);display:grid;gap:16px;grid-template-rows:1fr auto;height:100%;left:0;padding:16px;position:fixed;top:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:left;transform-origin:left;transition:-webkit-transform .3s cubic-bezier(.28,.84,.42,1);transition:transform .3s cubic-bezier(.28,.84,.42,1);transition:transform .3s cubic-bezier(.28,.84,.42,1),-webkit-transform .3s cubic-bezier(.28,.84,.42,1);width:200px;z-index:101}.vm-header-sidebar-menu_open{-webkit-transform:translateX(0);transform:translateX(0)}.vm-header-sidebar-menu__logo{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;position:relative;width:65px}.vm-header-sidebar-menu-settings{grid-gap:8px;align-items:center;display:grid;gap:8px}.vm-tenant-input{position:relative}.vm-tenant-input-list{border-radius:8px;max-height:300px;overflow:auto;overscroll-behavior:none}.vm-tenant-input-list_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-tenant-input-list_mobile .vm-tenant-input-list__search{padding:0 16px 8px}.vm-tenant-input-list__search{background-color:var(--color-background-block);padding:8px 16px;position:-webkit-sticky;position:sticky;top:0}.vm-text-field{display:grid;margin:6px 0;position:relative;width:100%}.vm-text-field_textarea:after{content:attr(data-replicated-value) " ";visibility:hidden;white-space:pre-wrap}.vm-text-field:after,.vm-text-field__input{background-color:transparent;border:var(--border-divider);font-size:12px;grid-area:1/1/2/2;line-height:18px;overflow:hidden;padding:8px 16px;width:100%}.vm-text-field__error,.vm-text-field__helper-text,.vm-text-field__label{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;background-color:var(--color-background-block);display:-webkit-box;font-size:10px;left:8px;line-height:12px;max-width:calc(100% - 16px);overflow:hidden;padding:0 3px;pointer-events:none;position:absolute;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;z-index:2}@media(max-width:500px){.vm-text-field__error,.vm-text-field__helper-text,.vm-text-field__label{-webkit-line-clamp:1;line-clamp:1}}.vm-text-field__label{color:var(--color-text-secondary);top:-7px}.vm-text-field__error{color:var(--color-error);top:calc(100% - 7px)}.vm-text-field__helper-text{bottom:-5px;color:var(--color-text-secondary)}.vm-text-field__input{background-color:transparent;border-radius:4px;color:var(--color-text);display:block;min-height:34px;overflow:hidden;resize:none;transition:border .2s ease}.vm-text-field__input:focus,.vm-text-field__input:hover{border:1px solid var(--color-primary)}.vm-text-field__input_error,.vm-text-field__input_error:focus,.vm-text-field__input_error:hover{border:1px solid var(--color-error)}.vm-text-field__input_icon-start{padding-left:31px}.vm-text-field__input:disabled{background-color:inherit;color:inherit}.vm-text-field__input:disabled:hover{border-color:var(--color-text-disabled)}.vm-text-field__icon-end,.vm-text-field__icon-start{align-items:center;color:var(--color-text-secondary);display:flex;height:100%;justify-content:center;left:8px;max-width:15px;position:absolute;top:auto}.vm-text-field__icon-end{left:auto;right:8px}.vm-step-control{display:inline-flex}.vm-step-control button{text-transform:none}.vm-step-control__value{display:inline;margin-left:3px}.vm-step-control-popper{grid-gap:8px;display:grid;font-size:12px;gap:8px;max-height:208px;max-width:300px;overflow:auto;padding:16px}.vm-step-control-popper_mobile{max-height:calc(var(--vh)*100 - 70px);max-width:100%;padding:0 16px 8px}.vm-step-control-popper_mobile .vm-step-control-popper-info{font-size:12px}.vm-step-control-popper-info{font-size:10px;line-height:1.6}.vm-step-control-popper-info a{margin:0 .2em}.vm-step-control-popper-info code{background-color:var(--color-hover-black);border-radius:6px;font-size:85%;margin:0 .2em;padding:.2em .4em}.vm-time-duration{font-size:12px;max-height:200px;overflow:auto}.vm-time-duration_mobile{max-height:100%}.vm-calendar{background-color:var(--color-background-block);border-radius:8px;display:grid;font-size:12px;grid-template-rows:auto 1fr auto;padding:16px;-webkit-user-select:none;user-select:none}.vm-calendar_mobile{padding:0 16px}.vm-calendar__tabs{border-top:var(--border-divider);margin:16px -16px -16px}.vm-calendar-header{grid-gap:24px;align-items:center;display:grid;gap:24px;grid-template-columns:1fr auto;justify-content:center;min-height:36px;padding-bottom:16px}.vm-calendar-header-left{grid-gap:8px;align-items:center;cursor:pointer;display:grid;gap:8px;grid-template-columns:auto auto;justify-content:flex-start;transition:opacity .2s ease-in-out}.vm-calendar-header-left:hover{opacity:.8}.vm-calendar-header-left__date{color:var(--color-text);font-size:12px;font-weight:700}.vm-calendar-header-left__select-year{align-items:center;display:grid;height:14px;justify-content:center;width:14px}.vm-calendar-header-right{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:18px 18px;justify-content:center}.vm-calendar-header-right__next,.vm-calendar-header-right__prev{cursor:pointer;margin:-8px;padding:8px;transition:opacity .2s ease-in-out}.vm-calendar-header-right__next:hover,.vm-calendar-header-right__prev:hover{opacity:.8}.vm-calendar-header-right__prev{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.vm-calendar-header-right__next{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.vm-calendar-body{grid-gap:2px;align-items:center;display:grid;gap:2px;grid-template-columns:repeat(7,32px);grid-template-rows:repeat(6,32px);justify-content:center}@media(max-width:500px){.vm-calendar-body{grid-template-columns:repeat(7,calc(14.28571vw - 6.28571px));grid-template-rows:repeat(6,calc(14.28571vw - 6px))}}.vm-calendar-body-cell{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;text-align:center}.vm-calendar-body-cell_weekday{color:var(--color-text-secondary)}.vm-calendar-body-cell_day{cursor:pointer;transition:color .2s ease,background-color .3s ease-in-out}.vm-calendar-body-cell_day:hover{background-color:var(--color-hover-black)}.vm-calendar-body-cell_day_empty{pointer-events:none}.vm-calendar-body-cell_day_active{color:#fff}.vm-calendar-body-cell_day_active,.vm-calendar-body-cell_day_active:hover{background-color:var(--color-primary)}.vm-calendar-body-cell_day_today{border:1px solid var(--color-primary)}.vm-calendar-years{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(3,1fr);max-height:400px;overflow:auto}.vm-calendar-years__year{align-items:center;border-radius:8px;cursor:pointer;display:flex;justify-content:center;padding:8px 16px;transition:color .2s ease,background-color .3s ease-in-out}.vm-calendar-years__year:hover{background-color:var(--color-hover-black)}.vm-calendar-years__year_selected{color:#fff}.vm-calendar-years__year_selected,.vm-calendar-years__year_selected:hover{background-color:var(--color-primary)}.vm-calendar-time-picker{align-items:center;display:flex;flex-direction:column;justify-content:center}.vm-calendar-time-picker-clock{border:var(--border-divider);border-radius:50%;box-shadow:var(--box-shadow);box-sizing:initial;height:230px;position:relative;width:230px}.vm-calendar-time-picker-clock:after{background-color:var(--color-primary);border-radius:50%;content:"";height:6px;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:6px}.vm-calendar-time-picker-clock__arrow{background-color:var(--color-primary);height:107px;left:114px;margin-top:8px;opacity:.8;position:absolute;top:0;-webkit-transform-origin:bottom;transform-origin:bottom;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;width:2px;z-index:0}.vm-calendar-time-picker-clock__arrow_offset{height:73px;margin-top:42px;z-index:2}.vm-calendar-time-picker-clock__arrow:after{background-color:var(--color-primary);border-radius:50%;content:"";height:30px;left:50%;position:absolute;top:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:30px}.vm-calendar-time-picker-clock__time{align-items:flex-start;cursor:pointer;display:flex;height:115px;justify-content:center;left:100px;padding-top:8px;position:absolute;text-align:center;top:0;-webkit-transform-origin:bottom;transform-origin:bottom;width:30px;z-index:1}.vm-calendar-time-picker-clock__time_hide{display:none}.vm-calendar-time-picker-clock__time_offset{height:73px;margin-top:42px;padding:0;z-index:2}.vm-calendar-time-picker-clock__time:hover span{background-color:hsla(0,6%,6%,.1)}.vm-calendar-time-picker-clock__time span{align-items:center;border-radius:50%;display:grid;justify-content:center;min-height:30px;min-width:30px;position:relative;-webkit-transform-origin:center;transform-origin:center;transition:background-color .3s ease}.vm-calendar-time-picker-fields{align-items:center;display:flex;justify-content:space-between;margin-top:16px}.vm-calendar-time-picker-fields_dark .vm-calendar-time-picker-fields__input{border-color:var(--color-text-disabled)}.vm-calendar-time-picker-fields span{margin:0 8px}.vm-calendar-time-picker-fields__input{background-color:transparent;border:var(--border-divider);border-radius:4px;color:var(--color-text);font-size:14px;height:32px;padding:2px 8px;text-align:center;width:64px}.vm-calendar-time-picker-fields__input:focus{border-color:var(--color-primary)}.vm-time-selector{display:grid;grid-template-columns:repeat(2,230px);padding:16px 0}.vm-time-selector_mobile{grid-template-columns:1fr;max-height:calc(var(--vh)*100 - 70px);min-width:250px;overflow:auto;width:100%}.vm-time-selector_mobile .vm-time-selector-left{border-bottom:var(--border-divider);border-right:none;padding-bottom:16px}.vm-time-selector-left{border-right:var(--border-divider);display:flex;flex-direction:column;gap:8px;padding:0 16px}.vm-time-selector-left-inputs{align-items:flex-start;display:grid;flex-grow:1;justify-content:stretch}.vm-time-selector-left-inputs_dark .vm-time-selector-left-inputs__date{border-color:var(--color-text-disabled)}.vm-time-selector-left-inputs__date{grid-gap:8px;align-items:center;border-bottom:var(--border-divider);cursor:pointer;display:grid;gap:8px;grid-template-columns:1fr 14px;justify-content:center;margin-bottom:16px;padding-bottom:8px;transition:color .2s ease-in-out,border-bottom-color .3s ease}.vm-time-selector-left-inputs__date:last-child{margin-bottom:0}.vm-time-selector-left-inputs__date:hover{border-bottom-color:var(--color-primary)}.vm-time-selector-left-inputs__date:hover,.vm-time-selector-left-inputs__date:hover svg{color:var(--color-primary)}.vm-time-selector-left-inputs__date label{color:var(--color-text-secondary);font-size:10px;grid-column:1/3;-webkit-user-select:none;user-select:none}.vm-time-selector-left-inputs__date svg{color:var(--color-text-secondary);transition:color .2s ease-in-out}.vm-time-selector-left-timezone{align-items:center;display:flex;font-size:10px;gap:8px;justify-content:space-between;margin-bottom:8px}.vm-time-selector-left-timezone__utc{align-items:center;background-color:var(--color-hover-black);border-radius:4px;display:inline-flex;justify-content:center;padding:4px}.vm-time-selector-left__controls{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(2,1fr)}.vm-button{align-items:center;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:10px;font-weight:400;justify-content:center;line-height:15px;min-height:31px;padding:6px 14px;position:relative;text-transform:uppercase;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-user-select:none;user-select:none;white-space:nowrap}.vm-button:hover:after{background-color:var(--color-hover-black)}.vm-button:after,.vm-button:before{border-radius:6px;content:"";height:100%;left:0;position:absolute;top:0;transition:background-color .2s ease;width:100%}.vm-button:before{-webkit-transform:translateZ(-2px);transform:translateZ(-2px)}.vm-button:after{background-color:transparent;-webkit-transform:translateZ(-1px);transform:translateZ(-1px)}.vm-button span{align-items:center;display:grid;justify-content:center}.vm-button span svg{width:15px}.vm-button__start-icon{margin-right:6px}.vm-button__end-icon{margin-left:6px}.vm-button_disabled{cursor:not-allowed;opacity:.3}.vm-button_icon{padding:6px 8px}.vm-button_icon .vm-button__end-icon,.vm-button_icon .vm-button__start-icon{margin:0}.vm-button_small{min-height:25px;padding:4px 6px}.vm-button_small span svg{width:13px}.vm-button_contained_primary{color:var(--color-primary-text)}.vm-button_contained_primary,.vm-button_contained_primary:before{background-color:var(--color-primary)}.vm-button_contained_primary:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_secondary{color:var(--color-secondary-text)}.vm-button_contained_secondary:before{background-color:var(--color-secondary)}.vm-button_contained_secondary:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_success{color:var(--color-success-text)}.vm-button_contained_success:before{background-color:var(--color-success)}.vm-button_contained_success:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_error{color:var(--color-error-text)}.vm-button_contained_error:before{background-color:var(--color-error)}.vm-button_contained_gray{color:var(--color-text-secondary)}.vm-button_contained_gray:before{background-color:var(--color-text-secondary)}.vm-button_contained_warning{color:var(--color-warning)}.vm-button_contained_warning:before{background-color:var(--color-warning);opacity:.2}.vm-button_text_primary{color:var(--color-primary)}.vm-button_text_secondary{color:var(--color-secondary)}.vm-button_text_success{color:var(--color-success)}.vm-button_text_error{color:var(--color-error)}.vm-button_text_gray{color:var(--color-text-secondary)}.vm-button_text_warning{color:var(--color-warning)}.vm-button_outlined_primary{border:1px solid var(--color-primary);color:var(--color-primary)}.vm-button_outlined_error{border:1px solid var(--color-error);color:var(--color-error)}.vm-button_outlined_secondary{border:1px solid var(--color-secondary);color:var(--color-secondary)}.vm-button_outlined_success{border:1px solid var(--color-success);color:var(--color-success)}.vm-button_outlined_gray{border:1px solid var(--color-text-secondary);color:var(--color-text-secondary)}.vm-button_outlined_warning{border:1px solid var(--color-warning);color:var(--color-warning)}.vm-execution-controls-buttons{border-radius:7px;display:flex;justify-content:space-between;min-width:107px}.vm-execution-controls-buttons_mobile{flex-direction:column;gap:24px}.vm-execution-controls-buttons__arrow{align-items:center;display:flex;justify-content:center;-webkit-transform:rotate(0);transform:rotate(0);transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out}.vm-execution-controls-buttons__arrow_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-execution-controls-list{font-size:12px;max-height:208px;overflow:auto;padding:8px 0;width:124px}.vm-execution-controls-list_mobile{max-height:calc(var(--vh)*100 - 70px);padding:0;width:100%}.vm-server-configurator{align-items:center;display:flex;flex-direction:column;gap:24px;padding-bottom:24px;width:600px}.vm-server-configurator_mobile{align-items:flex-start;grid-auto-rows:-webkit-min-content;grid-auto-rows:min-content;height:100%;width:100%}@media(max-width:768px){.vm-server-configurator{width:100%}}.vm-server-configurator__input{width:100%}.vm-server-configurator__title{align-items:center;display:flex;font-size:12px;font-weight:700;grid-column:auto/span 2;justify-content:flex-start;margin-bottom:16px}.vm-limits-configurator-title__reset{align-items:center;display:flex;flex-grow:1;justify-content:flex-end}.vm-limits-configurator__inputs{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}.vm-limits-configurator__inputs_mobile{gap:8px}.vm-limits-configurator__inputs div{flex-grow:1}.vm-accordion-header{align-items:center;cursor:pointer;display:grid;font-size:inherit;position:relative}.vm-accordion-header__arrow{align-items:center;display:flex;justify-content:center;position:absolute;right:14px;top:auto;-webkit-transform:rotate(0);transform:rotate(0);transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out}.vm-accordion-header__arrow_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-accordion-header__arrow svg{height:auto;width:14px}.accordion-section{overflow:hidden}.vm-timezones-item{align-items:center;cursor:pointer;display:flex;gap:8px;justify-content:space-between}.vm-timezones-item_selected{border:var(--border-divider);border-radius:4px;padding:8px 16px}.vm-timezones-item__title{text-transform:capitalize}.vm-timezones-item__utc{align-items:center;background-color:var(--color-hover-black);border-radius:4px;display:inline-flex;justify-content:center;padding:4px}.vm-timezones-item__icon{align-items:center;display:inline-flex;justify-content:flex-end;margin:0 0 0 auto;transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in}.vm-timezones-item__icon svg{width:14px}.vm-timezones-item__icon_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-timezones-list{background-color:var(--color-background-block);border-radius:8px;max-height:200px;overflow:auto}.vm-timezones-list_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-timezones-list_mobile .vm-timezones-list-header__search{padding:0 16px}.vm-timezones-list-header{background-color:var(--color-background-block);border-bottom:var(--border-divider);position:-webkit-sticky;position:sticky;top:0;z-index:2}.vm-timezones-list-header__search{padding:8px}.vm-timezones-list-group{border-bottom:var(--border-divider);padding:8px 0}.vm-timezones-list-group:last-child{border-bottom:none}.vm-timezones-list-group__title{color:var(--color-text-secondary);font-weight:700;padding:8px 16px}.vm-timezones-list-group-options{align-items:flex-start;display:grid}.vm-timezones-list-group-options__item{padding:8px 16px;transition:background-color .2s ease}.vm-timezones-list-group-options__item:hover{background-color:hsla(0,6%,6%,.1)}.vm-theme-control__toggle{display:inline-flex;min-width:300px;text-transform:capitalize}.vm-theme-control_mobile .vm-theme-control__toggle{display:flex;min-width:100%}.vm-toggles{grid-gap:3px;display:grid;gap:3px;position:relative;width:100%}.vm-toggles__label{color:var(--color-text-secondary);font-size:10px;line-height:1;padding:0 16px}.vm-toggles-group{overflow:hidden;width:100%}.vm-toggles-group,.vm-toggles-group-item{align-items:center;display:grid;justify-content:center;position:relative}.vm-toggles-group-item{border-bottom:var(--border-divider);border-right:var(--border-divider);border-top:var(--border-divider);color:var(--color-text-secondary);cursor:pointer;font-size:10px;font-weight:700;padding:8px;text-align:center;transition:color .15s ease-in;-webkit-user-select:none;user-select:none;z-index:2}.vm-toggles-group-item_first{border-left:var(--border-divider);border-radius:16px 0 0 16px}.vm-toggles-group-item:last-child{border-left:none;border-radius:0 16px 16px 0}.vm-toggles-group-item_icon{gap:4px;grid-template-columns:14px auto}.vm-toggles-group-item:hover{color:var(--color-primary)}.vm-toggles-group-item_active{border-color:transparent;color:var(--color-primary)}.vm-toggles-group-item_active:hover{background-color:transparent}.vm-toggles-group__highlight{background-color:rgba(var(--color-primary),.08);border:1px solid var(--color-primary);height:100%;position:absolute;top:0;transition:left .2s cubic-bezier(.28,.84,.42,1),border-radius .2s linear;z-index:1}.vm-header-controls{align-items:center;display:flex;flex-grow:1;gap:8px;justify-content:flex-end}.vm-header-controls_mobile{display:grid;grid-template-columns:1fr;padding:0}.vm-header-controls_mobile .vm-header-button{border:none}.vm-header-controls-modal{-webkit-transform:scale(0);transform:scale(0)}.vm-header-controls-modal_open{-webkit-transform:scale(1);transform:scale(1)}.vm-container{display:flex;flex-direction:column;min-height:calc(var(--vh)*100 - var(--scrollbar-height))}.vm-container-body{background-color:var(--color-background-body);flex-grow:1;min-height:100%;padding:24px}.vm-container-body_mobile{padding:8px 0 0}@media(max-width:768px){.vm-container-body{padding:8px 0 0}}.vm-container-body_app{background-color:transparent;padding:8px 0}.vm-footer{align-items:center;background:var(--color-background-body);border-top:var(--border-divider);color:var(--color-text-secondary);display:flex;flex-wrap:wrap;gap:24px;justify-content:center;padding:24px}@media(max-width:768px){.vm-footer{gap:16px;padding:16px}}.vm-footer__link,.vm-footer__website{grid-gap:6px;align-items:center;display:grid;gap:6px;grid-template-columns:12px auto;justify-content:center}.vm-footer__website{margin-right:16px}@media(max-width:768px){.vm-footer__website{margin-right:0}}.vm-footer__link{grid-template-columns:14px auto}.vm-footer__copyright{flex-grow:1;text-align:right}@media(max-width:768px){.vm-footer__copyright{font-size:10px;text-align:center;width:100%}}.uplot,.uplot *,.uplot :after,.uplot :before{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;width:-webkit-min-content;width:min-content}.u-title{font-size:18px;font-weight:700;text-align:center}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;height:100%;position:relative;width:100%}.u-axis{position:absolute}.u-legend{margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{display:inline-block;vertical-align:middle}.u-legend .u-marker{background-clip:padding-box!important;height:1em;margin-right:4px;width:1em}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:rgba(0,0,0,.07)}.u-cursor-x,.u-cursor-y,.u-select{pointer-events:none;position:absolute}.u-cursor-x,.u-cursor-y{left:0;top:0;will-change:transform;z-index:100}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{background-clip:padding-box!important;border:0 solid;border-radius:50%;left:0;pointer-events:none;position:absolute;top:0;will-change:transform;z-index:100}.u-axis.u-off,.u-cursor-pt.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-select.u-off{display:none}.vm-line-chart{pointer-events:auto}.vm-line-chart_panning{pointer-events:none}.vm-line-chart__u-plot{position:relative}.vm-chart-tooltip{grid-gap:16px;word-wrap:break-word;background:var(--color-background-tooltip);border-radius:8px;color:#fff;display:grid;font-family:monospace;font-size:10px;font-weight:400;gap:16px;line-height:150%;padding:8px;pointer-events:none;position:absolute;-webkit-user-select:text;user-select:text;width:325px;z-index:98}.vm-chart-tooltip_sticky{pointer-events:auto;z-index:99}.vm-chart-tooltip_moved{margin-left:-271.5px;margin-top:-20.5px;position:fixed}.vm-chart-tooltip-header{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:1fr 25px 25px;justify-content:center;min-height:25px}.vm-chart-tooltip-header__close{color:#fff}.vm-chart-tooltip-header__drag{color:#fff;cursor:move}.vm-chart-tooltip-data{grid-gap:8px;align-items:flex-start;display:grid;gap:8px;grid-template-columns:auto 1fr;line-height:12px;word-break:break-all}.vm-chart-tooltip-data__marker{height:12px;width:12px}.vm-chart-tooltip-info{grid-gap:4px;display:grid;word-break:break-all}.vm-legend-item{grid-gap:8px;align-items:start;background-color:var(--color-background-block);cursor:pointer;display:grid;grid-template-columns:auto auto;justify-content:start;margin-bottom:8px;padding:8px;transition:.2s ease}.vm-legend-item:hover{background-color:rgba(0,0,0,.1)}.vm-legend-item_hide{opacity:.5;text-decoration:line-through}.vm-legend-item__marker{border-radius:2px;box-sizing:border-box;height:14px;transition:.2s ease;width:14px}.vm-legend-item-info{font-weight:400;word-break:break-all}.vm-legend-item-info__label{margin-right:2px}.vm-legend-item-info__free-fields{cursor:pointer;padding:2px}.vm-legend-item-info__free-fields:hover{text-decoration:underline}.vm-legend-item-values{align-items:center;display:flex;gap:8px;grid-column:2}.vm-legend{cursor:default;display:flex;flex-wrap:wrap;margin-top:24px;position:relative}.vm-legend-group{margin:0 16px 16px 0;min-width:23%;width:100%}.vm-legend-group-title{align-items:center;border-bottom:var(--border-divider);display:flex;margin-bottom:1px;padding:8px}.vm-legend-group-title__count{font-weight:700;margin-right:8px}.vm-graph-view{width:100%}.vm-graph-view_full-width{width:calc(100vw - 96px - var(--scrollbar-width))}@media(max-width:768px){.vm-graph-view_full-width{width:calc(100vw - 48px - var(--scrollbar-width))}}.vm-graph-view_full-width_mobile{width:calc(100vw - 32px - var(--scrollbar-width))}.vm-autocomplete{max-height:300px;overflow:auto;overscroll-behavior:none}.vm-autocomplete_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-autocomplete__no-options{color:var(--color-text-disabled);padding:16px;text-align:center}.vm-query-editor-autocomplete{max-height:300px;overflow:auto}.vm-additional-settings{align-items:center;display:inline-flex;flex-wrap:wrap;gap:16px;justify-content:flex-start}.vm-additional-settings__input{flex-basis:160px;margin-bottom:-6px}.vm-additional-settings_mobile{grid-gap:24px;align-items:flex-start;display:grid;gap:24px;grid-template-columns:1fr;padding:0 16px;width:100%}.vm-switch{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;-webkit-user-select:none;user-select:none}.vm-switch_full-width{flex-direction:row-reverse;justify-content:space-between}.vm-switch_full-width .vm-switch__label{margin-left:0}.vm-switch_disabled{cursor:default;opacity:.6}.vm-switch_secondary_active .vm-switch-track{background-color:var(--color-secondary)}.vm-switch_primary_active .vm-switch-track{background-color:var(--color-primary)}.vm-switch_active .vm-switch-track__thumb{left:20px}.vm-switch:hover .vm-switch-track{opacity:.8}.vm-switch-track{align-items:center;background-color:hsla(0,6%,6%,.4);border-radius:17px;display:flex;height:17px;justify-content:flex-start;padding:3px;position:relative;transition:background-color .2s ease,opacity .3s ease-out;width:34px}.vm-switch-track__thumb{background-color:var(--color-background-block);border-radius:50%;left:3px;min-height:11px;min-width:11px;position:absolute;top:auto;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;transition:right .2s ease-out,left .2s ease-out}.vm-switch__label{color:inherit;font-size:inherit;margin-left:8px;transition:color .2s ease;white-space:nowrap}.vm-query-configurator{grid-gap:16px;display:grid;gap:16px}.vm-query-configurator-list{display:grid}.vm-query-configurator-list-row{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto auto}.vm-query-configurator-list-row_mobile{gap:4px}.vm-query-configurator-list-row_disabled{-webkit-filter:grayscale(100%);filter:grayscale(100%);opacity:.5}.vm-query-configurator-list-row__button{display:grid;min-height:36px;width:36px}.vm-query-configurator-settings{align-items:center;display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between}.vm-query-configurator-settings__buttons{grid-gap:8px;display:grid;flex-grow:1;gap:8px;grid-template-columns:repeat(2,auto);justify-content:flex-end}.vm-json-view__copy{display:flex;justify-content:flex-end;position:-webkit-sticky;position:sticky;top:0;z-index:2}.vm-json-view__code{font-size:12px;line-height:1.4;-webkit-transform:translateY(-32px);transform:translateY(-32px);white-space:pre-wrap}.vm-axes-limits{grid-gap:16px;align-items:center;display:grid;gap:16px;max-width:300px}.vm-axes-limits_mobile{gap:24px;max-width:100%;width:100%}.vm-axes-limits_mobile .vm-axes-limits-list__inputs{grid-template-columns:repeat(2,1fr)}.vm-axes-limits-list{grid-gap:16px;align-items:center;display:grid;gap:16px}.vm-axes-limits-list__inputs{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(2,120px)}.vm-graph-settings-popper{grid-gap:16px;display:grid;gap:16px;padding:0 0 16px}.vm-graph-settings-popper__body{grid-gap:8px;display:grid;gap:8px;padding:0 16px}.vm-spinner{align-items:center;-webkit-animation:vm-fade 2s cubic-bezier(.28,.84,.42,1.1);animation:vm-fade 2s cubic-bezier(.28,.84,.42,1.1);background-color:hsla(0,0%,100%,.5);bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:99}.vm-spinner_dark{background-color:hsla(0,6%,6%,.2)}.vm-spinner__message{color:rgba(var(--color-text),.9);font-size:14px;line-height:1.3;margin-top:24px;text-align:center;white-space:pre-line}.half-circle-spinner,.half-circle-spinner *{box-sizing:border-box}.half-circle-spinner{border-radius:100%;height:60px;position:relative;width:60px}.half-circle-spinner .circle{border:6px solid transparent;border-radius:100%;content:"";height:100%;position:absolute;width:100%}.half-circle-spinner .circle.circle-1{-webkit-animation:half-circle-spinner-animation 1s infinite;animation:half-circle-spinner-animation 1s infinite;border-top-color:var(--color-primary)}.half-circle-spinner .circle.circle-2{-webkit-animation:half-circle-spinner-animation 1s infinite alternate;animation:half-circle-spinner-animation 1s infinite alternate;border-bottom-color:var(--color-primary)}@-webkit-keyframes half-circle-spinner-animation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes half-circle-spinner-animation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes vm-fade{0%{opacity:0}to{opacity:1}}@keyframes vm-fade{0%{opacity:0}to{opacity:1}}.vm-tracings-view{grid-gap:24px;display:grid;gap:24px}.vm-tracings-view-trace-header{align-items:center;border-bottom:var(--border-divider);display:flex;justify-content:space-between;padding:8px 8px 8px 24px}.vm-tracings-view-trace-header-title{flex-grow:1;font-size:14px;margin-right:8px}.vm-tracings-view-trace-header-title__query{font-weight:700}.vm-tracings-view-trace__nav{padding:24px 24px 24px 0}.vm-tracings-view-trace__nav_mobile{padding:8px 8px 8px 0}.vm-line-progress{grid-gap:8px;align-items:center;color:var(--color-text-secondary);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:center}.vm-line-progress-track{background-color:var(--color-hover-black);border-radius:4px;height:20px;width:100%}.vm-line-progress-track__thumb{background-color:#1a90ff;border-radius:4px;height:100%}.vm-nested-nav{background-color:rgba(201,227,246,.4);border-radius:4px;margin-left:24px}.vm-nested-nav_mobile{margin-left:8px}.vm-nested-nav_dark{background-color:hsla(0,6%,6%,.1)}.vm-nested-nav-header{grid-gap:8px;border-radius:4px;cursor:pointer;display:grid;gap:8px;grid-template-columns:auto 1fr;padding:8px;transition:background-color .2s ease-in-out}.vm-nested-nav-header:hover{background-color:var(--color-hover-black)}.vm-nested-nav-header__icon{align-items:center;display:flex;justify-content:center;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;width:20px}.vm-nested-nav-header__icon_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-nested-nav-header__message,.vm-nested-nav-header__progress{grid-column:2}.vm-nested-nav-header__duration{color:var(--color-text-secondary);grid-column:2}.vm-json-form{grid-gap:16px;display:grid;gap:16px;grid-template-rows:auto calc(var(--vh)*70 - 150px) auto;max-height:900px;max-width:1000px;overflow:hidden;width:70vw}.vm-json-form_mobile{grid-template-rows:auto calc(var(--vh)*100 - 248px) auto;min-height:100%;width:100%}.vm-json-form_one-field{grid-template-rows:calc(var(--vh)*70 - 150px) auto}.vm-json-form_one-field_mobile{grid-template-rows:calc(var(--vh)*100 - 192px) auto}.vm-json-form textarea{height:100%;max-height:900px;overflow:auto;width:100%}.vm-json-form-footer{align-items:center;display:flex;gap:8px;justify-content:space-between}@media(max-width:500px){.vm-json-form-footer{flex-direction:column}.vm-json-form-footer button{flex-grow:1}}.vm-json-form-footer__controls{align-items:center;display:flex;flex-grow:1;gap:8px;justify-content:flex-start}@media(max-width:500px){.vm-json-form-footer__controls{grid-template-columns:repeat(2,1fr);justify-content:center;width:100%}}.vm-json-form-footer__controls_right{display:grid;grid-template-columns:repeat(2,90px);justify-content:flex-end}@media(max-width:500px){.vm-json-form-footer__controls_right{grid-template-columns:repeat(2,1fr);justify-content:center;width:100%}}.vm-table-settings-popper{display:grid;min-width:250px}.vm-table-settings-popper_mobile .vm-table-settings-popper-list{gap:16px}.vm-table-settings-popper_mobile .vm-table-settings-popper-list:first-child{padding-top:0}.vm-table-settings-popper-list{grid-gap:8px;border-bottom:var(--border-divider);display:grid;gap:8px;max-height:350px;overflow:auto;padding:16px}.vm-table-settings-popper-list_first{padding-top:0}.vm-table-settings-popper-list-header{align-items:center;display:grid;grid-template-columns:1fr auto;justify-content:space-between;min-height:25px}.vm-table-settings-popper-list-header__title{font-weight:700}.vm-table-settings-popper-list__item{font-size:12px;text-transform:capitalize}.vm-checkbox{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;-webkit-user-select:none;user-select:none}.vm-checkbox_disabled{cursor:default;opacity:.6}.vm-checkbox_secondary_active .vm-checkbox-track{background-color:var(--color-secondary)}.vm-checkbox_secondary .vm-checkbox-track{border:1px solid var(--color-secondary)}.vm-checkbox_primary_active .vm-checkbox-track{background-color:var(--color-primary)}.vm-checkbox_primary .vm-checkbox-track{border:1px solid var(--color-primary)}.vm-checkbox_active .vm-checkbox-track__thumb{-webkit-transform:scale(1);transform:scale(1)}.vm-checkbox:hover .vm-checkbox-track{opacity:.8}.vm-checkbox-track{align-items:center;background-color:transparent;border-radius:4px;display:flex;height:16px;justify-content:center;padding:2px;position:relative;transition:background-color .2s ease,opacity .3s ease-out;width:16px}.vm-checkbox-track__thumb{align-items:center;color:#fff;display:grid;height:12px;justify-content:center;-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .1s ease-in-out;transition:transform .1s ease-in-out;transition:transform .1s ease-in-out,-webkit-transform .1s ease-in-out;width:12px}.vm-checkbox__label{color:inherit;font-size:inherit;margin-left:8px;transition:color .2s ease;white-space:nowrap}.vm-custom-panel{grid-gap:24px;align-items:flex-start;display:grid;gap:24px;grid-template-columns:100%;height:100%}.vm-custom-panel_mobile{gap:8px}.vm-custom-panel__warning{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between}.vm-custom-panel__warning_mobile{grid-template-columns:1fr}.vm-custom-panel-body{position:relative}.vm-custom-panel-body-header{align-items:center;border-bottom:var(--border-divider);display:flex;font-size:10px;justify-content:space-between;margin:-24px -24px 24px;padding:0 24px;position:relative;z-index:1}.vm-custom-panel-body_mobile .vm-custom-panel-body-header{margin:-16px -16px 16px;padding:0 16px}.vm-table-view{margin-top:-24px;max-width:100%;overflow:auto}.vm-table-view_mobile{margin-top:-16px}.vm-table-view table{margin-top:0}.vm-predefined-panel-header{grid-gap:8px;align-items:center;border-bottom:var(--border-divider);display:grid;gap:8px;grid-template-columns:auto 1fr auto;justify-content:flex-start;padding:8px 16px}.vm-predefined-panel-header__description{line-height:1.3;white-space:pre-wrap}.vm-predefined-panel-header__description ol,.vm-predefined-panel-header__description ul{list-style-position:inside}.vm-predefined-panel-header__description a{color:#c9e3f6;text-decoration:underline}.vm-predefined-panel-header__info{align-items:center;color:var(--color-primary);display:flex;justify-content:center;width:18px}.vm-predefined-panel-body{min-height:500px;padding:8px 16px}@media(max-width:500px){.vm-predefined-panel-body{padding:0}}.vm-predefined-dashboard{background-color:transparent}.vm-predefined-dashboard-header{align-items:center;border-radius:4px;box-shadow:var(--box-shadow);display:grid;font-weight:700;grid-template-columns:1fr auto;justify-content:space-between;line-height:14px;overflow:hidden;padding:16px;position:relative;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;transition:box-shadow .2s ease-in-out}.vm-predefined-dashboard-header_open{border-radius:4px 4px 0 0;box-shadow:none}.vm-predefined-dashboard-header__title{font-size:12px}.vm-predefined-dashboard-header__count{font-size:10px;grid-column:2;margin-right:30px}.vm-predefined-dashboard-panels{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(12,1fr);padding:0}@media(max-width:1000px){.vm-predefined-dashboard-panels{grid-template-columns:1fr}}.vm-predefined-dashboard-panels-panel{border-radius:8px;overflow:hidden;position:relative}.vm-predefined-dashboard-panels-panel:hover .vm-predefined-dashboard-panels-panel__resizer{-webkit-transform:scale(1);transform:scale(1)}.vm-predefined-dashboard-panels-panel__resizer{bottom:0;cursor:se-resize;height:20px;position:absolute;right:0;-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;width:20px;z-index:1}.vm-predefined-dashboard-panels-panel__resizer:after{border-bottom:2px solid hsla(0,6%,6%,.2);border-right:2px solid hsla(0,6%,6%,.2);bottom:5px;content:"";height:5px;position:absolute;right:5px;width:5px}.vm-predefined-dashboard-panels-panel__alert{grid-column:span 12}.vm-predefined-panels{grid-gap:16px;align-items:flex-start;display:grid;gap:16px}@media(max-width:768px){.vm-predefined-panels{padding:24px 0}}@media(max-width:500px){.vm-predefined-panels{padding:8px 0}}.vm-predefined-panels-tabs{align-items:center;display:flex;flex-wrap:wrap;font-size:10px;gap:8px;justify-content:flex-start;overflow:hidden}@media(max-width:768px){.vm-predefined-panels-tabs{padding:0 16px}}.vm-predefined-panels-tabs__tab{background:var(--color-background-block);border:1px solid hsla(0,6%,6%,.2);border-radius:8px;color:var(--color-text-secondary);cursor:pointer;padding:8px 16px;text-align:center;text-transform:uppercase;transition:background .2s ease-in-out,color .15s ease-in}@media(max-width:500px){.vm-predefined-panels-tabs__tab{flex-grow:1}}.vm-predefined-panels-tabs__tab:hover{color:var(--color-primary)}.vm-predefined-panels-tabs__tab_active{border-color:var(--color-primary);color:var(--color-primary)}.vm-predefined-panels__dashboards{grid-gap:16px;display:grid;gap:16px}.vm-cardinality-configurator{grid-gap:8px;display:grid;gap:8px}.vm-cardinality-configurator-controls{align-items:center;display:flex;flex-wrap:wrap;gap:0 24px;justify-content:flex-start}.vm-cardinality-configurator-controls__query{flex-grow:8}.vm-cardinality-configurator-controls__item{flex-grow:1}.vm-cardinality-configurator-additional{align-items:center;display:flex;margin-bottom:8px}.vm-cardinality-configurator-bottom{flex-wrap:wrap}.vm-cardinality-configurator-bottom,.vm-cardinality-configurator-bottom__docs{align-items:center;display:flex;gap:16px}.vm-cardinality-configurator-bottom_mobile .vm-cardinality-configurator-bottom__docs{justify-content:space-between}.vm-cardinality-configurator-bottom__info{flex-grow:1;font-size:12px}.vm-cardinality-configurator-bottom a{color:var(--color-text-secondary)}.vm-cardinality-configurator-bottom button{margin:0 0 0 auto}.vm-cardinality-configurator-bottom_mobile{display:grid;grid-template-columns:1fr}.vm-cardinality-configurator-bottom_mobile button{margin:0}.u-legend{color:var(--color-text);font-family:Lato,sans-serif;font-size:14px}.u-legend .u-thead{display:none}.u-legend .u-series{display:flex;gap:8px}.u-legend .u-series th{display:none}.u-legend .u-series td:nth-child(2):after{content:":";margin-left:8px}.u-legend .u-series .u-value{display:block;padding:0;text-align:left}.vm-metrics-content-header{margin:-24px -24px 0}.vm-metrics-content_mobile .vm-metrics-content-header{margin:-16px -16px 0}.vm-metrics-content__table{overflow:auto;padding-top:24px;width:calc(100vw - 96px - var(--scrollbar-width))}@media(max-width:768px){.vm-metrics-content__table{width:calc(100vw - 48px - var(--scrollbar-width))}}.vm-metrics-content__table_mobile{width:calc(100vw - 32px - var(--scrollbar-width))}.vm-metrics-content__table .vm-table-cell_header{white-space:nowrap}.vm-metrics-content_mobile .vm-metrics-content__table{width:calc(100vw - 32px - var(--scrollbar-width))}.vm-cardinality-panel{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}.vm-cardinality-panel_mobile{gap:8px}.vm-top-queries-panel-header{margin:-24px -24px 0}.vm-top-queries-panel-header_mobile{margin:-16px -16px 0}.vm-top-queries-panel__table{overflow:auto;padding-top:24px;width:calc(100vw - 96px - var(--scrollbar-width))}@media(max-width:768px){.vm-top-queries-panel__table{width:calc(100vw - 48px - var(--scrollbar-width))}}.vm-top-queries-panel__table_mobile{width:calc(100vw - 32px - var(--scrollbar-width))}.vm-top-queries-panel__table .vm-table-cell_header{white-space:nowrap}.vm-top-queries{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}.vm-top-queries_mobile{gap:8px}.vm-top-queries-controls{grid-gap:8px;display:grid;gap:8px}.vm-top-queries-controls-fields{align-items:center;display:flex;flex-wrap:wrap;gap:24px}.vm-top-queries-controls-fields__item{flex-grow:1;min-width:200px}.vm-top-queries-controls-bottom{grid-gap:24px;align-items:flex-end;display:grid;gap:24px;grid-template-columns:1fr auto;justify-content:space-between}.vm-top-queries-controls-bottom_mobile{gap:8px;grid-template-columns:1fr}.vm-top-queries-controls-bottom__button{align-items:center;display:flex;justify-content:flex-end}.vm-top-queries-panels{grid-gap:24px;display:grid;gap:24px}.vm-trace-page{display:flex;flex-direction:column;min-height:100%}@media(max-width:768px){.vm-trace-page{padding:24px 0}}.vm-trace-page-controls{grid-gap:16px;align-items:center;display:grid;gap:16px;grid-template-columns:1fr 1fr;justify-content:center}.vm-trace-page-header{grid-gap:16px;align-items:start;display:grid;gap:16px;grid-template-columns:1fr auto;margin-bottom:24px}@media(max-width:768px){.vm-trace-page-header{grid-template-columns:1fr;padding:0 24px}}.vm-trace-page-header-errors{grid-gap:24px;align-items:flex-start;display:grid;gap:24px;grid-template-columns:1fr;justify-content:stretch}@media(max-width:768px){.vm-trace-page-header-errors{grid-row:2}}.vm-trace-page-header-errors-item{align-items:center;display:grid;justify-content:stretch;position:relative}.vm-trace-page-header-errors-item__filename{min-height:20px}.vm-trace-page-header-errors-item__close{position:absolute;right:8px;top:auto;z-index:2}.vm-trace-page-preview{align-items:center;display:flex;flex-direction:column;flex-grow:1;justify-content:center}.vm-trace-page-preview__text{font-size:14px;line-height:1.8;margin-bottom:16px;text-align:center;white-space:pre-line}.vm-explore-metrics{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}@media(max-width:500px){.vm-explore-metrics{gap:8px}}.vm-explore-metrics-body{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}@media(max-width:500px){.vm-explore-metrics-body{gap:8px}}.vm-explore-metrics-graph,.vm-explore-metrics-graph_mobile{padding:0 16px 16px}.vm-explore-metrics-graph__warning{align-items:center;display:grid;grid-template-columns:1fr auto;justify-content:space-between}.vm-explore-metrics-item-header{grid-gap:16px;align-items:center;border-bottom:var(--border-divider);display:grid;gap:16px;grid-template-columns:auto 1fr auto auto;justify-content:flex-start;padding:16px}.vm-explore-metrics-item-header_mobile{grid-template-columns:1fr auto;padding:8px 16px}.vm-explore-metrics-item-header__index{color:var(--color-text-secondary);font-size:10px}.vm-explore-metrics-item-header__name{flex-grow:1;font-weight:700;line-height:130%;max-width:100%;overflow:hidden;text-overflow:ellipsis}.vm-explore-metrics-item-header-order{align-items:center;display:grid;grid-column:1;grid-template-columns:auto 20px auto;justify-content:flex-start;text-align:center}.vm-explore-metrics-item-header-order__up{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-explore-metrics-item-header__rate{grid-column:3}.vm-explore-metrics-item-header__close{align-items:center;display:grid;grid-column:4;grid-row:1}.vm-explore-metrics-item-header code{background-color:var(--color-hover-black);border-radius:6px;font-size:85%;padding:.2em .4em}.vm-explore-metrics-item-header-modal{grid-gap:24px;align-items:flex-start;display:grid;gap:24px}.vm-explore-metrics-item-header-modal-order{align-items:center;display:flex;gap:24px;justify-content:space-between}.vm-explore-metrics-item-header-modal-order p{align-items:center;display:flex}.vm-explore-metrics-item-header-modal-order__index{margin-left:4px}.vm-explore-metrics-item-header-modal__rate{grid-gap:8px;display:grid;gap:8px}.vm-explore-metrics-item-header-modal__rate p{color:var(--color-text-secondary)}.vm-explore-metrics-item{position:relative}.vm-select-input{align-items:center;border:var(--border-divider);border-radius:4px;cursor:pointer;display:flex;justify-content:space-between;min-height:36px;padding:5px 0 5px 16px;position:relative}.vm-select-input-content{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-start;max-width:calc(100% - 77px);width:100%}.vm-select-input-content_mobile{flex-wrap:nowrap}.vm-select-input-content__counter{font-size:12px;line-height:12px}.vm-select-input-content__selected{align-items:center;background-color:var(--color-hover-black);border-radius:4px;display:inline-flex;font-size:12px;justify-content:center;line-height:12px;max-width:100%;padding:2px 2px 2px 6px}.vm-select-input-content__selected span{overflow:hidden;text-overflow:ellipsis;width:100%}.vm-select-input-content__selected svg{align-items:center;background-color:transparent;border-radius:4px;display:flex;justify-content:center;margin-left:10px;padding:4px;transition:background-color .2s ease-in-out;width:20px}.vm-select-input-content__selected svg:hover{background-color:hsla(0,6%,6%,.1)}.vm-select-input input{background-color:transparent;border:none;border-radius:4px;color:var(--color-text);display:inline-block;flex-grow:1;font-size:12px;height:18px;line-height:18px;min-width:100px;padding:0;position:relative;z-index:2}.vm-select-input input:placeholder-shown{width:auto}.vm-select-input__icon{align-items:center;border-right:var(--border-divider);color:var(--color-text-secondary);cursor:pointer;display:inline-flex;justify-content:flex-end;padding:0 8px;transition:opacity .2s ease-in,-webkit-transform .2s ease-in;transition:transform .2s ease-in,opacity .2s ease-in;transition:transform .2s ease-in,opacity .2s ease-in,-webkit-transform .2s ease-in}.vm-select-input__icon:last-child{border:none}.vm-select-input__icon svg{width:14px}.vm-select-input__icon_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-select-input__icon:hover{opacity:.7}.vm-select-options{grid-gap:8px;display:grid;font-size:12px;gap:8px;max-height:208px;max-width:300px;overflow:auto;padding:16px}.vm-select-options_mobile{max-height:calc(var(--vh)*100 - 70px);max-width:100%;padding:0 16px 8px}.vm-explore-metrics-header{align-items:center;display:flex;flex-wrap:wrap;gap:16px 18px;justify-content:flex-start;max-width:calc(100vw - var(--scrollbar-width))}.vm-explore-metrics-header_mobile{align-items:stretch;flex-direction:column}.vm-explore-metrics-header__job{flex-grow:1;min-width:150px}.vm-explore-metrics-header__instance{flex-grow:2;min-width:150px}.vm-explore-metrics-header__size{flex-grow:1;min-width:150px}.vm-explore-metrics-header-metrics{flex-grow:1;width:100%}.vm-explore-metrics-header__clear-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:2px}.vm-explore-metrics-header__clear-icon:hover{opacity:.7}.vm-preview-icons{grid-gap:16px;align-items:flex-start;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,100px);justify-content:center}.vm-preview-icons-item{grid-gap:8px;align-items:stretch;border:1px solid transparent;border-radius:4px;cursor:pointer;display:grid;gap:8px;grid-template-rows:1fr auto;height:100px;justify-content:center;padding:16px 8px;transition:box-shadow .2s ease-in-out}.vm-preview-icons-item:hover{box-shadow:0 1px 4px rgba(0,0,0,.16)}.vm-preview-icons-item:active .vm-preview-icons-item__svg{-webkit-transform:scale(.9);transform:scale(.9)}.vm-preview-icons-item__name{font-size:10px;line-height:2;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.vm-preview-icons-item__svg{align-items:center;display:flex;height:100%;justify-content:center;transition:-webkit-transform .1s ease-out;transition:transform .1s ease-out;transition:transform .1s ease-out,-webkit-transform .1s ease-out}.vm-preview-icons-item__svg svg{height:24px;width:auto}#root,body,html{background-attachment:fixed;background-color:#fefeff;background-color:var(--color-background-body);background-repeat:no-repeat;color:#110f0f;color:var(--color-text);cursor:default;font-family:Lato,sans-serif;font-size:12px;margin:0;min-height:100%}body{overflow:auto}*{-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:inherit;font:inherit;touch-action:pan-x pan-y}code{font-family:monospace}b{font-weight:700}input,textarea{cursor:text}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{-webkit-user-select:none;user-select:none}input::placeholder,textarea::placeholder{-webkit-user-select:none;user-select:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.vm-snackbar{bottom:16px;left:16px;position:fixed;z-index:999}.vm-snackbar-content{align-items:center;display:grid;grid-template-columns:1fr auto}.vm-snackbar-content__close{color:inherit;height:24px;opacity:.8;padding:4px;width:24px}.vm-snackbar_mobile{-webkit-animation:vm-slide-snackbar .15s cubic-bezier(.28,.84,.42,1.1);animation:vm-slide-snackbar .15s cubic-bezier(.28,.84,.42,1.1);bottom:0;left:0;right:0}@-webkit-keyframes vm-slide-snackbar{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes vm-slide-snackbar{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}svg{width:100%}*{scrollbar-color:#a09f9f #fff;scrollbar-color:var(--color-text-disabled) var(--color-background-block);scrollbar-width:thin}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#fff;background:var(--color-background-block)}::-webkit-scrollbar-thumb{background-color:#a09f9f;background-color:var(--color-text-disabled);border:3px solid #fff;border:3px solid var(--color-background-block);border-radius:20px}a,abbr,acronym,address,applet,article,aside,audio,big,body,canvas,caption,center,cite,code,del,details,dfn,div,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;margin:0;padding:0;vertical-align:initial}h1,h2,h3,h4,h5,h6{font-weight:400}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}q:after,q:before{content:""}table{border-collapse:collapse;border-spacing:0}input::-webkit-input-placeholder{opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}input::placeholder{opacity:1;transition:opacity .3s ease}input:focus::-webkit-input-placeholder{opacity:0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}input:focus::placeholder{opacity:0;transition:opacity .3s ease}*{box-sizing:border-box;outline:none}button{background:none;border:none;border-radius:0;padding:0}strong{letter-spacing:1px}input[type=file]{cursor:pointer;font-size:0;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}input[type=file]:disabled{cursor:not-allowed}a{color:inherit;text-decoration:inherit}input,textarea{-webkit-text-fill-color:inherit;appearance:none;-webkit-appearance:none}input:disabled,textarea:disabled{opacity:1!important}input:placeholder-shown,textarea:placeholder-shown{width:100%}input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-box-shadow:inset 0 0 0 0 #fff!important;width:100%;z-index:2}@font-face{font-family:Lato;font-style:normal;font-weight:400;src:url(../../static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf)}@font-face{font-family:Lato;font-style:normal;font-weight:700;src:url(../../static/media/Lato-Bold.32360ba4b57802daa4d6.ttf)}.vm-header-button{border:1px solid hsla(0,6%,6%,.2)}.vm-list-item{background-color:transparent;cursor:pointer;padding:12px 16px;transition:background-color .2s ease}.vm-list-item_mobile{padding:16px}.vm-list-item:hover,.vm-list-item_active{background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-list-item_multiselect{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:10px 1fr;justify-content:flex-start}.vm-list-item_multiselect svg{-webkit-animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);animation:vm-scale .15s cubic-bezier(.28,.84,.42,1)}.vm-list-item_multiselect span{grid-column:2}.vm-list-item_multiselect_selected{color:#3f51b5;color:var(--color-primary)}.vm-mobile-option{align-items:center;display:flex;gap:8px;justify-content:flex-start;padding:12px 0;-webkit-user-select:none;user-select:none;width:100%}.vm-mobile-option__arrow,.vm-mobile-option__icon{align-items:center;display:flex;justify-content:center}.vm-mobile-option__icon{color:#3f51b5;color:var(--color-primary);height:22px;width:22px}.vm-mobile-option__arrow{color:#3f51b5;color:var(--color-primary);height:14px;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);width:14px}.vm-mobile-option-text{grid-gap:2px;align-items:center;display:grid;flex-grow:1;gap:2px}.vm-mobile-option-text__label{font-weight:700}.vm-mobile-option-text__value{color:#706f6f;color:var(--color-text-secondary);font-size:10px}.vm-block{background-color:#fff;background-color:var(--color-background-block);border-radius:8px;box-shadow:1px 2px 6px rgba(0,0,0,.08);box-shadow:var(--box-shadow);padding:24px}.vm-block_mobile{border-radius:0;padding:16px}.vm-block_empty-padding{padding:0}.vm-section-header{align-items:center;border-bottom:1px solid rgba(0,0,0,.15);border-bottom:var(--border-divider);border-radius:8px 8px 0 0;display:grid;grid-template-columns:1fr auto;justify-content:center;padding:0 24px}.vm-section-header__title{font-size:12px;font-weight:700}.vm-section-header__title_mobile{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.vm-section-header__tabs{align-items:center;display:flex;font-size:10px;justify-content:flex-start}.vm-table{border-collapse:initial;border-spacing:0;margin-top:-24px;width:100%}.vm-table,.vm-table__row{background-color:#fff;background-color:var(--color-background-block)}.vm-table__row{transition:background-color .2s ease}.vm-table__row:hover:not(.vm-table__row_header){background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-table__row_header{position:relative;z-index:2}.vm-table__row_selected{background-color:rgba(26,144,255,.05)}.vm-table-cell{border-bottom:1px solid rgba(0,0,0,.15);border-bottom:var(--border-divider);height:40px;line-height:25px;padding:8px;vertical-align:top}.vm-table-cell__content{align-items:center;display:flex;justify-content:flex-start}.vm-table-cell_sort{cursor:pointer}.vm-table-cell_sort:hover{background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-table-cell_header{font-weight:700;text-align:left;text-transform:capitalize}.vm-table-cell_gray{color:#110f0f;color:var(--color-text);opacity:.4}.vm-table-cell_right{text-align:right}.vm-table-cell_right .vm-table-cell__content{justify-content:flex-end}.vm-table-cell_no-wrap{white-space:nowrap}.vm-table__sort-icon{align-items:center;display:flex;justify-content:center;margin:0 8px;opacity:.4;transition:opacity .2s ease,-webkit-transform .2s ease-in-out;transition:opacity .2s ease,transform .2s ease-in-out;transition:opacity .2s ease,transform .2s ease-in-out,-webkit-transform .2s ease-in-out;width:15px}.vm-table__sort-icon_active{opacity:1}.vm-table__sort-icon_desc{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-link{cursor:pointer;transition:color .2s ease}.vm-link_colored{color:#3f51b5;color:var(--color-primary)}.vm-link_with-icon{grid-gap:6px;align-items:center;display:grid;gap:6px;grid-template-columns:14px auto;justify-content:center}.vm-link:hover{color:#3f51b5;color:var(--color-primary);text-decoration:underline}:root{--color-primary:#3f51b5;--color-secondary:#e91e63;--color-error:#fd080e;--color-warning:#ff8308;--color-info:#03a9f4;--color-success:#4caf50;--color-primary-text:#fff;--color-secondary-text:#fff;--color-error-text:#fff;--color-warning-text:#fff;--color-info-text:#fff;--color-success-text:#fff;--color-background-body:#fefeff;--color-background-block:#fff;--color-background-tooltip:rgba(97,97,97,.92);--color-text:#110f0f;--color-text-secondary:#706f6f;--color-text-disabled:#a09f9f;--box-shadow:rgba(0,0,0,.08) 1px 2px 6px;--box-shadow-popper:rgba(0,0,0,.1) 0px 2px 8px 0px;--border-divider:1px solid rgba(0,0,0,.15);--color-hover-black:rgba(0,0,0,.06)} \ No newline at end of file diff --git a/app/vmselect/vmui/static/js/main.1be8603e.js b/app/vmselect/vmui/static/js/main.1be8603e.js new file mode 100644 index 0000000000..fca600df71 --- /dev/null +++ b/app/vmselect/vmui/static/js/main.1be8603e.js @@ -0,0 +1,2 @@ +/*! For license information please see main.1be8603e.js.LICENSE.txt */ +!function(){var e={680:function(e,t,n){"use strict";var r=n(476),i=n(962),o=i(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"===typeof n&&o(e,".prototype.")>-1?i(n):n}},962:function(e,t,n){"use strict";var r=n(199),i=n(476),o=i("%Function.prototype.apply%"),a=i("%Function.prototype.call%"),u=i("%Reflect.apply%",!0)||r.call(a,o),l=i("%Object.getOwnPropertyDescriptor%",!0),c=i("%Object.defineProperty%",!0),s=i("%Math.max%");if(c)try{c({},"a",{value:1})}catch(d){c=null}e.exports=function(e){var t=u(r,a,arguments);if(l&&c){var n=l(t,"length");n.configurable&&c(t,"length",{value:1+s(0,e.length-(arguments.length-1))})}return t};var f=function(){return u(r,o,arguments)};c?c(e.exports,"apply",{value:f}):e.exports.apply=f},123:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var a=i.apply(null,n);a&&e.push(a)}}else if("object"===o){if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]")){e.push(n.toString());continue}for(var u in n)r.call(n,u)&&n[u]&&e.push(u)}}}return e.join(" ")}e.exports?(i.default=i,e.exports=i):void 0===(n=function(){return i}.apply(t,[]))||(e.exports=n)}()},658:function(e){e.exports=function(){"use strict";var e=1e3,t=6e4,n=36e5,r="millisecond",i="second",o="minute",a="hour",u="day",l="week",c="month",s="quarter",f="year",d="date",h="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},g=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},y={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(i,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(r,c),o=n-i<0,a=t.clone().add(r+(o?-1:1),c);return+(-(r+(n-i)/(o?i-a:a-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:c,y:f,w:l,d:u,D:d,h:a,m:o,s:i,ms:r,Q:s}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},_="en",b={};b[_]=m;var D=function(e){return e instanceof C},w=function e(t,n,r){var i;if(!t)return _;if("string"==typeof t){var o=t.toLowerCase();b[o]&&(i=o),n&&(b[o]=n,i=o);var a=t.split("-");if(!i&&a.length>1)return e(a[0])}else{var u=t.name;b[u]=t,i=u}return!r&&i&&(_=i),i||!r&&_},x=function(e,t){if(D(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new C(n)},k=y;k.l=w,k.i=D,k.w=function(e,t){return x(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var C=function(){function m(e){this.$L=w(e.locale,null,!0),this.parse(e)}var g=m.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(k.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(p);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return k},g.isValid=function(){return!(this.$d.toString()===h)},g.isSame=function(e,t){var n=x(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return x(e)<this.startOf(t)},g.isBefore=function(e,t){return this.endOf(t)<x(e)},g.$g=function(e,t,n){return k.u(e)?this[t]:this.set(n,e)},g.unix=function(){return Math.floor(this.valueOf()/1e3)},g.valueOf=function(){return this.$d.getTime()},g.startOf=function(e,t){var n=this,r=!!k.u(t)||t,s=k.p(e),h=function(e,t){var i=k.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return r?i:i.endOf(u)},p=function(e,t){return k.w(n.toDate()[e].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},v=this.$W,m=this.$M,g=this.$D,y="set"+(this.$u?"UTC":"");switch(s){case f:return r?h(1,0):h(31,11);case c:return r?h(1,m):h(0,m+1);case l:var _=this.$locale().weekStart||0,b=(v<_?v+7:v)-_;return h(r?g-b:g+(6-b),m);case u:case d:return p(y+"Hours",0);case a:return p(y+"Minutes",1);case o:return p(y+"Seconds",2);case i:return p(y+"Milliseconds",3);default:return this.clone()}},g.endOf=function(e){return this.startOf(e,!1)},g.$set=function(e,t){var n,l=k.p(e),s="set"+(this.$u?"UTC":""),h=(n={},n[u]=s+"Date",n[d]=s+"Date",n[c]=s+"Month",n[f]=s+"FullYear",n[a]=s+"Hours",n[o]=s+"Minutes",n[i]=s+"Seconds",n[r]=s+"Milliseconds",n)[l],p=l===u?this.$D+(t-this.$W):t;if(l===c||l===f){var v=this.clone().set(d,1);v.$d[h](p),v.init(),this.$d=v.set(d,Math.min(this.$D,v.daysInMonth())).$d}else h&&this.$d[h](p);return this.init(),this},g.set=function(e,t){return this.clone().$set(e,t)},g.get=function(e){return this[k.p(e)]()},g.add=function(r,s){var d,h=this;r=Number(r);var p=k.p(s),v=function(e){var t=x(h);return k.w(t.date(t.date()+Math.round(e*r)),h)};if(p===c)return this.set(c,this.$M+r);if(p===f)return this.set(f,this.$y+r);if(p===u)return v(1);if(p===l)return v(7);var m=(d={},d[o]=t,d[a]=n,d[i]=e,d)[p]||1,g=this.$d.getTime()+r*m;return k.w(g,this)},g.subtract=function(e,t){return this.add(-1*e,t)},g.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||h;var r=e||"YYYY-MM-DDTHH:mm:ssZ",i=k.z(this),o=this.$H,a=this.$m,u=this.$M,l=n.weekdays,c=n.months,s=function(e,n,i,o){return e&&(e[n]||e(t,r))||i[n].slice(0,o)},f=function(e){return k.s(o%12||12,e,"0")},d=n.meridiem||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r},p={YY:String(this.$y).slice(-2),YYYY:this.$y,M:u+1,MM:k.s(u+1,2,"0"),MMM:s(n.monthsShort,u,c,3),MMMM:s(c,u),D:this.$D,DD:k.s(this.$D,2,"0"),d:String(this.$W),dd:s(n.weekdaysMin,this.$W,l,2),ddd:s(n.weekdaysShort,this.$W,l,3),dddd:l[this.$W],H:String(o),HH:k.s(o,2,"0"),h:f(1),hh:f(2),a:d(o,a,!0),A:d(o,a,!1),m:String(a),mm:k.s(a,2,"0"),s:String(this.$s),ss:k.s(this.$s,2,"0"),SSS:k.s(this.$ms,3,"0"),Z:i};return r.replace(v,(function(e,t){return t||p[e]||i.replace(":","")}))},g.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},g.diff=function(r,d,h){var p,v=k.p(d),m=x(r),g=(m.utcOffset()-this.utcOffset())*t,y=this-m,_=k.m(this,m);return _=(p={},p[f]=_/12,p[c]=_,p[s]=_/3,p[l]=(y-g)/6048e5,p[u]=(y-g)/864e5,p[a]=y/n,p[o]=y/t,p[i]=y/e,p)[v]||y,h?_:k.a(_)},g.daysInMonth=function(){return this.endOf(c).$D},g.$locale=function(){return b[this.$L]},g.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=w(e,t,!0);return r&&(n.$L=r),n},g.clone=function(){return k.w(this.$d,this)},g.toDate=function(){return new Date(this.valueOf())},g.toJSON=function(){return this.isValid()?this.toISOString():null},g.toISOString=function(){return this.$d.toISOString()},g.toString=function(){return this.$d.toUTCString()},m}(),E=C.prototype;return x.prototype=E,[["$ms",r],["$s",i],["$m",o],["$H",a],["$W",u],["$M",c],["$y",f],["$D",d]].forEach((function(e){E[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),x.extend=function(e,t){return e.$i||(e(t,C,x),e.$i=!0),x},x.locale=w,x.isDayjs=D,x.unix=function(e){return x(1e3*e)},x.en=b[_],x.Ls=b,x.p={},x}()},446:function(e){e.exports=function(){"use strict";var e,t,n=1e3,r=6e4,i=36e5,o=864e5,a=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,l=2592e6,c=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,s={years:u,months:l,days:o,hours:i,minutes:r,seconds:n,milliseconds:1,weeks:6048e5},f=function(e){return e instanceof y},d=function(e,t,n){return new y(e,n,t.$l)},h=function(e){return t.p(e)+"s"},p=function(e){return e<0},v=function(e){return p(e)?Math.ceil(e):Math.floor(e)},m=function(e){return Math.abs(e)},g=function(e,t){return e?p(e)?{negative:!0,format:""+m(e)+t}:{negative:!1,format:""+e+t}:{negative:!1,format:""}},y=function(){function p(e,t,n){var r=this;if(this.$d={},this.$l=n,void 0===e&&(this.$ms=0,this.parseFromMilliseconds()),t)return d(e*s[h(t)],this);if("number"==typeof e)return this.$ms=e,this.parseFromMilliseconds(),this;if("object"==typeof e)return Object.keys(e).forEach((function(t){r.$d[h(t)]=e[t]})),this.calMilliseconds(),this;if("string"==typeof e){var i=e.match(c);if(i){var o=i.slice(2).map((function(e){return null!=e?Number(e):0}));return this.$d.years=o[0],this.$d.months=o[1],this.$d.weeks=o[2],this.$d.days=o[3],this.$d.hours=o[4],this.$d.minutes=o[5],this.$d.seconds=o[6],this.calMilliseconds(),this}}return this}var m=p.prototype;return m.calMilliseconds=function(){var e=this;this.$ms=Object.keys(this.$d).reduce((function(t,n){return t+(e.$d[n]||0)*s[n]}),0)},m.parseFromMilliseconds=function(){var e=this.$ms;this.$d.years=v(e/u),e%=u,this.$d.months=v(e/l),e%=l,this.$d.days=v(e/o),e%=o,this.$d.hours=v(e/i),e%=i,this.$d.minutes=v(e/r),e%=r,this.$d.seconds=v(e/n),e%=n,this.$d.milliseconds=e},m.toISOString=function(){var e=g(this.$d.years,"Y"),t=g(this.$d.months,"M"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var r=g(n,"D"),i=g(this.$d.hours,"H"),o=g(this.$d.minutes,"M"),a=this.$d.seconds||0;this.$d.milliseconds&&(a+=this.$d.milliseconds/1e3);var u=g(a,"S"),l=e.negative||t.negative||r.negative||i.negative||o.negative||u.negative,c=i.format||o.format||u.format?"T":"",s=(l?"-":"")+"P"+e.format+t.format+r.format+c+i.format+o.format+u.format;return"P"===s||"-P"===s?"P0D":s},m.toJSON=function(){return this.toISOString()},m.format=function(e){var n=e||"YYYY-MM-DDTHH:mm:ss",r={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return n.replace(a,(function(e,t){return t||String(r[e])}))},m.as=function(e){return this.$ms/s[h(e)]},m.get=function(e){var t=this.$ms,n=h(e);return"milliseconds"===n?t%=1e3:t="weeks"===n?v(t/s[n]):this.$d[n],0===t?0:t},m.add=function(e,t,n){var r;return r=t?e*s[h(t)]:f(e)?e.$ms:d(e,this).$ms,d(this.$ms+r*(n?-1:1),this)},m.subtract=function(e,t){return this.add(e,t,!0)},m.locale=function(e){var t=this.clone();return t.$l=e,t},m.clone=function(){return d(this.$ms,this)},m.humanize=function(t){return e().add(this.$ms,"ms").locale(this.$l).fromNow(!t)},m.milliseconds=function(){return this.get("milliseconds")},m.asMilliseconds=function(){return this.as("milliseconds")},m.seconds=function(){return this.get("seconds")},m.asSeconds=function(){return this.as("seconds")},m.minutes=function(){return this.get("minutes")},m.asMinutes=function(){return this.as("minutes")},m.hours=function(){return this.get("hours")},m.asHours=function(){return this.as("hours")},m.days=function(){return this.get("days")},m.asDays=function(){return this.as("days")},m.weeks=function(){return this.get("weeks")},m.asWeeks=function(){return this.as("weeks")},m.months=function(){return this.get("months")},m.asMonths=function(){return this.as("months")},m.years=function(){return this.get("years")},m.asYears=function(){return this.as("years")},p}();return function(n,r,i){e=i,t=i().$utils(),i.duration=function(e,t){var n=i.locale();return d(e,{$l:n},t)},i.isDuration=f;var o=r.prototype.add,a=r.prototype.subtract;r.prototype.add=function(e,t){return f(e)&&(e=e.asMilliseconds()),o.bind(this)(e,t)},r.prototype.subtract=function(e,t){return f(e)&&(e=e.asMilliseconds()),a.bind(this)(e,t)}}}()},443:function(e){e.exports=function(){"use strict";var e={year:0,month:1,day:2,hour:3,minute:4,second:5},t={};return function(n,r,i){var o,a=function(e,n,r){void 0===r&&(r={});var i=new Date(e),o=function(e,n){void 0===n&&(n={});var r=n.timeZoneName||"short",i=e+"|"+r,o=t[i];return o||(o=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:r}),t[i]=o),o}(n,r);return o.formatToParts(i)},u=function(t,n){for(var r=a(t,n),o=[],u=0;u<r.length;u+=1){var l=r[u],c=l.type,s=l.value,f=e[c];f>=0&&(o[f]=parseInt(s,10))}var d=o[3],h=24===d?0:d,p=o[0]+"-"+o[1]+"-"+o[2]+" "+h+":"+o[4]+":"+o[5]+":000",v=+t;return(i.utc(p).valueOf()-(v-=v%1e3))/6e4},l=r.prototype;l.tz=function(e,t){void 0===e&&(e=o);var n=this.utcOffset(),r=this.toDate(),a=r.toLocaleString("en-US",{timeZone:e}),u=Math.round((r-new Date(a))/1e3/60),l=i(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(r.getTimezoneOffset()/15)-u,!0);if(t){var c=l.utcOffset();l=l.add(n-c,"minute")}return l.$x.$timezone=e,l},l.offsetName=function(e){var t=this.$x.$timezone||i.tz.guess(),n=a(this.valueOf(),t,{timeZoneName:e}).find((function(e){return"timezonename"===e.type.toLowerCase()}));return n&&n.value};var c=l.startOf;l.startOf=function(e,t){if(!this.$x||!this.$x.$timezone)return c.call(this,e,t);var n=i(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return c.call(n,e,t).tz(this.$x.$timezone,!0)},i.tz=function(e,t,n){var r=n&&t,a=n||t||o,l=u(+i(),a);if("string"!=typeof e)return i(e).tz(a);var c=function(e,t,n){var r=e-60*t*1e3,i=u(r,n);if(t===i)return[r,t];var o=u(r-=60*(i-t)*1e3,n);return i===o?[r,i]:[e-60*Math.min(i,o)*1e3,Math.max(i,o)]}(i.utc(e,r).valueOf(),l,a),s=c[0],f=c[1],d=i(s).utcOffset(f);return d.$x.$timezone=a,d},i.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},i.tz.setDefault=function(e){o=e}}}()},635:function(e){e.exports=function(){"use strict";var e="minute",t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(r,i,o){var a=i.prototype;o.utc=function(e){return new i({date:e,utc:!0,args:arguments})},a.utc=function(t){var n=o(this.toDate(),{locale:this.$L,utc:!0});return t?n.add(this.utcOffset(),e):n},a.local=function(){return o(this.toDate(),{locale:this.$L,utc:!1})};var u=a.parse;a.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),u.call(this,e)};var l=a.init;a.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else l.call(this)};var c=a.utcOffset;a.utcOffset=function(r,i){var o=this.$utils().u;if(o(r))return this.$u?0:o(this.$offset)?c.call(this):this.$offset;if("string"==typeof r&&(r=function(e){void 0===e&&(e="");var r=e.match(t);if(!r)return null;var i=(""+r[0]).match(n)||["-",0,0],o=i[0],a=60*+i[1]+ +i[2];return 0===a?0:"+"===o?a:-a}(r),null===r))return this;var a=Math.abs(r)<=16?60*r:r,u=this;if(i)return u.$offset=a,u.$u=0===r,u;if(0!==r){var l=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(u=this.local().add(a+l,e)).$offset=a,u.$x.$localOffset=l}else u=this.utc();return u};var s=a.format;a.format=function(e){var t=e||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return s.call(this,t)},a.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},a.isUTC=function(){return!!this.$u},a.toISOString=function(){return this.toDate().toISOString()},a.toString=function(){return this.toDate().toUTCString()};var f=a.toDate;a.toDate=function(e){return"s"===e&&this.$offset?o(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():f.call(this)};var d=a.diff;a.diff=function(e,t,n){if(e&&this.$u===e.$u)return d.call(this,e,t,n);var r=this.local(),i=o(e).local();return d.call(r,i,t,n)}}}()},781:function(e){"use strict";var t="Function.prototype.bind called on incompatible ",n=Array.prototype.slice,r=Object.prototype.toString,i="[object Function]";e.exports=function(e){var o=this;if("function"!==typeof o||r.call(o)!==i)throw new TypeError(t+o);for(var a,u=n.call(arguments,1),l=function(){if(this instanceof a){var t=o.apply(this,u.concat(n.call(arguments)));return Object(t)===t?t:this}return o.apply(e,u.concat(n.call(arguments)))},c=Math.max(0,o.length-u.length),s=[],f=0;f<c;f++)s.push("$"+f);if(a=Function("binder","return function ("+s.join(",")+"){ return binder.apply(this,arguments); }")(l),o.prototype){var d=function(){};d.prototype=o.prototype,a.prototype=new d,d.prototype=null}return a}},199:function(e,t,n){"use strict";var r=n(781);e.exports=Function.prototype.bind||r},476:function(e,t,n){"use strict";var r,i=SyntaxError,o=Function,a=TypeError,u=function(e){try{return o('"use strict"; return ('+e+").constructor;")()}catch(t){}},l=Object.getOwnPropertyDescriptor;if(l)try{l({},"")}catch(N){l=null}var c=function(){throw new a},s=l?function(){try{return c}catch(e){try{return l(arguments,"callee").get}catch(t){return c}}}():c,f=n(520)(),d=Object.getPrototypeOf||function(e){return e.__proto__},h={},p="undefined"===typeof Uint8Array?r:d(Uint8Array),v={"%AggregateError%":"undefined"===typeof AggregateError?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"===typeof ArrayBuffer?r:ArrayBuffer,"%ArrayIteratorPrototype%":f?d([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":h,"%AsyncGenerator%":h,"%AsyncGeneratorFunction%":h,"%AsyncIteratorPrototype%":h,"%Atomics%":"undefined"===typeof Atomics?r:Atomics,"%BigInt%":"undefined"===typeof BigInt?r:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"===typeof DataView?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"===typeof Float32Array?r:Float32Array,"%Float64Array%":"undefined"===typeof Float64Array?r:Float64Array,"%FinalizationRegistry%":"undefined"===typeof FinalizationRegistry?r:FinalizationRegistry,"%Function%":o,"%GeneratorFunction%":h,"%Int8Array%":"undefined"===typeof Int8Array?r:Int8Array,"%Int16Array%":"undefined"===typeof Int16Array?r:Int16Array,"%Int32Array%":"undefined"===typeof Int32Array?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":f?d(d([][Symbol.iterator]())):r,"%JSON%":"object"===typeof JSON?JSON:r,"%Map%":"undefined"===typeof Map?r:Map,"%MapIteratorPrototype%":"undefined"!==typeof Map&&f?d((new Map)[Symbol.iterator]()):r,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"===typeof Promise?r:Promise,"%Proxy%":"undefined"===typeof Proxy?r:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"===typeof Reflect?r:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"===typeof Set?r:Set,"%SetIteratorPrototype%":"undefined"!==typeof Set&&f?d((new Set)[Symbol.iterator]()):r,"%SharedArrayBuffer%":"undefined"===typeof SharedArrayBuffer?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":f?d(""[Symbol.iterator]()):r,"%Symbol%":f?Symbol:r,"%SyntaxError%":i,"%ThrowTypeError%":s,"%TypedArray%":p,"%TypeError%":a,"%Uint8Array%":"undefined"===typeof Uint8Array?r:Uint8Array,"%Uint8ClampedArray%":"undefined"===typeof Uint8ClampedArray?r:Uint8ClampedArray,"%Uint16Array%":"undefined"===typeof Uint16Array?r:Uint16Array,"%Uint32Array%":"undefined"===typeof Uint32Array?r:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"===typeof WeakMap?r:WeakMap,"%WeakRef%":"undefined"===typeof WeakRef?r:WeakRef,"%WeakSet%":"undefined"===typeof WeakSet?r:WeakSet},m=function e(t){var n;if("%AsyncFunction%"===t)n=u("async function () {}");else if("%GeneratorFunction%"===t)n=u("function* () {}");else if("%AsyncGeneratorFunction%"===t)n=u("async function* () {}");else if("%AsyncGenerator%"===t){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if("%AsyncIteratorPrototype%"===t){var i=e("%AsyncGenerator%");i&&(n=d(i.prototype))}return v[t]=n,n},g={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},y=n(199),_=n(838),b=y.call(Function.call,Array.prototype.concat),D=y.call(Function.apply,Array.prototype.splice),w=y.call(Function.call,String.prototype.replace),x=y.call(Function.call,String.prototype.slice),k=y.call(Function.call,RegExp.prototype.exec),C=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,E=/\\(\\)?/g,A=function(e){var t=x(e,0,1),n=x(e,-1);if("%"===t&&"%"!==n)throw new i("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new i("invalid intrinsic syntax, expected opening `%`");var r=[];return w(e,C,(function(e,t,n,i){r[r.length]=n?w(i,E,"$1"):t||e})),r},S=function(e,t){var n,r=e;if(_(g,r)&&(r="%"+(n=g[r])[0]+"%"),_(v,r)){var o=v[r];if(o===h&&(o=m(r)),"undefined"===typeof o&&!t)throw new a("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:n,name:r,value:o}}throw new i("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!==typeof e||0===e.length)throw new a("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!==typeof t)throw new a('"allowMissing" argument must be a boolean');if(null===k(/^%?[^%]*%?$/,e))throw new i("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=A(e),r=n.length>0?n[0]:"",o=S("%"+r+"%",t),u=o.name,c=o.value,s=!1,f=o.alias;f&&(r=f[0],D(n,b([0,1],f)));for(var d=1,h=!0;d<n.length;d+=1){var p=n[d],m=x(p,0,1),g=x(p,-1);if(('"'===m||"'"===m||"`"===m||'"'===g||"'"===g||"`"===g)&&m!==g)throw new i("property names with quotes must have matching quotes");if("constructor"!==p&&h||(s=!0),_(v,u="%"+(r+="."+p)+"%"))c=v[u];else if(null!=c){if(!(p in c)){if(!t)throw new a("base intrinsic for "+e+" exists, but the property is not available.");return}if(l&&d+1>=n.length){var y=l(c,p);c=(h=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:c[p]}else h=_(c,p),c=c[p];h&&!s&&(v[u]=c)}}return c}},520:function(e,t,n){"use strict";var r="undefined"!==typeof Symbol&&Symbol,i=n(541);e.exports=function(){return"function"===typeof r&&("function"===typeof Symbol&&("symbol"===typeof r("foo")&&("symbol"===typeof Symbol("bar")&&i())))}},541:function(e){"use strict";e.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"===typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"===typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},838:function(e,t,n){"use strict";var r=n(199);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},936:function(e,t,n){var r=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,a=/^0o[0-7]+$/i,u=parseInt,l="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,c="object"==typeof self&&self&&self.Object===Object&&self,s=l||c||Function("return this")(),f=Object.prototype.toString,d=Math.max,h=Math.min,p=function(){return s.Date.now()};function v(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function m(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==f.call(e)}(e))return NaN;if(v(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=v(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(r,"");var n=o.test(e);return n||a.test(e)?u(e.slice(2),n?2:8):i.test(e)?NaN:+e}e.exports=function(e,t,n){var r,i,o,a,u,l,c=0,s=!1,f=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var n=r,o=i;return r=i=void 0,c=t,a=e.apply(o,n)}function _(e){return c=e,u=setTimeout(D,t),s?y(e):a}function b(e){var n=e-l;return void 0===l||n>=t||n<0||f&&e-c>=o}function D(){var e=p();if(b(e))return w(e);u=setTimeout(D,function(e){var n=t-(e-l);return f?h(n,o-(e-c)):n}(e))}function w(e){return u=void 0,g&&r?y(e):(r=i=void 0,a)}function x(){var e=p(),n=b(e);if(r=arguments,i=this,l=e,n){if(void 0===u)return _(l);if(f)return u=setTimeout(D,t),y(l)}return void 0===u&&(u=setTimeout(D,t)),a}return t=m(t)||0,v(n)&&(s=!!n.leading,o=(f="maxWait"in n)?d(m(n.maxWait)||0,t):o,g="trailing"in n?!!n.trailing:g),x.cancel=function(){void 0!==u&&clearTimeout(u),c=0,r=l=i=u=void 0},x.flush=function(){return void 0===u?a:w(p())},x}},7:function(e,t,n){var r="__lodash_hash_undefined__",i="[object Function]",o="[object GeneratorFunction]",a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/,l=/^\./,c=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,s=/\\(\\)?/g,f=/^\[object .+?Constructor\]$/,d="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,h="object"==typeof self&&self&&self.Object===Object&&self,p=d||h||Function("return this")();var v=Array.prototype,m=Function.prototype,g=Object.prototype,y=p["__core-js_shared__"],_=function(){var e=/[^.]+$/.exec(y&&y.keys&&y.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),b=m.toString,D=g.hasOwnProperty,w=g.toString,x=RegExp("^"+b.call(D).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),k=p.Symbol,C=v.splice,E=P(p,"Map"),A=P(Object,"create"),S=k?k.prototype:void 0,N=S?S.toString:void 0;function M(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function F(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function O(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function T(e,t){for(var n,r,i=e.length;i--;)if((n=e[i][0])===(r=t)||n!==n&&r!==r)return i;return-1}function B(e,t){var n;t=function(e,t){if($(e))return!1;var n=typeof e;if("number"==n||"symbol"==n||"boolean"==n||null==e||H(e))return!0;return u.test(e)||!a.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:$(n=t)?n:R(n);for(var r=0,i=t.length;null!=e&&r<i;)e=e[z(t[r++])];return r&&r==i?e:void 0}function I(e){if(!Y(e)||(t=e,_&&_ in t))return!1;var t,n=function(e){var t=Y(e)?w.call(e):"";return t==i||t==o}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(n){}return t}(e)?x:f;return n.test(function(e){if(null!=e){try{return b.call(e)}catch(t){}try{return e+""}catch(t){}}return""}(e))}function L(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function P(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return I(n)?n:void 0}M.prototype.clear=function(){this.__data__=A?A(null):{}},M.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},M.prototype.get=function(e){var t=this.__data__;if(A){var n=t[e];return n===r?void 0:n}return D.call(t,e)?t[e]:void 0},M.prototype.has=function(e){var t=this.__data__;return A?void 0!==t[e]:D.call(t,e)},M.prototype.set=function(e,t){return this.__data__[e]=A&&void 0===t?r:t,this},F.prototype.clear=function(){this.__data__=[]},F.prototype.delete=function(e){var t=this.__data__,n=T(t,e);return!(n<0)&&(n==t.length-1?t.pop():C.call(t,n,1),!0)},F.prototype.get=function(e){var t=this.__data__,n=T(t,e);return n<0?void 0:t[n][1]},F.prototype.has=function(e){return T(this.__data__,e)>-1},F.prototype.set=function(e,t){var n=this.__data__,r=T(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},O.prototype.clear=function(){this.__data__={hash:new M,map:new(E||F),string:new M}},O.prototype.delete=function(e){return L(this,e).delete(e)},O.prototype.get=function(e){return L(this,e).get(e)},O.prototype.has=function(e){return L(this,e).has(e)},O.prototype.set=function(e,t){return L(this,e).set(e,t),this};var R=j((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(H(e))return N?N.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(t);var n=[];return l.test(e)&&n.push(""),e.replace(c,(function(e,t,r,i){n.push(r?i.replace(s,"$1"):t||e)})),n}));function z(e){if("string"==typeof e||H(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function j(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function n(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a),a};return n.cache=new(j.Cache||O),n}j.Cache=O;var $=Array.isArray;function Y(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function H(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==w.call(e)}e.exports=function(e,t,n){var r=null==e?void 0:B(e,t);return void 0===r?n:r}},61:function(e,t,n){var r="Expected a function",i=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,u=/^0o[0-7]+$/i,l=parseInt,c="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,s="object"==typeof self&&self&&self.Object===Object&&self,f=c||s||Function("return this")(),d=Object.prototype.toString,h=Math.max,p=Math.min,v=function(){return f.Date.now()};function m(e,t,n){var i,o,a,u,l,c,s=0,f=!1,d=!1,m=!0;if("function"!=typeof e)throw new TypeError(r);function _(t){var n=i,r=o;return i=o=void 0,s=t,u=e.apply(r,n)}function b(e){return s=e,l=setTimeout(w,t),f?_(e):u}function D(e){var n=e-c;return void 0===c||n>=t||n<0||d&&e-s>=a}function w(){var e=v();if(D(e))return x(e);l=setTimeout(w,function(e){var n=t-(e-c);return d?p(n,a-(e-s)):n}(e))}function x(e){return l=void 0,m&&i?_(e):(i=o=void 0,u)}function k(){var e=v(),n=D(e);if(i=arguments,o=this,c=e,n){if(void 0===l)return b(c);if(d)return l=setTimeout(w,t),_(c)}return void 0===l&&(l=setTimeout(w,t)),u}return t=y(t)||0,g(n)&&(f=!!n.leading,a=(d="maxWait"in n)?h(y(n.maxWait)||0,t):a,m="trailing"in n?!!n.trailing:m),k.cancel=function(){void 0!==l&&clearTimeout(l),s=0,i=c=o=l=void 0},k.flush=function(){return void 0===l?u:x(v())},k}function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function y(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==d.call(e)}(e))return NaN;if(g(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var n=a.test(e);return n||u.test(e)?l(e.slice(2),n?2:8):o.test(e)?NaN:+e}e.exports=function(e,t,n){var i=!0,o=!0;if("function"!=typeof e)throw new TypeError(r);return g(n)&&(i="leading"in n?!!n.leading:i,o="trailing"in n?!!n.trailing:o),m(e,t,{leading:i,maxWait:t,trailing:o})}},154:function(e,t,n){var r="function"===typeof Map&&Map.prototype,i=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,o=r&&i&&"function"===typeof i.get?i.get:null,a=r&&Map.prototype.forEach,u="function"===typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&u?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=u&&l&&"function"===typeof l.get?l.get:null,s=u&&Set.prototype.forEach,f="function"===typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,d="function"===typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,h="function"===typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,p=Boolean.prototype.valueOf,v=Object.prototype.toString,m=Function.prototype.toString,g=String.prototype.match,y=String.prototype.slice,_=String.prototype.replace,b=String.prototype.toUpperCase,D=String.prototype.toLowerCase,w=RegExp.prototype.test,x=Array.prototype.concat,k=Array.prototype.join,C=Array.prototype.slice,E=Math.floor,A="function"===typeof BigInt?BigInt.prototype.valueOf:null,S=Object.getOwnPropertySymbols,N="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?Symbol.prototype.toString:null,M="function"===typeof Symbol&&"object"===typeof Symbol.iterator,F="function"===typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===M||"symbol")?Symbol.toStringTag:null,O=Object.prototype.propertyIsEnumerable,T=("function"===typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function B(e,t){if(e===1/0||e===-1/0||e!==e||e&&e>-1e3&&e<1e3||w.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"===typeof e){var r=e<0?-E(-e):E(e);if(r!==e){var i=String(r),o=y.call(t,i.length+1);return _.call(i,n,"$&_")+"."+_.call(_.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return _.call(t,n,"$&_")}var I=n(654),L=I.custom,P=Y(L)?L:null;function R(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function z(e){return _.call(String(e),/"/g,""")}function j(e){return"[object Array]"===U(e)&&(!F||!("object"===typeof e&&F in e))}function $(e){return"[object RegExp]"===U(e)&&(!F||!("object"===typeof e&&F in e))}function Y(e){if(M)return e&&"object"===typeof e&&e instanceof Symbol;if("symbol"===typeof e)return!0;if(!e||"object"!==typeof e||!N)return!1;try{return N.call(e),!0}catch(t){}return!1}e.exports=function e(t,n,r,i){var u=n||{};if(V(u,"quoteStyle")&&"single"!==u.quoteStyle&&"double"!==u.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(V(u,"maxStringLength")&&("number"===typeof u.maxStringLength?u.maxStringLength<0&&u.maxStringLength!==1/0:null!==u.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!V(u,"customInspect")||u.customInspect;if("boolean"!==typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(V(u,"indent")&&null!==u.indent&&"\t"!==u.indent&&!(parseInt(u.indent,10)===u.indent&&u.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(V(u,"numericSeparator")&&"boolean"!==typeof u.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var v=u.numericSeparator;if("undefined"===typeof t)return"undefined";if(null===t)return"null";if("boolean"===typeof t)return t?"true":"false";if("string"===typeof t)return W(t,u);if("number"===typeof t){if(0===t)return 1/0/t>0?"0":"-0";var b=String(t);return v?B(t,b):b}if("bigint"===typeof t){var w=String(t)+"n";return v?B(t,w):w}var E="undefined"===typeof u.depth?5:u.depth;if("undefined"===typeof r&&(r=0),r>=E&&E>0&&"object"===typeof t)return j(t)?"[Array]":"[Object]";var S=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"===typeof e.indent&&e.indent>0))return null;n=k.call(Array(e.indent+1)," ")}return{base:n,prev:k.call(Array(t+1),n)}}(u,r);if("undefined"===typeof i)i=[];else if(q(i,t)>=0)return"[Circular]";function L(t,n,o){if(n&&(i=C.call(i)).push(n),o){var a={depth:u.depth};return V(u,"quoteStyle")&&(a.quoteStyle=u.quoteStyle),e(t,a,r+1,i)}return e(t,u,r+1,i)}if("function"===typeof t&&!$(t)){var H=function(e){if(e.name)return e.name;var t=g.call(m.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),Q=X(t,L);return"[Function"+(H?": "+H:" (anonymous)")+"]"+(Q.length>0?" { "+k.call(Q,", ")+" }":"")}if(Y(t)){var ee=M?_.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(t);return"object"!==typeof t||M?ee:G(ee)}if(function(e){if(!e||"object"!==typeof e)return!1;if("undefined"!==typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"===typeof e.nodeName&&"function"===typeof e.getAttribute}(t)){for(var te="<"+D.call(String(t.nodeName)),ne=t.attributes||[],re=0;re<ne.length;re++)te+=" "+ne[re].name+"="+R(z(ne[re].value),"double",u);return te+=">",t.childNodes&&t.childNodes.length&&(te+="..."),te+="</"+D.call(String(t.nodeName))+">"}if(j(t)){if(0===t.length)return"[]";var ie=X(t,L);return S&&!function(e){for(var t=0;t<e.length;t++)if(q(e[t],"\n")>=0)return!1;return!0}(ie)?"["+K(ie,S)+"]":"[ "+k.call(ie,", ")+" ]"}if(function(e){return"[object Error]"===U(e)&&(!F||!("object"===typeof e&&F in e))}(t)){var oe=X(t,L);return"cause"in Error.prototype||!("cause"in t)||O.call(t,"cause")?0===oe.length?"["+String(t)+"]":"{ ["+String(t)+"] "+k.call(oe,", ")+" }":"{ ["+String(t)+"] "+k.call(x.call("[cause]: "+L(t.cause),oe),", ")+" }"}if("object"===typeof t&&l){if(P&&"function"===typeof t[P]&&I)return I(t,{depth:E-r});if("symbol"!==l&&"function"===typeof t.inspect)return t.inspect()}if(function(e){if(!o||!e||"object"!==typeof e)return!1;try{o.call(e);try{c.call(e)}catch(te){return!0}return e instanceof Map}catch(t){}return!1}(t)){var ae=[];return a&&a.call(t,(function(e,n){ae.push(L(n,t,!0)+" => "+L(e,t))})),Z("Map",o.call(t),ae,S)}if(function(e){if(!c||!e||"object"!==typeof e)return!1;try{c.call(e);try{o.call(e)}catch(t){return!0}return e instanceof Set}catch(n){}return!1}(t)){var ue=[];return s&&s.call(t,(function(e){ue.push(L(e,t))})),Z("Set",c.call(t),ue,S)}if(function(e){if(!f||!e||"object"!==typeof e)return!1;try{f.call(e,f);try{d.call(e,d)}catch(te){return!0}return e instanceof WeakMap}catch(t){}return!1}(t))return J("WeakMap");if(function(e){if(!d||!e||"object"!==typeof e)return!1;try{d.call(e,d);try{f.call(e,f)}catch(te){return!0}return e instanceof WeakSet}catch(t){}return!1}(t))return J("WeakSet");if(function(e){if(!h||!e||"object"!==typeof e)return!1;try{return h.call(e),!0}catch(t){}return!1}(t))return J("WeakRef");if(function(e){return"[object Number]"===U(e)&&(!F||!("object"===typeof e&&F in e))}(t))return G(L(Number(t)));if(function(e){if(!e||"object"!==typeof e||!A)return!1;try{return A.call(e),!0}catch(t){}return!1}(t))return G(L(A.call(t)));if(function(e){return"[object Boolean]"===U(e)&&(!F||!("object"===typeof e&&F in e))}(t))return G(p.call(t));if(function(e){return"[object String]"===U(e)&&(!F||!("object"===typeof e&&F in e))}(t))return G(L(String(t)));if(!function(e){return"[object Date]"===U(e)&&(!F||!("object"===typeof e&&F in e))}(t)&&!$(t)){var le=X(t,L),ce=T?T(t)===Object.prototype:t instanceof Object||t.constructor===Object,se=t instanceof Object?"":"null prototype",fe=!ce&&F&&Object(t)===t&&F in t?y.call(U(t),8,-1):se?"Object":"",de=(ce||"function"!==typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(fe||se?"["+k.call(x.call([],fe||[],se||[]),": ")+"] ":"");return 0===le.length?de+"{}":S?de+"{"+K(le,S)+"}":de+"{ "+k.call(le,", ")+" }"}return String(t)};var H=Object.prototype.hasOwnProperty||function(e){return e in this};function V(e,t){return H.call(e,t)}function U(e){return v.call(e)}function q(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function W(e,t){if(e.length>t.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return W(y.call(e,0,t.maxStringLength),t)+r}return R(_.call(_.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,Q),"single",t)}function Q(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+b.call(t.toString(16))}function G(e){return"Object("+e+")"}function J(e){return e+" { ? }"}function Z(e,t,n,r){return e+" ("+t+") {"+(r?K(n,r):k.call(n,", "))+"}"}function K(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+k.call(e,","+n)+"\n"+t.prev}function X(e,t){var n=j(e),r=[];if(n){r.length=e.length;for(var i=0;i<e.length;i++)r[i]=V(e,i)?t(e[i],e):""}var o,a="function"===typeof S?S(e):[];if(M){o={};for(var u=0;u<a.length;u++)o["$"+a[u]]=a[u]}for(var l in e)V(e,l)&&(n&&String(Number(l))===l&&l<e.length||M&&o["$"+l]instanceof Symbol||(w.call(/[^\w$]/,l)?r.push(t(l,e)+": "+t(e[l],e)):r.push(l+": "+t(e[l],e))));if("function"===typeof S)for(var c=0;c<a.length;c++)O.call(e,a[c])&&r.push("["+t(a[c])+"]: "+t(e[a[c]],e));return r}},206:function(e,t,n){"use strict";n.r(t),n.d(t,{Children:function(){return U},Component:function(){return u.wA},Fragment:function(){return u.HY},PureComponent:function(){return z},StrictMode:function(){return Ae},Suspense:function(){return J},SuspenseList:function(){return X},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:function(){return ye},cloneElement:function(){return we},createContext:function(){return u.kr},createElement:function(){return u.az},createFactory:function(){return be},createPortal:function(){return re},createRef:function(){return u.Vf},default:function(){return Te},findDOMNode:function(){return ke},flushSync:function(){return Ee},forwardRef:function(){return H},hydrate:function(){return ce},isValidElement:function(){return De},lazy:function(){return K},memo:function(){return j},render:function(){return le},startTransition:function(){return Se},unmountComponentAtNode:function(){return xe},unstable_batchedUpdates:function(){return Ce},useCallback:function(){return k},useContext:function(){return C},useDebugValue:function(){return E},useDeferredValue:function(){return Ne},useEffect:function(){return _},useErrorBoundary:function(){return A},useId:function(){return S},useImperativeHandle:function(){return w},useInsertionEffect:function(){return Fe},useLayoutEffect:function(){return b},useMemo:function(){return x},useReducer:function(){return y},useRef:function(){return D},useState:function(){return g},useSyncExternalStore:function(){return Oe},useTransition:function(){return Me},version:function(){return _e}});var r,i,o,a,u=n(856),l=0,c=[],s=[],f=u.YM.__b,d=u.YM.__r,h=u.YM.diffed,p=u.YM.__c,v=u.YM.unmount;function m(e,t){u.YM.__h&&u.YM.__h(i,e,l||t),l=0;var n=i.__H||(i.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({__V:s}),n.__[e]}function g(e){return l=1,y(I,e)}function y(e,t,n){var o=m(r++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):I(void 0,t),function(e){var t=o.__N?o.__N[0]:o.__[0],n=o.t(t,e);t!==n&&(o.__N=[n,o.__[1]],o.__c.setState({}))}],o.__c=i,!i.u)){i.u=!0;var a=i.shouldComponentUpdate;i.shouldComponentUpdate=function(e,t,n){if(!o.__c.__H)return!0;var r=o.__c.__H.__.filter((function(e){return e.__c}));if(r.every((function(e){return!e.__N})))return!a||a.call(this,e,t,n);var i=!1;return r.forEach((function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(i=!0)}})),!(!i&&o.__c.props===e)&&(!a||a.call(this,e,t,n))}}return o.__N||o.__}function _(e,t){var n=m(r++,3);!u.YM.__s&&B(n.__H,t)&&(n.__=e,n.i=t,i.__H.__h.push(n))}function b(e,t){var n=m(r++,4);!u.YM.__s&&B(n.__H,t)&&(n.__=e,n.i=t,i.__h.push(n))}function D(e){return l=5,x((function(){return{current:e}}),[])}function w(e,t,n){l=6,b((function(){return"function"==typeof e?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0}),null==n?n:n.concat(e))}function x(e,t){var n=m(r++,7);return B(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}function k(e,t){return l=8,x((function(){return e}),t)}function C(e){var t=i.context[e.__c],n=m(r++,9);return n.c=e,t?(null==n.__&&(n.__=!0,t.sub(i)),t.props.value):e.__}function E(e,t){u.YM.useDebugValue&&u.YM.useDebugValue(t?t(e):e)}function A(e){var t=m(r++,10),n=g();return t.__=e,i.componentDidCatch||(i.componentDidCatch=function(e,r){t.__&&t.__(e,r),n[1](e)}),[n[0],function(){n[1](void 0)}]}function S(){var e=m(r++,11);if(!e.__){for(var t=i.__v;null!==t&&!t.__m&&null!==t.__;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function N(){for(var e;e=c.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(O),e.__H.__h.forEach(T),e.__H.__h=[]}catch(i){e.__H.__h=[],u.YM.__e(i,e.__v)}}u.YM.__b=function(e){i=null,f&&f(e)},u.YM.__r=function(e){d&&d(e),r=0;var t=(i=e.__c).__H;t&&(o===i?(t.__h=[],i.__h=[],t.__.forEach((function(e){e.__N&&(e.__=e.__N),e.__V=s,e.__N=e.i=void 0}))):(t.__h.forEach(O),t.__h.forEach(T),t.__h=[])),o=i},u.YM.diffed=function(e){h&&h(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==c.push(t)&&a===u.YM.requestAnimationFrame||((a=u.YM.requestAnimationFrame)||F)(N)),t.__H.__.forEach((function(e){e.i&&(e.__H=e.i),e.__V!==s&&(e.__=e.__V),e.i=void 0,e.__V=s}))),o=i=null},u.YM.__c=function(e,t){t.some((function(e){try{e.__h.forEach(O),e.__h=e.__h.filter((function(e){return!e.__||T(e)}))}catch(o){t.some((function(e){e.__h&&(e.__h=[])})),t=[],u.YM.__e(o,e.__v)}})),p&&p(e,t)},u.YM.unmount=function(e){v&&v(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{O(e)}catch(e){t=e}})),n.__H=void 0,t&&u.YM.__e(t,n.__v))};var M="function"==typeof requestAnimationFrame;function F(e){var t,n=function(){clearTimeout(r),M&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);M&&(t=requestAnimationFrame(n))}function O(e){var t=i,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),i=t}function T(e){var t=i;e.__c=e.__(),i=t}function B(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function I(e,t){return"function"==typeof t?t(e):t}function L(e,t){for(var n in t)e[n]=t[n];return e}function P(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}function R(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}function z(e){this.props=e}function j(e,t){function n(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:P(this.props,e)}function r(t){return this.shouldComponentUpdate=n,(0,u.az)(e,t)}return r.displayName="Memo("+(e.displayName||e.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r}(z.prototype=new u.wA).isPureReactComponent=!0,z.prototype.shouldComponentUpdate=function(e,t){return P(this.props,e)||P(this.state,t)};var $=u.YM.__b;u.YM.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),$&&$(e)};var Y="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function H(e){function t(t){var n=L({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=Y,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var V=function(e,t){return null==e?null:(0,u.bR)((0,u.bR)(e).map(t))},U={map:V,forEach:V,count:function(e){return e?(0,u.bR)(e).length:0},only:function(e){var t=(0,u.bR)(e);if(1!==t.length)throw"Children.only";return t[0]},toArray:u.bR},q=u.YM.__e;u.YM.__e=function(e,t,n,r){if(e.then)for(var i,o=t;o=o.__;)if((i=o.__c)&&i.__c)return null==t.__e&&(t.__e=n.__e,t.__k=n.__k),i.__c(e,t);q(e,t,n,r)};var W=u.YM.unmount;function Q(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach((function(e){"function"==typeof e.__c&&e.__c()})),e.__c.__H=null),null!=(e=L({},e)).__c&&(e.__c.__P===n&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map((function(e){return Q(e,t,n)}))),e}function G(e,t,n){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map((function(e){return G(e,t,n)})),e.__c&&e.__c.__P===t&&(e.__e&&n.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=n)),e}function J(){this.__u=0,this.t=null,this.__b=null}function Z(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function K(e){var t,n,r;function i(i){if(t||(t=e()).then((function(e){n=e.default||e}),(function(e){r=e})),r)throw r;if(!n)throw t;return(0,u.az)(n,i)}return i.displayName="Lazy",i.__f=!0,i}function X(){this.u=null,this.o=null}u.YM.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&!0===e.__h&&(e.type=null),W&&W(e)},(J.prototype=new u.wA).__c=function(e,t){var n=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(n);var i=Z(r.__v),o=!1,a=function(){o||(o=!0,n.__R=null,i?i(u):u())};n.__R=a;var u=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=G(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},l=!0===t.__h;r.__u++||l||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(a,a)},J.prototype.componentWillUnmount=function(){this.t=[]},J.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=Q(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&(0,u.az)(u.HY,null,e.fallback);return i&&(i.__h=null),[(0,u.az)(u.HY,null,t.__a?null:e.children),i]};var ee=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.u=n=n[2]}};function te(e){return this.getChildContext=function(){return e.context},e.children}function ne(e){var t=this,n=e.i;t.componentWillUnmount=function(){(0,u.sY)(null,t.l),t.l=null,t.i=null},t.i&&t.i!==n&&t.componentWillUnmount(),e.__v?(t.l||(t.i=n,t.l={nodeType:1,parentNode:n,childNodes:[],appendChild:function(e){this.childNodes.push(e),t.i.appendChild(e)},insertBefore:function(e,n){this.childNodes.push(e),t.i.appendChild(e)},removeChild:function(e){this.childNodes.splice(this.childNodes.indexOf(e)>>>1,1),t.i.removeChild(e)}}),(0,u.sY)((0,u.az)(te,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function re(e,t){var n=(0,u.az)(ne,{__v:e,i:t});return n.containerInfo=t,n}(X.prototype=new u.wA).__a=function(e){var t=this,n=Z(t.__v),r=t.o.get(e);return r[0]++,function(i){var o=function(){t.props.revealOrder?(r.push(i),ee(t,e,r)):i()};n?n(o):o()}},X.prototype.render=function(e){this.u=null,this.o=new Map;var t=(0,u.bR)(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},X.prototype.componentDidUpdate=X.prototype.componentDidMount=function(){var e=this;this.o.forEach((function(t,n){ee(e,n,t)}))};var ie="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,oe=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,ae="undefined"!=typeof document,ue=function(e){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(e)};function le(e,t,n){return null==t.__k&&(t.textContent=""),(0,u.sY)(e,t),"function"==typeof n&&n(),e?e.__c:null}function ce(e,t,n){return(0,u.ZB)(e,t),"function"==typeof n&&n(),e?e.__c:null}u.wA.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach((function(e){Object.defineProperty(u.wA.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})}));var se=u.YM.event;function fe(){}function de(){return this.cancelBubble}function he(){return this.defaultPrevented}u.YM.event=function(e){return se&&(e=se(e)),e.persist=fe,e.isPropagationStopped=de,e.isDefaultPrevented=he,e.nativeEvent=e};var pe,ve={configurable:!0,get:function(){return this.class}},me=u.YM.vnode;u.YM.vnode=function(e){var t=e.type,n=e.props,r=n;if("string"==typeof t){var i=-1===t.indexOf("-");for(var o in r={},n){var a=n[o];ae&&"children"===o&&"noscript"===t||"value"===o&&"defaultValue"in n&&null==a||("defaultValue"===o&&"value"in n&&null==n.value?o="value":"download"===o&&!0===a?a="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+t)&&!ue(n.type)?o="oninput":/^onfocus$/i.test(o)?o="onfocusin":/^onblur$/i.test(o)?o="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(o)?o=o.toLowerCase():i&&oe.test(o)?o=o.replace(/[A-Z0-9]/g,"-$&").toLowerCase():null===a&&(a=void 0),/^oninput$/i.test(o)&&(o=o.toLowerCase(),r[o]&&(o="oninputCapture")),r[o]=a)}"select"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=(0,u.bR)(n.children).forEach((function(e){e.props.selected=-1!=r.value.indexOf(e.props.value)}))),"select"==t&&null!=r.defaultValue&&(r.value=(0,u.bR)(n.children).forEach((function(e){e.props.selected=r.multiple?-1!=r.defaultValue.indexOf(e.props.value):r.defaultValue==e.props.value}))),e.props=r,n.class!=n.className&&(ve.enumerable="className"in n,null!=n.className&&(r.class=n.className),Object.defineProperty(r,"className",ve))}e.$$typeof=ie,me&&me(e)};var ge=u.YM.__r;u.YM.__r=function(e){ge&&ge(e),pe=e.__c};var ye={ReactCurrentDispatcher:{current:{readContext:function(e){return pe.__n[e.__c].props.value}}}},_e="17.0.2";function be(e){return u.az.bind(null,e)}function De(e){return!!e&&e.$$typeof===ie}function we(e){return De(e)?u.Tm.apply(null,arguments):e}function xe(e){return!!e.__k&&((0,u.sY)(null,e),!0)}function ke(e){return e&&(e.base||1===e.nodeType&&e)||null}var Ce=function(e,t){return e(t)},Ee=function(e,t){return e(t)},Ae=u.HY;function Se(e){e()}function Ne(e){return e}function Me(){return[!1,Se]}var Fe=b;function Oe(e,t){var n=t(),r=g({h:{__:n,v:t}}),i=r[0].h,o=r[1];return b((function(){i.__=n,i.v=t,R(i.__,t())||o({h:i})}),[e,n,t]),_((function(){return R(i.__,i.v())||o({h:i}),e((function(){R(i.__,i.v())||o({h:i})}))}),[e]),n}var Te={useState:g,useId:S,useReducer:y,useEffect:_,useLayoutEffect:b,useInsertionEffect:Fe,useTransition:Me,useDeferredValue:Ne,useSyncExternalStore:Oe,startTransition:Se,useRef:D,useImperativeHandle:w,useMemo:x,useCallback:k,useContext:C,useDebugValue:E,version:"17.0.2",Children:U,render:le,hydrate:ce,unmountComponentAtNode:xe,createPortal:re,createElement:u.az,createContext:u.kr,createFactory:be,cloneElement:we,createRef:u.Vf,Fragment:u.HY,isValidElement:De,findDOMNode:ke,Component:u.wA,PureComponent:z,memo:j,forwardRef:H,flushSync:Ee,unstable_batchedUpdates:Ce,StrictMode:Ae,Suspense:J,SuspenseList:X,lazy:K,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ye}},856:function(e,t,n){"use strict";n.d(t,{HY:function(){return g},Tm:function(){return z},Vf:function(){return m},YM:function(){return i},ZB:function(){return R},az:function(){return p},bR:function(){return C},kr:function(){return j},sY:function(){return P},wA:function(){return y}});var r,i,o,a,u,l,c={},s=[],f=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function d(e,t){for(var n in t)e[n]=t[n];return e}function h(e){var t=e.parentNode;t&&t.removeChild(e)}function p(e,t,n){var i,o,a,u={};for(a in t)"key"==a?i=t[a]:"ref"==a?o=t[a]:u[a]=t[a];if(arguments.length>2&&(u.children=arguments.length>3?r.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===u[a]&&(u[a]=e.defaultProps[a]);return v(e,u,i,o,null)}function v(e,t,n,r,a){var u={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==a?++o:a};return null==a&&null!=i.vnode&&i.vnode(u),u}function m(){return{current:null}}function g(e){return e.children}function y(e,t){this.props=e,this.context=t}function _(e,t){if(null==t)return e.__?_(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?_(e):null}function b(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return b(e)}}function D(e){(!e.__d&&(e.__d=!0)&&a.push(e)&&!w.__r++||u!==i.debounceRendering)&&((u=i.debounceRendering)||setTimeout)(w)}function w(){for(var e;w.__r=a.length;)e=a.sort((function(e,t){return e.__v.__b-t.__v.__b})),a=[],e.some((function(e){var t,n,r,i,o,a;e.__d&&(o=(i=(t=e).__v).__e,(a=t.__P)&&(n=[],(r=d({},i)).__v=i.__v+1,F(a,i,r,t.__n,void 0!==a.ownerSVGElement,null!=i.__h?[o]:null,n,null==o?_(i):o,i.__h),O(n,i),i.__e!=o&&b(i)))}))}function x(e,t,n,r,i,o,a,u,l,f){var d,h,p,m,y,b,D,w=r&&r.__k||s,x=w.length;for(n.__k=[],d=0;d<t.length;d++)if(null!=(m=n.__k[d]=null==(m=t[d])||"boolean"==typeof m?null:"string"==typeof m||"number"==typeof m||"bigint"==typeof m?v(null,m,null,null,m):Array.isArray(m)?v(g,{children:m},null,null,null):m.__b>0?v(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)){if(m.__=n,m.__b=n.__b+1,null===(p=w[d])||p&&m.key==p.key&&m.type===p.type)w[d]=void 0;else for(h=0;h<x;h++){if((p=w[h])&&m.key==p.key&&m.type===p.type){w[h]=void 0;break}p=null}F(e,m,p=p||c,i,o,a,u,l,f),y=m.__e,(h=m.ref)&&p.ref!=h&&(D||(D=[]),p.ref&&D.push(p.ref,null,m),D.push(h,m.__c||y,m)),null!=y?(null==b&&(b=y),"function"==typeof m.type&&m.__k===p.__k?m.__d=l=k(m,l,e):l=E(e,m,p,w,y,l),"function"==typeof n.type&&(n.__d=l)):l&&p.__e==l&&l.parentNode!=e&&(l=_(p))}for(n.__e=b,d=x;d--;)null!=w[d]&&I(w[d],w[d]);if(D)for(d=0;d<D.length;d++)B(D[d],D[++d],D[++d])}function k(e,t,n){for(var r,i=e.__k,o=0;i&&o<i.length;o++)(r=i[o])&&(r.__=e,t="function"==typeof r.type?k(r,t,n):E(n,r,r,i,r.__e,t));return t}function C(e,t){return t=t||[],null==e||"boolean"==typeof e||(Array.isArray(e)?e.some((function(e){C(e,t)})):t.push(e)),t}function E(e,t,n,r,i,o){var a,u,l;if(void 0!==t.__d)a=t.__d,t.__d=void 0;else if(null==n||i!=o||null==i.parentNode)e:if(null==o||o.parentNode!==e)e.appendChild(i),a=null;else{for(u=o,l=0;(u=u.nextSibling)&&l<r.length;l+=1)if(u==i)break e;e.insertBefore(i,o),a=o}return void 0!==a?a:i.nextSibling}function A(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||f.test(t)?n:n+"px"}function S(e,t,n,r,i){var o;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||A(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||A(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])o=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?r||e.addEventListener(t,o?M:N,o):e.removeEventListener(t,o?M:N,o);else if("dangerouslySetInnerHTML"!==t){if(i)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&-1==t.indexOf("-")?e.removeAttribute(t):e.setAttribute(t,n))}}function N(e){this.l[e.type+!1](i.event?i.event(e):e)}function M(e){this.l[e.type+!0](i.event?i.event(e):e)}function F(e,t,n,r,o,a,u,l,c){var s,f,h,p,v,m,_,b,D,w,k,C,E,A,S,N=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(c=n.__h,l=t.__e=n.__e,t.__h=null,a=[l]),(s=i.__b)&&s(t);try{e:if("function"==typeof N){if(b=t.props,D=(s=N.contextType)&&r[s.__c],w=s?D?D.props.value:s.__:r,n.__c?_=(f=t.__c=n.__c).__=f.__E:("prototype"in N&&N.prototype.render?t.__c=f=new N(b,w):(t.__c=f=new y(b,w),f.constructor=N,f.render=L),D&&D.sub(f),f.props=b,f.state||(f.state={}),f.context=w,f.__n=r,h=f.__d=!0,f.__h=[],f._sb=[]),null==f.__s&&(f.__s=f.state),null!=N.getDerivedStateFromProps&&(f.__s==f.state&&(f.__s=d({},f.__s)),d(f.__s,N.getDerivedStateFromProps(b,f.__s))),p=f.props,v=f.state,h)null==N.getDerivedStateFromProps&&null!=f.componentWillMount&&f.componentWillMount(),null!=f.componentDidMount&&f.__h.push(f.componentDidMount);else{if(null==N.getDerivedStateFromProps&&b!==p&&null!=f.componentWillReceiveProps&&f.componentWillReceiveProps(b,w),!f.__e&&null!=f.shouldComponentUpdate&&!1===f.shouldComponentUpdate(b,f.__s,w)||t.__v===n.__v){for(f.props=b,f.state=f.__s,t.__v!==n.__v&&(f.__d=!1),f.__v=t,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),k=0;k<f._sb.length;k++)f.__h.push(f._sb[k]);f._sb=[],f.__h.length&&u.push(f);break e}null!=f.componentWillUpdate&&f.componentWillUpdate(b,f.__s,w),null!=f.componentDidUpdate&&f.__h.push((function(){f.componentDidUpdate(p,v,m)}))}if(f.context=w,f.props=b,f.__v=t,f.__P=e,C=i.__r,E=0,"prototype"in N&&N.prototype.render){for(f.state=f.__s,f.__d=!1,C&&C(t),s=f.render(f.props,f.state,f.context),A=0;A<f._sb.length;A++)f.__h.push(f._sb[A]);f._sb=[]}else do{f.__d=!1,C&&C(t),s=f.render(f.props,f.state,f.context),f.state=f.__s}while(f.__d&&++E<25);f.state=f.__s,null!=f.getChildContext&&(r=d(d({},r),f.getChildContext())),h||null==f.getSnapshotBeforeUpdate||(m=f.getSnapshotBeforeUpdate(p,v)),S=null!=s&&s.type===g&&null==s.key?s.props.children:s,x(e,Array.isArray(S)?S:[S],t,n,r,o,a,u,l,c),f.base=t.__e,t.__h=null,f.__h.length&&u.push(f),_&&(f.__E=f.__=null),f.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=T(n.__e,t,n,r,o,a,u,c);(s=i.diffed)&&s(t)}catch(e){t.__v=null,(c||null!=a)&&(t.__e=l,t.__h=!!c,a[a.indexOf(l)]=null),i.__e(e,t,n)}}function O(e,t){i.__c&&i.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){i.__e(e,t.__v)}}))}function T(e,t,n,i,o,a,u,l){var s,f,d,p=n.props,v=t.props,m=t.type,g=0;if("svg"===m&&(o=!0),null!=a)for(;g<a.length;g++)if((s=a[g])&&"setAttribute"in s==!!m&&(m?s.localName===m:3===s.nodeType)){e=s,a[g]=null;break}if(null==e){if(null===m)return document.createTextNode(v);e=o?document.createElementNS("http://www.w3.org/2000/svg",m):document.createElement(m,v.is&&v),a=null,l=!1}if(null===m)p===v||l&&e.data===v||(e.data=v);else{if(a=a&&r.call(e.childNodes),f=(p=n.props||c).dangerouslySetInnerHTML,d=v.dangerouslySetInnerHTML,!l){if(null!=a)for(p={},g=0;g<e.attributes.length;g++)p[e.attributes[g].name]=e.attributes[g].value;(d||f)&&(d&&(f&&d.__html==f.__html||d.__html===e.innerHTML)||(e.innerHTML=d&&d.__html||""))}if(function(e,t,n,r,i){var o;for(o in n)"children"===o||"key"===o||o in t||S(e,o,null,n[o],r);for(o in t)i&&"function"!=typeof t[o]||"children"===o||"key"===o||"value"===o||"checked"===o||n[o]===t[o]||S(e,o,t[o],n[o],r)}(e,v,p,o,l),d)t.__k=[];else if(g=t.props.children,x(e,Array.isArray(g)?g:[g],t,n,i,o&&"foreignObject"!==m,a,u,a?a[0]:n.__k&&_(n,0),l),null!=a)for(g=a.length;g--;)null!=a[g]&&h(a[g]);l||("value"in v&&void 0!==(g=v.value)&&(g!==e.value||"progress"===m&&!g||"option"===m&&g!==p.value)&&S(e,"value",g,p.value,!1),"checked"in v&&void 0!==(g=v.checked)&&g!==e.checked&&S(e,"checked",g,p.checked,!1))}return e}function B(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){i.__e(e,n)}}function I(e,t,n){var r,o;if(i.unmount&&i.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||B(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){i.__e(e,t)}r.base=r.__P=null,e.__c=void 0}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&I(r[o],t,n||"function"!=typeof e.type);n||null==e.__e||h(e.__e),e.__=e.__e=e.__d=void 0}function L(e,t,n){return this.constructor(e,n)}function P(e,t,n){var o,a,u;i.__&&i.__(e,t),a=(o="function"==typeof n)?null:n&&n.__k||t.__k,u=[],F(t,e=(!o&&n||t).__k=p(g,null,[e]),a||c,c,void 0!==t.ownerSVGElement,!o&&n?[n]:a?null:t.firstChild?r.call(t.childNodes):null,u,!o&&n?n:a?a.__e:t.firstChild,o),O(u,e)}function R(e,t){P(e,t,R)}function z(e,t,n){var i,o,a,u=d({},e.props);for(a in t)"key"==a?i=t[a]:"ref"==a?o=t[a]:u[a]=t[a];return arguments.length>2&&(u.children=arguments.length>3?r.call(arguments,2):n),v(e.type,u,i||e.key,o||e.ref,null)}function j(e,t){var n={__c:t="__cC"+l++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var n,r;return this.getChildContext||(n=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some(D)},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n}r=s.slice,i={__e:function(e,t,n,r){for(var i,o,a;t=t.__;)if((i=t.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(e)),a=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e,r||{}),a=i.__d),a)return i.__E=i}catch(t){e=t}throw e}},o=0,y.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),"function"==typeof e&&(e=e(d({},n),this.props)),e&&d(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),D(this))},y.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),D(this))},y.prototype.render=g,a=[],w.__r=0,l=0},609:function(e){"use strict";var t=String.prototype.replace,n=/%20/g,r="RFC1738",i="RFC3986";e.exports={default:i,formatters:{RFC1738:function(e){return t.call(e,n,"+")},RFC3986:function(e){return String(e)}},RFC1738:r,RFC3986:i}},776:function(e,t,n){"use strict";var r=n(816),i=n(668),o=n(609);e.exports={formats:o,parse:i,stringify:r}},668:function(e,t,n){"use strict";var r=n(837),i=Object.prototype.hasOwnProperty,o=Array.isArray,a={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:r.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},u=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"===typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,n,r){if(e){var o=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/g,u=n.depth>0&&/(\[[^[\]]*])/.exec(o),c=u?o.slice(0,u.index):o,s=[];if(c){if(!n.plainObjects&&i.call(Object.prototype,c)&&!n.allowPrototypes)return;s.push(c)}for(var f=0;n.depth>0&&null!==(u=a.exec(o))&&f<n.depth;){if(f+=1,!n.plainObjects&&i.call(Object.prototype,u[1].slice(1,-1))&&!n.allowPrototypes)return;s.push(u[1])}return u&&s.push("["+o.slice(u.index)+"]"),function(e,t,n,r){for(var i=r?t:l(t,n),o=e.length-1;o>=0;--o){var a,u=e[o];if("[]"===u&&n.parseArrays)a=[].concat(i);else{a=n.plainObjects?Object.create(null):{};var c="["===u.charAt(0)&&"]"===u.charAt(u.length-1)?u.slice(1,-1):u,s=parseInt(c,10);n.parseArrays||""!==c?!isNaN(s)&&u!==c&&String(s)===c&&s>=0&&n.parseArrays&&s<=n.arrayLimit?(a=[])[s]=i:"__proto__"!==c&&(a[c]=i):a={0:i}}i=a}return i}(s,t,n,r)}};e.exports=function(e,t){var n=function(e){if(!e)return a;if(null!==e.decoder&&void 0!==e.decoder&&"function"!==typeof e.decoder)throw new TypeError("Decoder has to be a function.");if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t="undefined"===typeof e.charset?a.charset:e.charset;return{allowDots:"undefined"===typeof e.allowDots?a.allowDots:!!e.allowDots,allowPrototypes:"boolean"===typeof e.allowPrototypes?e.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"===typeof e.allowSparse?e.allowSparse:a.allowSparse,arrayLimit:"number"===typeof e.arrayLimit?e.arrayLimit:a.arrayLimit,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:a.charsetSentinel,comma:"boolean"===typeof e.comma?e.comma:a.comma,decoder:"function"===typeof e.decoder?e.decoder:a.decoder,delimiter:"string"===typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:a.delimiter,depth:"number"===typeof e.depth||!1===e.depth?+e.depth:a.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"===typeof e.interpretNumericEntities?e.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"===typeof e.parameterLimit?e.parameterLimit:a.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"===typeof e.plainObjects?e.plainObjects:a.plainObjects,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:a.strictNullHandling}}(t);if(""===e||null===e||"undefined"===typeof e)return n.plainObjects?Object.create(null):{};for(var s="string"===typeof e?function(e,t){var n,c={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,f=t.parameterLimit===1/0?void 0:t.parameterLimit,d=s.split(t.delimiter,f),h=-1,p=t.charset;if(t.charsetSentinel)for(n=0;n<d.length;++n)0===d[n].indexOf("utf8=")&&("utf8=%E2%9C%93"===d[n]?p="utf-8":"utf8=%26%2310003%3B"===d[n]&&(p="iso-8859-1"),h=n,n=d.length);for(n=0;n<d.length;++n)if(n!==h){var v,m,g=d[n],y=g.indexOf("]="),_=-1===y?g.indexOf("="):y+1;-1===_?(v=t.decoder(g,a.decoder,p,"key"),m=t.strictNullHandling?null:""):(v=t.decoder(g.slice(0,_),a.decoder,p,"key"),m=r.maybeMap(l(g.slice(_+1),t),(function(e){return t.decoder(e,a.decoder,p,"value")}))),m&&t.interpretNumericEntities&&"iso-8859-1"===p&&(m=u(m)),g.indexOf("[]=")>-1&&(m=o(m)?[m]:m),i.call(c,v)?c[v]=r.combine(c[v],m):c[v]=m}return c}(e,n):e,f=n.plainObjects?Object.create(null):{},d=Object.keys(s),h=0;h<d.length;++h){var p=d[h],v=c(p,s[p],n,"string"===typeof e);f=r.merge(f,v,n)}return!0===n.allowSparse?f:r.compact(f)}},816:function(e,t,n){"use strict";var r=n(170),i=n(837),o=n(609),a=Object.prototype.hasOwnProperty,u={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},l=Array.isArray,c=String.prototype.split,s=Array.prototype.push,f=function(e,t){s.apply(e,l(t)?t:[t])},d=Date.prototype.toISOString,h=o.default,p={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:i.encode,encodeValuesOnly:!1,format:h,formatter:o.formatters[h],indices:!1,serializeDate:function(e){return d.call(e)},skipNulls:!1,strictNullHandling:!1},v={},m=function e(t,n,o,a,u,s,d,h,m,g,y,_,b,D,w,x){for(var k,C=t,E=x,A=0,S=!1;void 0!==(E=E.get(v))&&!S;){var N=E.get(t);if(A+=1,"undefined"!==typeof N){if(N===A)throw new RangeError("Cyclic object value");S=!0}"undefined"===typeof E.get(v)&&(A=0)}if("function"===typeof h?C=h(n,C):C instanceof Date?C=y(C):"comma"===o&&l(C)&&(C=i.maybeMap(C,(function(e){return e instanceof Date?y(e):e}))),null===C){if(u)return d&&!D?d(n,p.encoder,w,"key",_):n;C=""}if("string"===typeof(k=C)||"number"===typeof k||"boolean"===typeof k||"symbol"===typeof k||"bigint"===typeof k||i.isBuffer(C)){if(d){var M=D?n:d(n,p.encoder,w,"key",_);if("comma"===o&&D){for(var F=c.call(String(C),","),O="",T=0;T<F.length;++T)O+=(0===T?"":",")+b(d(F[T],p.encoder,w,"value",_));return[b(M)+(a&&l(C)&&1===F.length?"[]":"")+"="+O]}return[b(M)+"="+b(d(C,p.encoder,w,"value",_))]}return[b(n)+"="+b(String(C))]}var B,I=[];if("undefined"===typeof C)return I;if("comma"===o&&l(C))B=[{value:C.length>0?C.join(",")||null:void 0}];else if(l(h))B=h;else{var L=Object.keys(C);B=m?L.sort(m):L}for(var P=a&&l(C)&&1===C.length?n+"[]":n,R=0;R<B.length;++R){var z=B[R],j="object"===typeof z&&"undefined"!==typeof z.value?z.value:C[z];if(!s||null!==j){var $=l(C)?"function"===typeof o?o(P,z):P:P+(g?"."+z:"["+z+"]");x.set(t,A);var Y=r();Y.set(v,x),f(I,e(j,$,o,a,u,s,d,h,m,g,y,_,b,D,w,Y))}}return I};e.exports=function(e,t){var n,i=e,c=function(e){if(!e)return p;if(null!==e.encoder&&"undefined"!==typeof e.encoder&&"function"!==typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||p.charset;if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var n=o.default;if("undefined"!==typeof e.format){if(!a.call(o.formatters,e.format))throw new TypeError("Unknown format option provided.");n=e.format}var r=o.formatters[n],i=p.filter;return("function"===typeof e.filter||l(e.filter))&&(i=e.filter),{addQueryPrefix:"boolean"===typeof e.addQueryPrefix?e.addQueryPrefix:p.addQueryPrefix,allowDots:"undefined"===typeof e.allowDots?p.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:p.charsetSentinel,delimiter:"undefined"===typeof e.delimiter?p.delimiter:e.delimiter,encode:"boolean"===typeof e.encode?e.encode:p.encode,encoder:"function"===typeof e.encoder?e.encoder:p.encoder,encodeValuesOnly:"boolean"===typeof e.encodeValuesOnly?e.encodeValuesOnly:p.encodeValuesOnly,filter:i,format:n,formatter:r,serializeDate:"function"===typeof e.serializeDate?e.serializeDate:p.serializeDate,skipNulls:"boolean"===typeof e.skipNulls?e.skipNulls:p.skipNulls,sort:"function"===typeof e.sort?e.sort:null,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:p.strictNullHandling}}(t);"function"===typeof c.filter?i=(0,c.filter)("",i):l(c.filter)&&(n=c.filter);var s,d=[];if("object"!==typeof i||null===i)return"";s=t&&t.arrayFormat in u?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var h=u[s];if(t&&"commaRoundTrip"in t&&"boolean"!==typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var v="comma"===h&&t&&t.commaRoundTrip;n||(n=Object.keys(i)),c.sort&&n.sort(c.sort);for(var g=r(),y=0;y<n.length;++y){var _=n[y];c.skipNulls&&null===i[_]||f(d,m(i[_],_,h,v,c.strictNullHandling,c.skipNulls,c.encode?c.encoder:null,c.filter,c.sort,c.allowDots,c.serializeDate,c.format,c.formatter,c.encodeValuesOnly,c.charset,g))}var b=d.join(c.delimiter),D=!0===c.addQueryPrefix?"?":"";return c.charsetSentinel&&("iso-8859-1"===c.charset?D+="utf8=%26%2310003%3B&":D+="utf8=%E2%9C%93&"),b.length>0?D+b:""}},837:function(e,t,n){"use strict";var r=n(609),i=Object.prototype.hasOwnProperty,o=Array.isArray,a=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),u=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},r=0;r<e.length;++r)"undefined"!==typeof e[r]&&(n[r]=e[r]);return n};e.exports={arrayToObject:u,assign:function(e,t){return Object.keys(t).reduce((function(e,n){return e[n]=t[n],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],n=[],r=0;r<t.length;++r)for(var i=t[r],a=i.obj[i.prop],u=Object.keys(a),l=0;l<u.length;++l){var c=u[l],s=a[c];"object"===typeof s&&null!==s&&-1===n.indexOf(s)&&(t.push({obj:a,prop:c}),n.push(s))}return function(e){for(;e.length>1;){var t=e.pop(),n=t.obj[t.prop];if(o(n)){for(var r=[],i=0;i<n.length;++i)"undefined"!==typeof n[i]&&r.push(n[i]);t.obj[t.prop]=r}}}(t),e},decode:function(e,t,n){var r=e.replace(/\+/g," ");if("iso-8859-1"===n)return r.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(r)}catch(i){return r}},encode:function(e,t,n,i,o){if(0===e.length)return e;var u=e;if("symbol"===typeof e?u=Symbol.prototype.toString.call(e):"string"!==typeof e&&(u=String(e)),"iso-8859-1"===n)return escape(u).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var l="",c=0;c<u.length;++c){var s=u.charCodeAt(c);45===s||46===s||95===s||126===s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||o===r.RFC1738&&(40===s||41===s)?l+=u.charAt(c):s<128?l+=a[s]:s<2048?l+=a[192|s>>6]+a[128|63&s]:s<55296||s>=57344?l+=a[224|s>>12]+a[128|s>>6&63]+a[128|63&s]:(c+=1,s=65536+((1023&s)<<10|1023&u.charCodeAt(c)),l+=a[240|s>>18]+a[128|s>>12&63]+a[128|s>>6&63]+a[128|63&s])}return l},isBuffer:function(e){return!(!e||"object"!==typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(o(e)){for(var n=[],r=0;r<e.length;r+=1)n.push(t(e[r]));return n}return t(e)},merge:function e(t,n,r){if(!n)return t;if("object"!==typeof n){if(o(t))t.push(n);else{if(!t||"object"!==typeof t)return[t,n];(r&&(r.plainObjects||r.allowPrototypes)||!i.call(Object.prototype,n))&&(t[n]=!0)}return t}if(!t||"object"!==typeof t)return[t].concat(n);var a=t;return o(t)&&!o(n)&&(a=u(t,r)),o(t)&&o(n)?(n.forEach((function(n,o){if(i.call(t,o)){var a=t[o];a&&"object"===typeof a&&n&&"object"===typeof n?t[o]=e(a,n,r):t.push(n)}else t[o]=n})),t):Object.keys(n).reduce((function(t,o){var a=n[o];return i.call(t,o)?t[o]=e(t[o],a,r):t[o]=a,t}),a)}}},111:function(e,t,n){e.exports=n(282)},282:function(e,t,n){"use strict";var r,i=(r=n(206))&&"object"==typeof r&&"default"in r?r.default:r,o=n(206);function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function u(e,t){e.prototype=Object.create(t.prototype),function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var i=n[r],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&void 0===e[i]&&Object.defineProperty(e,i,o)}}(e.prototype.constructor=e,t)}function l(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var c=function(e,t,n,r,i,o,a,u){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,i,o,a,u],s=0;(l=new Error(t.replace(/%s/g,(function(){return c[s++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}};function s(e,t,n){if("selectionStart"in e&&"selectionEnd"in e)e.selectionStart=t,e.selectionEnd=n;else{var r=e.createTextRange();r.collapse(!0),r.moveStart("character",t),r.moveEnd("character",n-t),r.select()}}var f={9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"};function d(e,t,n){var r="",i="",o=null,a=[];if(void 0===t&&(t="_"),null==n&&(n=f),!e||"string"!=typeof e)return{maskChar:t,formatChars:n,mask:null,prefix:null,lastEditablePosition:null,permanents:[]};var u=!1;return e.split("").forEach((function(e){u=!u&&"\\"===e||(u||!n[e]?(a.push(r.length),r.length===a.length-1&&(i+=e)):o=r.length+1,r+=e,!1)})),{maskChar:t,formatChars:n,prefix:i,mask:r,lastEditablePosition:o,permanents:a}}function h(e,t){return-1!==e.permanents.indexOf(t)}function p(e,t,n){var r=e.mask,i=e.formatChars;if(!n)return!1;if(h(e,t))return r[t]===n;var o=i[r[t]];return new RegExp(o).test(n)}function v(e,t){return t.split("").every((function(t,n){return h(e,n)||!p(e,n,t)}))}function m(e,t){var n=e.maskChar,r=e.prefix;if(!n){for(;t.length>r.length&&h(e,t.length-1);)t=t.slice(0,t.length-1);return t.length}for(var i=r.length,o=t.length;o>=r.length;o--){var a=t[o];if(!h(e,o)&&p(e,o,a)){i=o+1;break}}return i}function g(e,t){return m(e,t)===e.mask.length}function y(e,t){var n=e.maskChar,r=e.mask,i=e.prefix;if(!n){for((t=_(e,"",t,0)).length<i.length&&(t=i);t.length<r.length&&h(e,t.length);)t+=r[t.length];return t}if(t)return _(e,y(e,""),t,0);for(var o=0;o<r.length;o++)h(e,o)?t+=r[o]:t+=n;return t}function _(e,t,n,r){var i=e.mask,o=e.maskChar,a=e.prefix,u=n.split(""),l=g(e,t);return!o&&r>t.length&&(t+=i.slice(t.length,r)),u.every((function(n){for(;s=n,h(e,c=r)&&s!==i[c];){if(r>=t.length&&(t+=i[r]),u=n,o&&h(e,r)&&u===o)return!0;if(++r>=i.length)return!1}var u,c,s;return!p(e,r,n)&&n!==o||(r<t.length?t=o||l||r<a.length?t.slice(0,r)+n+t.slice(r+1):(t=t.slice(0,r)+n+t.slice(r),y(e,t)):o||(t+=n),++r<i.length)})),t}function b(e,t){for(var n=e.mask,r=t;r<n.length;++r)if(!h(e,r))return r;return null}function D(e){return e||0===e?e+"":""}function w(e,t,n,r,i){var o=e.mask,a=e.prefix,u=e.lastEditablePosition,l=t,c="",s=0,f=0,d=Math.min(i.start,n.start);return n.end>i.start?f=(s=function(e,t,n,r){var i=e.mask,o=e.maskChar,a=n.split(""),u=r;return a.every((function(t){for(;a=t,h(e,n=r)&&a!==i[n];)if(++r>=i.length)return!1;var n,a;return(p(e,r,t)||t===o)&&r++,r<i.length})),r-u}(e,0,c=l.slice(i.start,n.end),d))?i.length:0:l.length<r.length&&(f=r.length-l.length),l=r,f&&(1!==f||i.length||(d=i.start===n.start?b(e,n.start):function(e,t){for(var n=t;0<=n;--n)if(!h(e,n))return n;return null}(e,n.start)),l=function(e,t,n,r){var i=n+r,o=e.maskChar,a=e.mask,u=e.prefix,l=t.split("");if(o)return l.map((function(t,r){return r<n||i<=r?t:h(e,r)?a[r]:o})).join("");for(var c=i;c<l.length;c++)h(e,c)&&(l[c]="");return n=Math.max(u.length,n),l.splice(n,i-n),t=l.join(""),y(e,t)}(e,l,d,f)),l=_(e,l,c,d),(d+=s)>=o.length?d=o.length:d<a.length&&!s?d=a.length:d>=a.length&&d<u&&s&&(d=b(e,d)),c||(c=null),{value:l=y(e,l),enteredString:c,selection:{start:d,end:d}}}function x(e){return"function"==typeof e}function k(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame}function C(e){return(k()?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame:function(){return setTimeout(e,1e3/60)})(e)}function E(e){(k()||clearTimeout)(e)}var A=function(e){function t(t){var n=e.call(this,t)||this;n.focused=!1,n.mounted=!1,n.previousSelection=null,n.selectionDeferId=null,n.saveSelectionLoopDeferId=null,n.saveSelectionLoop=function(){n.previousSelection=n.getSelection(),n.saveSelectionLoopDeferId=C(n.saveSelectionLoop)},n.runSaveSelectionLoop=function(){null===n.saveSelectionLoopDeferId&&n.saveSelectionLoop()},n.stopSaveSelectionLoop=function(){null!==n.saveSelectionLoopDeferId&&(E(n.saveSelectionLoopDeferId),n.saveSelectionLoopDeferId=null,n.previousSelection=null)},n.getInputDOMNode=function(){if(!n.mounted)return null;var e=o.findDOMNode(l(l(n))),t="undefined"!=typeof window&&e instanceof window.Element;if(e&&!t)return null;if("INPUT"!==e.nodeName&&(e=e.querySelector("input")),!e)throw new Error("react-input-mask: inputComponent doesn't contain input node");return e},n.getInputValue=function(){var e=n.getInputDOMNode();return e?e.value:null},n.setInputValue=function(e){var t=n.getInputDOMNode();t&&(n.value=e,t.value=e)},n.setCursorToEnd=function(){var e=m(n.maskOptions,n.value),t=b(n.maskOptions,e);null!==t&&n.setCursorPosition(t)},n.setSelection=function(e,t,r){void 0===r&&(r={});var i=n.getInputDOMNode(),o=n.isFocused();i&&o&&(r.deferred||s(i,e,t),null!==n.selectionDeferId&&E(n.selectionDeferId),n.selectionDeferId=C((function(){n.selectionDeferId=null,s(i,e,t)})),n.previousSelection={start:e,end:t,length:Math.abs(t-e)})},n.getSelection=function(){return function(e){var t=0,n=0;if("selectionStart"in e&&"selectionEnd"in e)t=e.selectionStart,n=e.selectionEnd;else{var r=document.selection.createRange();r.parentElement()===e&&(t=-r.moveStart("character",-e.value.length),n=-r.moveEnd("character",-e.value.length))}return{start:t,end:n,length:n-t}}(n.getInputDOMNode())},n.getCursorPosition=function(){return n.getSelection().start},n.setCursorPosition=function(e){n.setSelection(e,e)},n.isFocused=function(){return n.focused},n.getBeforeMaskedValueChangeConfig=function(){var e=n.maskOptions,t=e.mask,r=e.maskChar,i=e.permanents,o=e.formatChars;return{mask:t,maskChar:r,permanents:i,alwaysShowMask:!!n.props.alwaysShowMask,formatChars:o}},n.isInputAutofilled=function(e,t,r,i){var o=n.getInputDOMNode();try{if(o.matches(":-webkit-autofill"))return!0}catch(c){}return!n.focused||i.end<r.length&&t.end===e.length},n.onChange=function(e){var t=l(l(n)).beforePasteState,r=l(l(n)).previousSelection,i=n.props.beforeMaskedValueChange,o=n.getInputValue(),a=n.value,u=n.getSelection();n.isInputAutofilled(o,u,a,r)&&(a=y(n.maskOptions,""),r={start:0,end:0,length:0}),t&&(r=t.selection,a=t.value,u={start:r.start+o.length,end:r.start+o.length,length:0},o=a.slice(0,r.start)+o+a.slice(r.end),n.beforePasteState=null);var c=w(n.maskOptions,o,u,a,r),s=c.enteredString,f=c.selection,d=c.value;if(x(i)){var h=i({value:d,selection:f},{value:a,selection:r},s,n.getBeforeMaskedValueChangeConfig());d=h.value,f=h.selection}n.setInputValue(d),x(n.props.onChange)&&n.props.onChange(e),n.isWindowsPhoneBrowser?n.setSelection(f.start,f.end,{deferred:!0}):n.setSelection(f.start,f.end)},n.onFocus=function(e){var t=n.props.beforeMaskedValueChange,r=n.maskOptions,i=r.mask,o=r.prefix;if(n.focused=!0,n.mounted=!0,i){if(n.value)m(n.maskOptions,n.value)<n.maskOptions.mask.length&&n.setCursorToEnd();else{var a=y(n.maskOptions,o),u=y(n.maskOptions,a),l=m(n.maskOptions,u),c=b(n.maskOptions,l),s={start:c,end:c};if(x(t)){var f=t({value:u,selection:s},{value:n.value,selection:null},null,n.getBeforeMaskedValueChangeConfig());u=f.value,s=f.selection}var d=u!==n.getInputValue();d&&n.setInputValue(u),d&&x(n.props.onChange)&&n.props.onChange(e),n.setSelection(s.start,s.end)}n.runSaveSelectionLoop()}x(n.props.onFocus)&&n.props.onFocus(e)},n.onBlur=function(e){var t=n.props.beforeMaskedValueChange,r=n.maskOptions.mask;if(n.stopSaveSelectionLoop(),n.focused=!1,r&&!n.props.alwaysShowMask&&v(n.maskOptions,n.value)){var i="";x(t)&&(i=t({value:i,selection:null},{value:n.value,selection:n.previousSelection},null,n.getBeforeMaskedValueChangeConfig()).value);var o=i!==n.getInputValue();o&&n.setInputValue(i),o&&x(n.props.onChange)&&n.props.onChange(e)}x(n.props.onBlur)&&n.props.onBlur(e)},n.onMouseDown=function(e){if(!n.focused&&document.addEventListener){n.mouseDownX=e.clientX,n.mouseDownY=e.clientY,n.mouseDownTime=(new Date).getTime();document.addEventListener("mouseup",(function e(t){if(document.removeEventListener("mouseup",e),n.focused){var r=Math.abs(t.clientX-n.mouseDownX),i=Math.abs(t.clientY-n.mouseDownY),o=Math.max(r,i),a=(new Date).getTime()-n.mouseDownTime;(o<=10&&a<=200||o<=5&&a<=300)&&n.setCursorToEnd()}}))}x(n.props.onMouseDown)&&n.props.onMouseDown(e)},n.onPaste=function(e){x(n.props.onPaste)&&n.props.onPaste(e),e.defaultPrevented||(n.beforePasteState={value:n.getInputValue(),selection:n.getSelection()},n.setInputValue(""))},n.handleRef=function(e){null==n.props.children&&x(n.props.inputRef)&&n.props.inputRef(e)};var r=t.mask,i=t.maskChar,a=t.formatChars,u=t.alwaysShowMask,c=t.beforeMaskedValueChange,f=t.defaultValue,h=t.value;n.maskOptions=d(r,i,a),null==f&&(f=""),null==h&&(h=f);var p=D(h);if(n.maskOptions.mask&&(u||p)&&(p=y(n.maskOptions,p),x(c))){var g=t.value;null==t.value&&(g=f),p=c({value:p,selection:null},{value:g=D(g),selection:null},null,n.getBeforeMaskedValueChangeConfig()).value}return n.value=p,n}u(t,e);var n=t.prototype;return n.componentDidMount=function(){this.mounted=!0,this.getInputDOMNode()&&(this.isWindowsPhoneBrowser=function(){var e=new RegExp("windows","i"),t=new RegExp("phone","i"),n=navigator.userAgent;return e.test(n)&&t.test(n)}(),this.maskOptions.mask&&this.getInputValue()!==this.value&&this.setInputValue(this.value))},n.componentDidUpdate=function(){var e=this.previousSelection,t=this.props,n=t.beforeMaskedValueChange,r=t.alwaysShowMask,i=t.mask,o=t.maskChar,a=t.formatChars,u=this.maskOptions,l=r||this.isFocused(),c=null!=this.props.value,s=c?D(this.props.value):this.value,f=e?e.start:null;if(this.maskOptions=d(i,o,a),this.maskOptions.mask){!u.mask&&this.isFocused()&&this.runSaveSelectionLoop();var h=this.maskOptions.mask&&this.maskOptions.mask!==u.mask;if(u.mask||c||(s=this.getInputValue()),(h||this.maskOptions.mask&&(s||l))&&(s=y(this.maskOptions,s)),h){var p=m(this.maskOptions,s);(null===f||p<f)&&(f=g(this.maskOptions,s)?p:b(this.maskOptions,p))}!this.maskOptions.mask||!v(this.maskOptions,s)||l||c&&this.props.value||(s="");var _={start:f,end:f};if(x(n)){var w=n({value:s,selection:_},{value:this.value,selection:this.previousSelection},null,this.getBeforeMaskedValueChangeConfig());s=w.value,_=w.selection}this.value=s;var k=this.getInputValue()!==this.value;k?(this.setInputValue(this.value),this.forceUpdate()):h&&this.forceUpdate();var C=!1;null!=_.start&&null!=_.end&&(C=!e||e.start!==_.start||e.end!==_.end),(C||k)&&this.setSelection(_.start,_.end)}else u.mask&&(this.stopSaveSelectionLoop(),this.forceUpdate())},n.componentWillUnmount=function(){this.mounted=!1,null!==this.selectionDeferId&&E(this.selectionDeferId),this.stopSaveSelectionLoop()},n.render=function(){var e,t=this.props,n=(t.mask,t.alwaysShowMask,t.maskChar,t.formatChars,t.inputRef,t.beforeMaskedValueChange,t.children),r=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],0<=t.indexOf(n)||(i[n]=e[n]);return i}(t,["mask","alwaysShowMask","maskChar","formatChars","inputRef","beforeMaskedValueChange","children"]);if(n){x(n)||c(!1);var o=["onChange","onPaste","onMouseDown","onFocus","onBlur","value","disabled","readOnly"],u=a({},r);o.forEach((function(e){return delete u[e]})),e=n(u),o.filter((function(t){return null!=e.props[t]&&e.props[t]!==r[t]})).length&&c(!1)}else e=i.createElement("input",a({ref:this.handleRef},r));var l={onFocus:this.onFocus,onBlur:this.onBlur};return this.maskOptions.mask&&(r.disabled||r.readOnly||(l.onChange=this.onChange,l.onPaste=this.onPaste,l.onMouseDown=this.onMouseDown),null!=r.value&&(l.value=this.value)),e=i.cloneElement(e,l)},t}(i.Component);e.exports=A},170:function(e,t,n){"use strict";var r=n(476),i=n(680),o=n(154),a=r("%TypeError%"),u=r("%WeakMap%",!0),l=r("%Map%",!0),c=i("WeakMap.prototype.get",!0),s=i("WeakMap.prototype.set",!0),f=i("WeakMap.prototype.has",!0),d=i("Map.prototype.get",!0),h=i("Map.prototype.set",!0),p=i("Map.prototype.has",!0),v=function(e,t){for(var n,r=e;null!==(n=r.next);r=n)if(n.key===t)return r.next=n.next,n.next=e.next,e.next=n,n};e.exports=function(){var e,t,n,r={assert:function(e){if(!r.has(e))throw new a("Side channel does not contain "+o(e))},get:function(r){if(u&&r&&("object"===typeof r||"function"===typeof r)){if(e)return c(e,r)}else if(l){if(t)return d(t,r)}else if(n)return function(e,t){var n=v(e,t);return n&&n.value}(n,r)},has:function(r){if(u&&r&&("object"===typeof r||"function"===typeof r)){if(e)return f(e,r)}else if(l){if(t)return p(t,r)}else if(n)return function(e,t){return!!v(e,t)}(n,r);return!1},set:function(r,i){u&&r&&("object"===typeof r||"function"===typeof r)?(e||(e=new u),s(e,r,i)):l?(t||(t=new l),h(t,r,i)):(n||(n={key:{},next:null}),function(e,t,n){var r=v(e,t);r?r.value=n:e.next={key:t,next:e.next,value:n}}(n,r,i))}};return r}},654:function(){}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.m=e,n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))},n.u=function(e){return"static/js/"+e+".c1ccfd29.chunk.js"},n.miniCssF=function(e){},n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={},t="vmui:";n.l=function(r,i,o,a){if(e[r])e[r].push(i);else{var u,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),s=0;s<c.length;s++){var f=c[s];if(f.getAttribute("src")==r||f.getAttribute("data-webpack")==t+o){u=f;break}}u||(l=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,n.nc&&u.setAttribute("nonce",n.nc),u.setAttribute("data-webpack",t+o),u.src=r),e[r]=[i];var d=function(t,n){u.onerror=u.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],u.parentNode&&u.parentNode.removeChild(u),i&&i.forEach((function(e){return e(n)})),t)return t(n)},h=setTimeout(d.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=d.bind(null,u.onerror),u.onload=d.bind(null,u.onload),l&&document.head.appendChild(u)}}}(),n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="./",function(){var e={179:0};n.f.j=function(t,r){var i=n.o(e,t)?e[t]:void 0;if(0!==i)if(i)r.push(i[2]);else{var o=new Promise((function(n,r){i=e[t]=[n,r]}));r.push(i[2]=o);var a=n.p+n.u(t),u=new Error;n.l(a,(function(r){if(n.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",u.name="ChunkLoadError",u.type=o,u.request=a,i[1](u)}}),"chunk-"+t,t)}};var t=function(t,r){var i,o,a=r[0],u=r[1],l=r[2],c=0;if(a.some((function(t){return 0!==e[t]}))){for(i in u)n.o(u,i)&&(n.m[i]=u[i]);if(l)l(n)}for(t&&t(r);c<a.length;c++)o=a[c],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self.webpackChunkvmui=self.webpackChunkvmui||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),function(){"use strict";var e={};n.r(e),n.d(e,{AlarmIcon:function(){return $n},ArrowDownIcon:function(){return Pn},ArrowDropDownIcon:function(){return Rn},CalendarIcon:function(){return jn},ChartIcon:function(){return Un},ClockIcon:function(){return zn},CloseIcon:function(){return Mn},CodeIcon:function(){return Wn},CopyIcon:function(){return er},DeleteIcon:function(){return Qn},DoneIcon:function(){return Zn},DragIcon:function(){return tr},ErrorIcon:function(){return Bn},InfoIcon:function(){return On},IssueIcon:function(){return ir},KeyboardIcon:function(){return Yn},LogoFullIcon:function(){return An},LogoIcon:function(){return Sn},MinusIcon:function(){return Jn},MoreIcon:function(){return ur},PlayCircleOutlineIcon:function(){return Vn},PlayIcon:function(){return Hn},PlusIcon:function(){return Gn},QuestionIcon:function(){return or},RefreshIcon:function(){return Ln},RestartIcon:function(){return Fn},SettingsIcon:function(){return Nn},StorageIcon:function(){return ar},SuccessIcon:function(){return In},TableIcon:function(){return qn},TimelineIcon:function(){return nr},TuneIcon:function(){return lr},VisibilityIcon:function(){return Kn},VisibilityOffIcon:function(){return Xn},WarningIcon:function(){return Tn},WikiIcon:function(){return rr}});var t,r=n(206),i=n(658),o=n.n(i),a=n(443),u=n.n(a),l=n(446),c=n.n(l),s=n(635),f=n.n(s);function d(e){if(Array.isArray(e))return e}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function p(e,t){if(e){if("string"===typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}function v(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function m(e,t){return d(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(s){c=!0,i=s}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return u}}(e,t)||p(e,t)||v()}function g(e,t){var n="undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=p(e))||t&&e&&"number"===typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}function y(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _(e){return function(e){if(Array.isArray(e))return h(e)}(e)||y(e)||p(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function D(e){return D="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},D(e)}function w(e){var t=function(e,t){if("object"!==D(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==D(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===D(t)?t:String(t)}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,w(r.key),r)}}function k(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function C(e,t){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},C(e,t)}function E(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&C(e,t)}function A(e){return A=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},A(e)}function S(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function N(e,t){if(t&&("object"===D(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function M(e){var t=S();return function(){var n,r=A(e);if(t){var i=A(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return N(this,n)}}function F(e,t,n){return F=S()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&C(i,n.prototype),i},F.apply(null,arguments)}function O(e){var t="function"===typeof Map?new Map:void 0;return O=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return F(e,arguments,A(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),C(r,e)},O(e)}function T(){return T=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},T.apply(this,arguments)}o().extend(u()),o().extend(c()),o().extend(f()),function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"}(t||(t={}));var B,I="popstate";function L(e,t){if(!1===e||null===e||"undefined"===typeof e)throw new Error(t)}function P(e,t){if(!e){"undefined"!==typeof console&&console.warn(t);try{throw new Error(t)}catch(n){}}}function R(e,t){return{usr:e.state,key:e.key,idx:t}}function z(e,t,n,r){return void 0===n&&(n=null),T({pathname:"string"===typeof e?e:e.pathname,search:"",hash:""},"string"===typeof t?$(t):t,{state:n,key:t&&t.key||r||Math.random().toString(36).substr(2,8)})}function j(e){var t=e.pathname,n=void 0===t?"/":t,r=e.search,i=void 0===r?"":r,o=e.hash,a=void 0===o?"":o;return i&&"?"!==i&&(n+="?"===i.charAt(0)?i:"?"+i),a&&"#"!==a&&(n+="#"===a.charAt(0)?a:"#"+a),n}function $(e){var t={};if(e){var n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));var r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function Y(e,n,r,i){void 0===i&&(i={});var o=i,a=o.window,u=void 0===a?document.defaultView:a,l=o.v5Compat,c=void 0!==l&&l,s=u.history,f=t.Pop,d=null,h=p();function p(){return(s.state||{idx:null}).idx}function v(){var e=t.Pop,n=p();if(null!=n){var r=n-h;f=e,h=n,d&&d({action:f,location:g.location,delta:r})}else P(!1,"You are trying to block a POP navigation to a location that was not created by @remix-run/router. The block will fail silently in production, but in general you should do all navigation with the router (instead of using window.history.pushState directly) to avoid this situation.")}function m(e){var t="null"!==u.location.origin?u.location.origin:u.location.href,n="string"===typeof e?e:j(e);return L(t,"No window.location.(origin|href) available to create URL for href: "+n),new URL(n,t)}null==h&&(h=0,s.replaceState(T({},s.state,{idx:h}),""));var g={get action(){return f},get location(){return e(u,s)},listen:function(e){if(d)throw new Error("A history only accepts one active listener");return u.addEventListener(I,v),d=e,function(){u.removeEventListener(I,v),d=null}},createHref:function(e){return n(u,e)},createURL:m,encodeLocation:function(e){var t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,n){f=t.Push;var i=z(g.location,e,n);r&&r(i,e);var o=R(i,h=p()+1),a=g.createHref(i);try{s.pushState(o,"",a)}catch(l){u.location.assign(a)}c&&d&&d({action:f,location:g.location,delta:1})},replace:function(e,n){f=t.Replace;var i=z(g.location,e,n);r&&r(i,e);var o=R(i,h=p()),a=g.createHref(i);s.replaceState(o,"",a),c&&d&&d({action:f,location:g.location,delta:0})},go:function(e){return s.go(e)}};return g}function H(e,t,n){void 0===n&&(n="/");var r=K(("string"===typeof t?$(t):t).pathname||"/",n);if(null==r)return null;var i=V(e);!function(e){e.sort((function(e,t){return e.score!==t.score?t.score-e.score:function(e,t){var n=e.length===t.length&&e.slice(0,-1).every((function(e,n){return e===t[n]}));return n?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((function(e){return e.childrenIndex})),t.routesMeta.map((function(e){return e.childrenIndex})))}))}(i);for(var o=null,a=0;null==o&&a<i.length;++a)o=G(i[a],Z(r));return o}function V(e,t,n,r){void 0===t&&(t=[]),void 0===n&&(n=[]),void 0===r&&(r="");var i=function(e,i,o){var a={relativePath:void 0===o?e.path||"":o,caseSensitive:!0===e.caseSensitive,childrenIndex:i,route:e};a.relativePath.startsWith("/")&&(L(a.relativePath.startsWith(r),'Absolute route path "'+a.relativePath+'" nested under path "'+r+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),a.relativePath=a.relativePath.slice(r.length));var u=re([r,a.relativePath]),l=n.concat(a);e.children&&e.children.length>0&&(L(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+u+'".'),V(e.children,t,l,u)),(null!=e.path||e.index)&&t.push({path:u,score:Q(u,e.index),routesMeta:l})};return e.forEach((function(e,t){var n;if(""!==e.path&&null!=(n=e.path)&&n.includes("?")){var r,o=g(U(e.path));try{for(o.s();!(r=o.n()).done;){var a=r.value;i(e,t,a)}}catch(u){o.e(u)}finally{o.f()}}else i(e,t)})),t}function U(e){var t=e.split("/");if(0===t.length)return[];var n,r=d(n=t)||y(n)||p(n)||v(),i=r[0],o=r.slice(1),a=i.endsWith("?"),u=i.replace(/\?$/,"");if(0===o.length)return a?[u,""]:[u];var l=U(o.join("/")),c=[];return c.push.apply(c,_(l.map((function(e){return""===e?u:[u,e].join("/")})))),a&&c.push.apply(c,_(l)),c.map((function(t){return e.startsWith("/")&&""===t?"/":t}))}!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(B||(B={}));var q=/^:\w+$/,W=function(e){return"*"===e};function Q(e,t){var n=e.split("/"),r=n.length;return n.some(W)&&(r+=-2),t&&(r+=2),n.filter((function(e){return!W(e)})).reduce((function(e,t){return e+(q.test(t)?3:""===t?1:10)}),r)}function G(e,t){for(var n=e.routesMeta,r={},i="/",o=[],a=0;a<n.length;++a){var u=n[a],l=a===n.length-1,c="/"===i?t:t.slice(i.length)||"/",s=J({path:u.relativePath,caseSensitive:u.caseSensitive,end:l},c);if(!s)return null;Object.assign(r,s.params);var f=u.route;o.push({params:r,pathname:re([i,s.pathname]),pathnameBase:ie(re([i,s.pathnameBase])),route:f}),"/"!==s.pathnameBase&&(i=re([i,s.pathnameBase]))}return o}function J(e,t){"string"===typeof e&&(e={path:e,caseSensitive:!1,end:!0});var n=function(e,t,n){void 0===t&&(t=!1);void 0===n&&(n=!0);X("*"===e||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were "'+e.replace(/\*$/,"/*")+'" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to "'+e.replace(/\*$/,"/*")+'".');var r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/\/:(\w+)/g,(function(e,t){return r.push(t),"/([^\\/]+)"}));e.endsWith("*")?(r.push("*"),i+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":""!==e&&"/"!==e&&(i+="(?:(?=\\/|$))");var o=new RegExp(i,t?void 0:"i");return[o,r]}(e.path,e.caseSensitive,e.end),r=m(n,2),i=r[0],o=r[1],a=t.match(i);if(!a)return null;var u=a[0],l=u.replace(/(.)\/+$/,"$1"),c=a.slice(1);return{params:o.reduce((function(e,t,n){if("*"===t){var r=c[n]||"";l=u.slice(0,u.length-r.length).replace(/(.)\/+$/,"$1")}return e[t]=function(e,t){try{return decodeURIComponent(e)}catch(n){return X(!1,'The value for the URL param "'+t+'" will not be decoded because the string "'+e+'" is a malformed URL segment. This is probably due to a bad percent encoding ('+n+")."),e}}(c[n]||"",t),e}),{}),pathname:u,pathnameBase:l,pattern:e}}function Z(e){try{return decodeURI(e)}catch(t){return X(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function K(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;var n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&"/"!==r?null:e.slice(n)||"/"}function X(e,t){if(!e){"undefined"!==typeof console&&console.warn(t);try{throw new Error(t)}catch(n){}}}function ee(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the `to."+n+'` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.'}function te(e){return e.filter((function(e,t){return 0===t||e.route.path&&e.route.path.length>0}))}function ne(e,t,n,r){var i;void 0===r&&(r=!1),"string"===typeof e?i=$(e):(L(!(i=T({},e)).pathname||!i.pathname.includes("?"),ee("?","pathname","search",i)),L(!i.pathname||!i.pathname.includes("#"),ee("#","pathname","hash",i)),L(!i.search||!i.search.includes("#"),ee("#","search","hash",i)));var o,a=""===e||""===i.pathname,u=a?"/":i.pathname;if(r||null==u)o=n;else{var l=t.length-1;if(u.startsWith("..")){for(var c=u.split("/");".."===c[0];)c.shift(),l-=1;i.pathname=c.join("/")}o=l>=0?t[l]:"/"}var s=function(e,t){void 0===t&&(t="/");var n="string"===typeof e?$(e):e,r=n.pathname,i=n.search,o=void 0===i?"":i,a=n.hash,u=void 0===a?"":a,l=r?r.startsWith("/")?r:function(e,t){var n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((function(e){".."===e?n.length>1&&n.pop():"."!==e&&n.push(e)})),n.length>1?n.join("/"):"/"}(r,t):t;return{pathname:l,search:oe(o),hash:ae(u)}}(i,o),f=u&&"/"!==u&&u.endsWith("/"),d=(a||"."===u)&&n.endsWith("/");return s.pathname.endsWith("/")||!f&&!d||(s.pathname+="/"),s}var re=function(e){return e.join("/").replace(/\/\/+/g,"/")},ie=function(e){return e.replace(/\/+$/,"").replace(/^\/*/,"/")},oe=function(e){return e&&"?"!==e?e.startsWith("?")?e:"?"+e:""},ae=function(e){return e&&"#"!==e?e.startsWith("#")?e:"#"+e:""},ue=function(e){E(n,e);var t=M(n);function n(){return b(this,n),t.apply(this,arguments)}return k(n)}(O(Error));var le=k((function e(t,n,r,i){b(this,e),void 0===i&&(i=!1),this.status=t,this.statusText=n||"",this.internal=i,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}));function ce(e){return e instanceof le}var se=["post","put","patch","delete"],fe=(new Set(se),["get"].concat(se));new Set(fe),new Set([301,302,303,307,308]),new Set([307,308]),"undefined"!==typeof window&&"undefined"!==typeof window.document&&window.document.createElement;Symbol("deferred");function de(){return de=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},de.apply(this,arguments)}var he="function"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t},pe=r.useState,ve=r.useEffect,me=r.useLayoutEffect,ge=r.useDebugValue;function ye(e){var t=e.getSnapshot,n=e.value;try{var r=t();return!he(n,r)}catch(i){return!0}}"undefined"===typeof window||"undefined"===typeof window.document||window.document.createElement,r.useSyncExternalStore;var _e=r.createContext(null);var be=r.createContext(null);var De=r.createContext(null);var we=r.createContext(null);var xe=r.createContext(null);var ke=r.createContext({outlet:null,matches:[]});var Ce=r.createContext(null);function Ee(){return null!=r.useContext(xe)}function Ae(){return Ee()||L(!1),r.useContext(xe).location}function Se(){Ee()||L(!1);var e=r.useContext(we),t=e.basename,n=e.navigator,i=r.useContext(ke).matches,o=Ae().pathname,a=JSON.stringify(te(i).map((function(e){return e.pathnameBase}))),u=r.useRef(!1);r.useEffect((function(){u.current=!0}));var l=r.useCallback((function(e,r){if(void 0===r&&(r={}),u.current)if("number"!==typeof e){var i=ne(e,JSON.parse(a),o,"path"===r.relative);"/"!==t&&(i.pathname="/"===i.pathname?t:re([t,i.pathname])),(r.replace?n.replace:n.push)(i,r.state,r)}else n.go(e)}),[t,n,a,o]);return l}var Ne=r.createContext(null);function Me(e,t){var n=(void 0===t?{}:t).relative,i=r.useContext(ke).matches,o=Ae().pathname,a=JSON.stringify(te(i).map((function(e){return e.pathnameBase})));return r.useMemo((function(){return ne(e,JSON.parse(a),o,"path"===n)}),[e,a,o,n])}function Fe(){var e=function(){var e,t=r.useContext(Ce),n=Pe(Te.UseRouteError),i=Re(Te.UseRouteError);if(t)return t;return null==(e=n.errors)?void 0:e[i]}(),t=ce(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,i="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:i},a={padding:"2px 4px",backgroundColor:i};return r.createElement(r.Fragment,null,r.createElement("h2",null,"Unhandled Thrown Error!"),r.createElement("h3",{style:{fontStyle:"italic"}},t),n?r.createElement("pre",{style:o},n):null,r.createElement("p",null,"\ud83d\udcbf Hey developer \ud83d\udc4b"),r.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own\xa0",r.createElement("code",{style:a},"errorElement")," props on\xa0",r.createElement("code",{style:a},"<Route>")))}var Oe,Te,Be=function(e){E(n,e);var t=M(n);function n(e){var r;return b(this,n),(r=t.call(this,e)).state={location:e.location,error:e.error},r}return k(n,[{key:"componentDidCatch",value:function(e,t){console.error("React Router caught the following error during render",e,t)}},{key:"render",value:function(){return this.state.error?r.createElement(ke.Provider,{value:this.props.routeContext},r.createElement(Ce.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}],[{key:"getDerivedStateFromError",value:function(e){return{error:e}}},{key:"getDerivedStateFromProps",value:function(e,t){return t.location!==e.location?{error:e.error,location:e.location}:{error:e.error||t.error,location:t.location}}}]),n}(r.Component);function Ie(e){var t=e.routeContext,n=e.match,i=e.children,o=r.useContext(_e);return o&&o.static&&o.staticContext&&n.route.errorElement&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),r.createElement(ke.Provider,{value:t},i)}function Le(e,t,n){if(void 0===t&&(t=[]),null==e){if(null==n||!n.errors)return null;e=n.matches}var i=e,o=null==n?void 0:n.errors;if(null!=o){var a=i.findIndex((function(e){return e.route.id&&(null==o?void 0:o[e.route.id])}));a>=0||L(!1),i=i.slice(0,Math.min(i.length,a+1))}return i.reduceRight((function(e,a,u){var l=a.route.id?null==o?void 0:o[a.route.id]:null,c=n?a.route.errorElement||r.createElement(Fe,null):null,s=t.concat(i.slice(0,u+1)),f=function(){return r.createElement(Ie,{match:a,routeContext:{outlet:e,matches:s}},l?c:void 0!==a.route.element?a.route.element:e)};return n&&(a.route.errorElement||0===u)?r.createElement(Be,{location:n.location,component:c,error:l,children:f(),routeContext:{outlet:null,matches:s}}):f()}),null)}function Pe(e){var t=r.useContext(be);return t||L(!1),t}function Re(e){var t=function(e){var t=r.useContext(ke);return t||L(!1),t}(),n=t.matches[t.matches.length-1];return n.route.id||L(!1),n.route.id}!function(e){e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator"}(Oe||(Oe={})),function(e){e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator"}(Te||(Te={}));var ze;function je(e){return function(e){var t=r.useContext(ke).outlet;return t?r.createElement(Ne.Provider,{value:e},t):t}(e.context)}function $e(e){L(!1)}function Ye(e){var n=e.basename,i=void 0===n?"/":n,o=e.children,a=void 0===o?null:o,u=e.location,l=e.navigationType,c=void 0===l?t.Pop:l,s=e.navigator,f=e.static,d=void 0!==f&&f;Ee()&&L(!1);var h=i.replace(/^\/*/,"/"),p=r.useMemo((function(){return{basename:h,navigator:s,static:d}}),[h,s,d]);"string"===typeof u&&(u=$(u));var v=u,m=v.pathname,g=void 0===m?"/":m,y=v.search,_=void 0===y?"":y,b=v.hash,D=void 0===b?"":b,w=v.state,x=void 0===w?null:w,k=v.key,C=void 0===k?"default":k,E=r.useMemo((function(){var e=K(g,h);return null==e?null:{pathname:e,search:_,hash:D,state:x,key:C}}),[h,g,_,D,x,C]);return null==E?null:r.createElement(we.Provider,{value:p},r.createElement(xe.Provider,{children:a,value:{location:E,navigationType:c}}))}function He(e){var n=e.children,i=e.location,o=r.useContext(_e);return function(e,n){Ee()||L(!1);var i,o=r.useContext(we).navigator,a=r.useContext(be),u=r.useContext(ke).matches,l=u[u.length-1],c=l?l.params:{},s=(l&&l.pathname,l?l.pathnameBase:"/"),f=(l&&l.route,Ae());if(n){var d,h="string"===typeof n?$(n):n;"/"===s||(null==(d=h.pathname)?void 0:d.startsWith(s))||L(!1),i=h}else i=f;var p=i.pathname||"/",v=H(e,{pathname:"/"===s?p:p.slice(s.length)||"/"}),m=Le(v&&v.map((function(e){return Object.assign({},e,{params:Object.assign({},c,e.params),pathname:re([s,o.encodeLocation?o.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?s:re([s,o.encodeLocation?o.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])})})),u,a||void 0);return n&&m?r.createElement(xe.Provider,{value:{location:de({pathname:"/",search:"",hash:"",state:null,key:"default"},i),navigationType:t.Pop}},m):m}(o&&!n?o.router.routes:Ue(n),i)}!function(e){e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error"}(ze||(ze={}));var Ve=new Promise((function(){}));r.Component;function Ue(e,t){void 0===t&&(t=[]);var n=[];return r.Children.forEach(e,(function(e,i){if(r.isValidElement(e))if(e.type!==r.Fragment){e.type!==$e&&L(!1),e.props.index&&e.props.children&&L(!1);var o=[].concat(_(t),[i]),a={id:e.props.id||o.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,hasErrorBoundary:null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle};e.props.children&&(a.children=Ue(e.props.children,o)),n.push(a)}else n.push.apply(n,Ue(e.props.children,t))})),n}function qe(){return qe=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},qe.apply(this,arguments)}function We(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}function Qe(e){return void 0===e&&(e=""),new URLSearchParams("string"===typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((function(t,n){var r=e[n];return t.concat(Array.isArray(r)?r.map((function(e){return[n,e]})):[[n,r]])}),[]))}var Ge=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset"],Je=["aria-current","caseSensitive","className","end","style","to","children"];function Ze(e){var t=e.basename,n=e.children,i=e.window,o=r.useRef();null==o.current&&(o.current=function(e){return void 0===e&&(e={}),Y((function(e,t){var n=$(e.location.hash.substr(1)),r=n.pathname,i=void 0===r?"/":r,o=n.search,a=void 0===o?"":o,u=n.hash;return z("",{pathname:i,search:a,hash:void 0===u?"":u},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){var n=e.document.querySelector("base"),r="";if(n&&n.getAttribute("href")){var i=e.location.href,o=i.indexOf("#");r=-1===o?i:i.slice(0,o)}return r+"#"+("string"===typeof t?t:j(t))}),(function(e,t){P("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)}({window:i,v5Compat:!0}));var a=o.current,u=m(r.useState({action:a.action,location:a.location}),2),l=u[0],c=u[1];return r.useLayoutEffect((function(){return a.listen(c)}),[a]),r.createElement(Ye,{basename:t,children:n,location:l.location,navigationType:l.action,navigator:a})}var Ke=r.forwardRef((function(e,t){var n=e.onClick,i=e.relative,o=e.reloadDocument,a=e.replace,u=e.state,l=e.target,c=e.to,s=e.preventScrollReset,f=We(e,Ge),d=function(e,t){var n=(void 0===t?{}:t).relative;Ee()||L(!1);var i=r.useContext(we),o=i.basename,a=i.navigator,u=Me(e,{relative:n}),l=u.hash,c=u.pathname,s=u.search,f=c;return"/"!==o&&(f="/"===c?o:re([o,c])),a.createHref({pathname:f,search:s,hash:l})}(c,{relative:i}),h=function(e,t){var n=void 0===t?{}:t,i=n.target,o=n.replace,a=n.state,u=n.preventScrollReset,l=n.relative,c=Se(),s=Ae(),f=Me(e,{relative:l});return r.useCallback((function(t){if(function(e,t){return 0===e.button&&(!t||"_self"===t)&&!function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)}(t,i)){t.preventDefault();var n=void 0!==o?o:j(s)===j(f);c(e,{replace:n,state:a,preventScrollReset:u,relative:l})}}),[s,c,f,o,a,i,e,u,l])}(c,{replace:a,state:u,target:l,preventScrollReset:s,relative:i});return r.createElement("a",qe({},f,{href:d,onClick:o?n:function(e){n&&n(e),e.defaultPrevented||h(e)},ref:t,target:l}))}));var Xe=r.forwardRef((function(e,t){var n=e["aria-current"],i=void 0===n?"page":n,o=e.caseSensitive,a=void 0!==o&&o,u=e.className,l=void 0===u?"":u,c=e.end,s=void 0!==c&&c,f=e.style,d=e.to,h=e.children,p=We(e,Je),v=Me(d,{relative:p.relative}),m=Ae(),g=r.useContext(be),y=r.useContext(we).navigator,_=y.encodeLocation?y.encodeLocation(v).pathname:v.pathname,b=m.pathname,D=g&&g.navigation&&g.navigation.location?g.navigation.location.pathname:null;a||(b=b.toLowerCase(),D=D?D.toLowerCase():null,_=_.toLowerCase());var w,x=b===_||!s&&b.startsWith(_)&&"/"===b.charAt(_.length),k=null!=D&&(D===_||!s&&D.startsWith(_)&&"/"===D.charAt(_.length)),C=x?i:void 0;w="function"===typeof l?l({isActive:x,isPending:k}):[l,x?"active":null,k?"pending":null].filter(Boolean).join(" ");var E="function"===typeof f?f({isActive:x,isPending:k}):f;return r.createElement(Ke,qe({},p,{"aria-current":C,className:w,ref:t,style:E,to:d}),"function"===typeof h?h({isActive:x,isPending:k}):h)}));var et,tt;function nt(e){var t=r.useRef(Qe(e)),n=Ae(),i=r.useMemo((function(){return function(e,t){var n,r=Qe(e),i=g(t.keys());try{var o=function(){var e=n.value;r.has(e)||t.getAll(e).forEach((function(t){r.append(e,t)}))};for(i.s();!(n=i.n()).done;)o()}catch(a){i.e(a)}finally{i.f()}return r}(n.search,t.current)}),[n.search]),o=Se(),a=r.useCallback((function(e,t){var n=Qe("function"===typeof e?e(i):e);o("?"+n,t)}),[o,i]);return[i,a]}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmitImpl="useSubmitImpl",e.UseFetcher="useFetcher"})(et||(et={})),function(e){e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(tt||(tt={}));var rt;function it(e,t,n){return(t=w(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function at(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ot(Object(n),!0).forEach((function(t){it(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ot(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var ut,lt,ct={home:"/",metrics:"/metrics",dashboards:"/dashboards",cardinality:"/cardinality",topQueries:"/top-queries",trace:"/trace",icons:"/icons"},st={header:{tenant:!0,stepControl:!0,timeSelector:!0,executionControls:!0}},ft=(it(rt={},ct.home,at({title:"Query"},st)),it(rt,ct.metrics,{title:"Explore metrics",header:{tenant:!0,stepControl:!0,timeSelector:!0}}),it(rt,ct.cardinality,{title:"Explore cardinality",header:{tenant:!0,cardinalityDatePicker:!0}}),it(rt,ct.topQueries,{title:"Top queries",header:{tenant:!0}}),it(rt,ct.trace,{title:"Trace analyzer",header:{}}),it(rt,ct.dashboards,at({title:"Dashboards"},st)),it(rt,ct.icons,{title:"Icons",header:{}}),rt),dt=ct,ht=function(){var e,t=(null===(e=document.getElementById("root"))||void 0===e?void 0:e.dataset.params)||"{}";try{return JSON.parse(t)}catch(n){return console.error(n),{}}},pt=function(){return!!Object.keys(ht()).length},vt=function(e,t){return e.replace(/(\/select\/)(\d+|\d.+)(\/)(.+)/,"$1".concat(t,"/$4"))},mt=n(776),gt=n.n(mt),yt=n(7),_t=n.n(yt),bt={table:100,chart:20,code:1e3},Dt=[{id:"small",height:function(){return.2*window.innerHeight}},{id:"medium",isDefault:!0,height:function(){return.4*window.innerHeight}},{id:"large",height:function(){return.8*window.innerHeight}}],wt=function(e,t){var n=window.location.hash.split("?")[1],r=gt().parse(n,{ignoreQueryPrefix:!0});return _t()(r,e,t||"")},xt=function(e,t){t?window.localStorage.setItem(e,JSON.stringify({value:t})):Ct([e]),window.dispatchEvent(new Event("storage"))},kt=function(e){var t=window.localStorage.getItem(e);if(null!==t)try{var n;return null===(n=JSON.parse(t))||void 0===n?void 0:n.value}catch(r){return t}},Ct=function(e){return e.forEach((function(e){return window.localStorage.removeItem(e)}))};!function(e){e.emptyServer="Please enter Server URL",e.validServer="Please provide a valid Server URL",e.validQuery="Please enter a valid Query and execute it",e.traceNotFound="Not found the tracing information",e.emptyTitle="Please enter title",e.positiveNumber="Please enter positive number",e.validStep="Please enter a valid step"}(ut||(ut={})),function(e){e.system="system",e.light="light",e.dark="dark"}(lt||(lt={}));var Et=function(e){return getComputedStyle(document.documentElement).getPropertyValue("--".concat(e))},At=function(e,t){document.documentElement.style.setProperty("--".concat(e),t)},St=function(){return window.matchMedia("(prefers-color-scheme: dark)").matches},Nt=wt("g0.tenantID",""),Mt={serverUrl:function(e){var t=ht().serverURL||window.location.href.replace(/\/(?:prometheus\/)?(?:graph|vmui)\/.*/,"/prometheus");return e?vt(t,e):t}(Nt),tenantId:Nt,theme:kt("THEME")||lt.system,isDarkTheme:null};function Ft(e,t){switch(t.type){case"SET_SERVER":return at(at({},e),{},{serverUrl:t.payload});case"SET_TENANT_ID":return at(at({},e),{},{tenantId:t.payload});case"SET_THEME":return xt("THEME",t.payload),at(at({},e),{},{theme:t.payload});case"SET_DARK_THEME":return at(at({},e),{},{isDarkTheme:(n=e.theme,n===lt.system&&St()||n===lt.dark)});default:throw new Error}var n}var Ot=n(856),Tt=0;function Bt(e,t,n,r,i){var o,a,u={};for(a in t)"ref"==a?o=t[a]:u[a]=t[a];var l={type:e,props:u,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--Tt,__source:i,__self:r};if("function"==typeof e&&(o=e.defaultProps))for(a in o)void 0===u[a]&&(u[a]=o[a]);return Ot.YM.vnode&&Ot.YM.vnode(l),l}var It=(0,r.createContext)({}),Lt=function(){return(0,r.useContext)(It).state},Pt=function(){return(0,r.useContext)(It).dispatch},Rt=Object.entries(Mt).reduce((function(e,t){var n=m(t,2),r=n[0],i=n[1];return at(at({},e),{},it({},r,wt(r)||i))}),{}),zt="YYYY-MM-DD",jt="YYYY-MM-DD HH:mm:ss",$t="YYYY-MM-DD[T]HH:mm:ss",Yt=window.innerWidth/4,Ht=1,Vt=1578e8,Ut=Intl.supportedValuesOf,qt=Ut?Ut("timeZone"):["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/La_Rioja","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montreal","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Katmandu","Asia/Khandyga","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis"],Wt=[{long:"years",short:"y",possible:"year"},{long:"weeks",short:"w",possible:"week"},{long:"days",short:"d",possible:"day"},{long:"hours",short:"h",possible:"hour"},{long:"minutes",short:"m",possible:"min"},{long:"seconds",short:"s",possible:"sec"},{long:"milliseconds",short:"ms",possible:"millisecond"}],Qt=Wt.map((function(e){return e.short})),Gt=function(e){return Math.round(1e3*e)/1e3},Jt=function(e){var t=e.match(/\d+/g),n=e.match(/[a-zA-Z]+/g);if(n&&t&&Qt.includes(n[0]))return it({},n[0],t[0])},Zt=function(e){var t=Wt.map((function(e){return e.short})).join("|"),n=new RegExp("\\d+[".concat(t,"]+"),"g"),r=(e.match(n)||[]).reduce((function(e,t){var n=Jt(t);return n?at(at({},e),n):at({},e)}),{});return o().duration(r).asSeconds()},Kt=function(e,t){var n=(t||o()().toDate()).valueOf()/1e3,r=Zt(e);return{start:n-r,end:n,step:function(e){var t=Gt(e),n=Math.round(e);return e>=100&&(t=n-n%10),e<100&&e>=10&&(t=n-n%5),e<10&&e>=1&&(t=n),e<1&&e>.01&&(t=Math.round(40*e)/40),tn(o().duration(t||.001,"seconds").asMilliseconds()).replace(/\s/g,"")}(r/Yt),date:Xt(t||o()().toDate())}},Xt=function(e){return o().tz(e).utc().format($t)},en=function(e){return o().tz(e).format($t)},tn=function(e){var t=Math.floor(e%1e3),n=Math.floor(e/1e3%60),r=Math.floor(e/1e3/60%60),i=Math.floor(e/1e3/3600%24),o=Math.floor(e/864e5),a=["d","h","m","s","ms"];return[o,i,r,n,t].map((function(e,t){return e?"".concat(e).concat(a[t]):""})).filter((function(e){return e})).join(" ")},nn=function(e){var t=o()(1e3*e);return t.isValid()?t.toDate():new Date},rn=[{title:"Last 5 minutes",duration:"5m"},{title:"Last 15 minutes",duration:"15m"},{title:"Last 30 minutes",duration:"30m",isDefault:!0},{title:"Last 1 hour",duration:"1h"},{title:"Last 3 hours",duration:"3h"},{title:"Last 6 hours",duration:"6h"},{title:"Last 12 hours",duration:"12h"},{title:"Last 24 hours",duration:"24h"},{title:"Last 2 days",duration:"2d"},{title:"Last 7 days",duration:"7d"},{title:"Last 30 days",duration:"30d"},{title:"Last 90 days",duration:"90d"},{title:"Last 180 days",duration:"180d"},{title:"Last 1 year",duration:"1y"},{title:"Yesterday",duration:"1d",until:function(){return o()().tz().subtract(1,"day").endOf("day").toDate()}},{title:"Today",duration:"1d",until:function(){return o()().tz().endOf("day").toDate()}}].map((function(e){return at({id:e.title.replace(/\s/g,"_").toLocaleLowerCase(),until:e.until?e.until:function(){return o()().tz().toDate()}},e)})),on=function(e){var t,n=e.relativeTimeId,r=e.defaultDuration,i=e.defaultEndInput,o=null===(t=rn.find((function(e){return e.isDefault})))||void 0===t?void 0:t.id,a=n||wt("g0.relative_time",o),u=rn.find((function(e){return e.id===a}));return{relativeTimeId:u?a:"none",duration:u?u.duration:r,endInput:u?u.until():i}},an=function(e){var t=o()().tz(e);return"UTC".concat(t.format("Z"))},un=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new RegExp(e,"i");return qt.reduce((function(n,r){var i=(r.match(/^(.*?)\//)||[])[1]||"unknown",o=an(r),a=o.replace(/UTC|0/,""),u=r.replace(/[/_]/g," "),l={region:r,utc:o,search:"".concat(r," ").concat(o," ").concat(u," ").concat(a)},c=!e||e&&t.test(l.search);return c&&n[i]?n[i].push(l):c&&(n[i]=[l]),n}),{})},ln=function(e){o().tz.setDefault(e)},cn=kt("TIMEZONE")||o().tz.guess();ln(cn);var sn,fn=wt("g0.range_input"),dn=on({defaultDuration:fn||"1h",defaultEndInput:(sn=wt("g0.end_input",o()().utc().format($t)),o()(sn).utcOffset(0,!0).toDate()),relativeTimeId:fn?wt("g0.relative_time","none"):void 0}),hn=dn.duration,pn=dn.endInput,vn=dn.relativeTimeId,mn={duration:hn,period:Kt(hn,pn),relativeTime:vn,timezone:cn};function gn(e,t){switch(t.type){case"SET_DURATION":return at(at({},e),{},{duration:t.payload,period:Kt(t.payload,nn(e.period.end)),relativeTime:"none"});case"SET_RELATIVE_TIME":return at(at({},e),{},{duration:t.payload.duration,period:Kt(t.payload.duration,t.payload.until),relativeTime:t.payload.id});case"SET_PERIOD":var n=function(e){var t=e.to.valueOf()-e.from.valueOf();return tn(t)}(t.payload);return at(at({},e),{},{duration:n,period:Kt(n,t.payload.to),relativeTime:"none"});case"RUN_QUERY":var r=on({relativeTimeId:e.relativeTime,defaultDuration:e.duration,defaultEndInput:nn(e.period.end)}),i=r.duration,o=r.endInput;return at(at({},e),{},{period:Kt(i,o)});case"RUN_QUERY_TO_NOW":return at(at({},e),{},{period:Kt(e.duration)});case"SET_TIMEZONE":return ln(t.payload),xt("TIMEZONE",t.payload),at(at({},e),{},{timezone:t.payload});default:throw new Error}}var yn=(0,r.createContext)({}),_n=function(){return(0,r.useContext)(yn).state},bn=function(){return(0,r.useContext)(yn).dispatch},Dn=function(){var e,t=(null===(e=(window.location.hash.split("?")[1]||"").match(/g\d+\.expr/g))||void 0===e?void 0:e.length)||1;return new Array(t>4?4:t).fill(1).map((function(e,t){return wt("g".concat(t,".expr"),"")}))}(),wn={query:Dn,queryHistory:Dn.map((function(e){return{index:0,values:[e]}})),autocomplete:kt("AUTOCOMPLETE")||!1};function xn(e,t){switch(t.type){case"SET_QUERY":return at(at({},e),{},{query:t.payload.map((function(e){return e}))});case"SET_QUERY_HISTORY":return at(at({},e),{},{queryHistory:t.payload});case"SET_QUERY_HISTORY_BY_INDEX":return e.queryHistory.splice(t.payload.queryNumber,1,t.payload.value),at(at({},e),{},{queryHistory:e.queryHistory});case"TOGGLE_AUTOCOMPLETE":return xt("AUTOCOMPLETE",!e.autocomplete),at(at({},e),{},{autocomplete:!e.autocomplete});default:throw new Error}}var kn=(0,r.createContext)({}),Cn=function(){return(0,r.useContext)(kn).state},En=function(){return(0,r.useContext)(kn).dispatch},An=function(){return Bt("svg",{viewBox:"0 0 74 24",fill:"currentColor",children:[Bt("path",{d:"M6.11767 10.4759C6.47736 10.7556 6.91931 10.909 7.37503 10.9121H7.42681C7.90756 10.9047 8.38832 10.7199 8.67677 10.4685C10.1856 9.18921 14.5568 5.18138 14.5568 5.18138C15.7254 4.09438 12.4637 3.00739 7.42681 3H7.36764C2.3308 3.00739 -0.930935 4.09438 0.237669 5.18138C0.237669 5.18138 4.60884 9.18921 6.11767 10.4759ZM8.67677 12.6424C8.31803 12.9248 7.87599 13.0808 7.41941 13.0861H7.37503C6.91845 13.0808 6.47641 12.9248 6.11767 12.6424C5.0822 11.7551 1.38409 8.42018 0.000989555 7.14832V9.07829C0.000989555 9.29273 0.0823481 9.57372 0.222877 9.70682L0.293316 9.7712L0.293344 9.77122C1.33784 10.7258 4.83903 13.9255 6.11767 15.0161C6.47641 15.2985 6.91845 15.4545 7.37503 15.4597H7.41941C7.90756 15.4449 8.38092 15.2601 8.67677 15.0161C9.9859 13.9069 13.6249 10.572 14.5642 9.70682C14.7121 9.57372 14.7861 9.29273 14.7861 9.07829V7.14832C12.7662 8.99804 10.7297 10.8295 8.67677 12.6424ZM7.41941 17.6263C7.87513 17.6232 8.31708 17.4698 8.67677 17.19C10.7298 15.3746 12.7663 13.5407 14.7861 11.6885V13.6259C14.7861 13.8329 14.7121 14.1139 14.5642 14.247C13.6249 15.1196 9.9859 18.4471 8.67677 19.5563C8.38092 19.8077 7.90756 19.9926 7.41941 20H7.37503C6.91931 19.9968 6.47736 19.8435 6.11767 19.5637C4.91427 18.5373 1.74219 15.6364 0.502294 14.5025C0.393358 14.4029 0.299337 14.3169 0.222877 14.247C0.0823481 14.1139 0.000989555 13.8329 0.000989555 13.6259V11.6885C1.38409 12.953 5.0822 16.2953 6.11767 17.1827C6.47641 17.4651 6.91845 17.6211 7.37503 17.6263H7.41941Z"}),Bt("path",{d:"M34.9996 5L29.1596 19.46H26.7296L20.8896 5H23.0496C23.2829 5 23.4729 5.05667 23.6196 5.17C23.7663 5.28333 23.8763 5.43 23.9496 5.61L27.3596 14.43C27.4729 14.7167 27.5796 15.0333 27.6796 15.38C27.7863 15.72 27.8863 16.0767 27.9796 16.45C28.0596 16.0767 28.1463 15.72 28.2396 15.38C28.3329 15.0333 28.4363 14.7167 28.5496 14.43L31.9396 5.61C31.9929 5.45667 32.0963 5.31667 32.2496 5.19C32.4096 5.06333 32.603 5 32.8297 5H34.9996ZM52.1763 5V19.46H49.8064V10.12C49.8064 9.74667 49.8263 9.34333 49.8663 8.91L45.4963 17.12C45.2897 17.5133 44.973 17.71 44.5463 17.71H44.1663C43.7397 17.71 43.4231 17.5133 43.2164 17.12L38.7963 8.88C38.8163 9.1 38.833 9.31667 38.8463 9.53C38.8597 9.74333 38.8663 9.94 38.8663 10.12V19.46H36.4963V5H38.5263C38.6463 5 38.7497 5.00333 38.8363 5.01C38.923 5.01667 38.9997 5.03333 39.0663 5.06C39.1397 5.08667 39.203 5.13 39.2563 5.19C39.3163 5.25 39.373 5.33 39.4263 5.43L43.7563 13.46C43.8697 13.6733 43.973 13.8933 44.0663 14.12C44.1663 14.3467 44.263 14.58 44.3563 14.82C44.4497 14.5733 44.5464 14.3367 44.6464 14.11C44.7464 13.8767 44.8531 13.6533 44.9664 13.44L49.2363 5.43C49.2897 5.33 49.3463 5.25 49.4063 5.19C49.4663 5.13 49.5297 5.08667 49.5963 5.06C49.6697 5.03333 49.7497 5.01667 49.8363 5.01C49.923 5.00333 50.0264 5 50.1464 5H52.1763ZM61.0626 18.73C61.7426 18.73 62.3492 18.6133 62.8826 18.38C63.4226 18.14 63.8792 17.81 64.2526 17.39C64.6259 16.97 64.9092 16.4767 65.1026 15.91C65.3026 15.3367 65.4026 14.72 65.4026 14.06V5.31H66.4226V14.06C66.4226 14.84 66.2993 15.57 66.0527 16.25C65.806 16.9233 65.4493 17.5133 64.9827 18.02C64.5227 18.52 63.9592 18.9133 63.2926 19.2C62.6326 19.4867 61.8892 19.63 61.0626 19.63C60.2359 19.63 59.4893 19.4867 58.8227 19.2C58.1627 18.9133 57.5992 18.52 57.1326 18.02C56.6726 17.5133 56.3193 16.9233 56.0727 16.25C55.826 15.57 55.7026 14.84 55.7026 14.06V5.31H56.7327V14.05C56.7327 14.71 56.8292 15.3267 57.0226 15.9C57.2226 16.4667 57.506 16.96 57.8727 17.38C58.246 17.8 58.6993 18.13 59.2327 18.37C59.7727 18.61 60.3826 18.73 61.0626 18.73ZM71.4438 19.46H70.4138V5.31H71.4438V19.46Z"})]})},Sn=function(){return Bt("svg",{viewBox:"0 0 15 17",fill:"currentColor",children:Bt("path",{d:"M6.11767 7.47586C6.47736 7.75563 6.91931 7.90898 7.37503 7.91213H7.42681C7.90756 7.90474 8.38832 7.71987 8.67677 7.46846C10.1856 6.18921 14.5568 2.18138 14.5568 2.18138C15.7254 1.09438 12.4637 0.00739 7.42681 0H7.36764C2.3308 0.00739 -0.930935 1.09438 0.237669 2.18138C0.237669 2.18138 4.60884 6.18921 6.11767 7.47586ZM8.67677 9.64243C8.31803 9.92483 7.87599 10.0808 7.41941 10.0861H7.37503C6.91845 10.0808 6.47641 9.92483 6.11767 9.64243C5.0822 8.75513 1.38409 5.42018 0.000989555 4.14832V6.07829C0.000989555 6.29273 0.0823481 6.57372 0.222877 6.70682L0.293316 6.7712L0.293344 6.77122C1.33784 7.72579 4.83903 10.9255 6.11767 12.0161C6.47641 12.2985 6.91845 12.4545 7.37503 12.4597H7.41941C7.90756 12.4449 8.38092 12.2601 8.67677 12.0161C9.9859 10.9069 13.6249 7.57198 14.5642 6.70682C14.7121 6.57372 14.7861 6.29273 14.7861 6.07829V4.14832C12.7662 5.99804 10.7297 7.82949 8.67677 9.64243ZM7.41941 14.6263C7.87513 14.6232 8.31708 14.4698 8.67677 14.19C10.7298 12.3746 12.7663 10.5407 14.7861 8.68853V10.6259C14.7861 10.8329 14.7121 11.1139 14.5642 11.247C13.6249 12.1196 9.9859 15.4471 8.67677 16.5563C8.38092 16.8077 7.90756 16.9926 7.41941 17H7.37503C6.91931 16.9968 6.47736 16.8435 6.11767 16.5637C4.91427 15.5373 1.74219 12.6364 0.502294 11.5025C0.393358 11.4029 0.299337 11.3169 0.222877 11.247C0.0823481 11.1139 0.000989555 10.8329 0.000989555 10.6259V8.68853C1.38409 9.95303 5.0822 13.2953 6.11767 14.1827C6.47641 14.4651 6.91845 14.6211 7.37503 14.6263H7.41941Z"})})},Nn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"})})},Mn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})})},Fn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8zm-6 8c0-1.65.67-3.15 1.76-4.24L6.34 7.34C4.9 8.79 4 10.79 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91z"})})},On=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"})})},Tn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})})},Bn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})})},In=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})})},Ln=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"})})},Pn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"})})},Rn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"m7 10 5 5 5-5z"})})},zn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:[Bt("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),Bt("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})]})},jn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z"})})},$n=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"m22 5.72-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39 6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"})})},Yn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2V8zm0 3h2v2h-2v-2zM8 8h2v2H8V8zm0 3h2v2H8v-2zm-1 2H5v-2h2v2zm0-3H5V8h2v2zm9 7H8v-2h8v2zm0-4h-2v-2h2v2zm0-3h-2V8h2v2zm3 3h-2v-2h2v2zm0-3h-2V8h2v2z"})})},Hn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M8 5v14l11-7z"})})},Vn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"m10 16.5 6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"})})},Un=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"m3.5 18.49 6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"})})},qn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M10 10.02h5V21h-5zM17 21h3c1.1 0 2-.9 2-2v-9h-5v11zm3-18H5c-1.1 0-2 .9-2 2v3h19V5c0-1.1-.9-2-2-2zM3 19c0 1.1.9 2 2 2h3V10H3v9z"})})},Wn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"})})},Qn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"})})},Gn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})})},Jn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M19 13H5v-2h14v2z"})})},Zn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M8.9999 14.7854L18.8928 4.8925C19.0803 4.70497 19.3347 4.59961 19.5999 4.59961C19.8651 4.59961 20.1195 4.70497 20.307 4.8925L21.707 6.2925C22.0975 6.68303 22.0975 7.31619 21.707 7.70672L9.70701 19.7067C9.31648 20.0972 8.68332 20.0972 8.2928 19.7067L2.6928 14.1067C2.50526 13.9192 2.3999 13.6648 2.3999 13.3996C2.3999 13.1344 2.50526 12.88 2.6928 12.6925L4.0928 11.2925C4.48332 10.902 5.11648 10.902 5.50701 11.2925L8.9999 14.7854Z"})})},Kn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"})})},Xn=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"})})},er=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"})})},tr=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M20 9H4v2h16V9zM4 15h16v-2H4v2z"})})},nr=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z"})})},rr=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:[Bt("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21 5C19.89 4.65 18.67 4.5 17.5 4.5C15.55 4.5 13.45 4.9 12 6C10.55 4.9 8.45 4.5 6.5 4.5C5.33 4.5 4.11 4.65 3 5C2.25 5.25 1.6 5.55 1 6V20.6C1 20.85 1.25 21.1 1.5 21.1C1.6 21.1 1.65 21.1 1.75 21.05C3.15 20.3 4.85 20 6.5 20C8.2 20 10.65 20.65 12 21.5C13.35 20.65 15.8 20 17.5 20C19.15 20 20.85 20.3 22.25 21.05C22.35 21.1 22.4 21.1 22.5 21.1C22.75 21.1 23 20.85 23 20.6V6C22.4 5.55 21.75 5.25 21 5ZM21 18.5C19.9 18.15 18.7 18 17.5 18C15.8 18 13.35 18.65 12 19.5C10.65 18.65 8.2 18 6.5 18C5.3 18 4.1 18.15 3 18.5V7C4.1 6.65 5.3 6.5 6.5 6.5C8.2 6.5 10.65 7.15 12 8C13.35 7.15 15.8 6.5 17.5 6.5C18.7 6.5 19.9 6.65 21 7V18.5Z"}),Bt("path",{d:"M17.5 10.5C18.38 10.5 19.23 10.59 20 10.76V9.24C19.21 9.09 18.36 9 17.5 9C15.8 9 14.26 9.29 13 9.83V11.49C14.13 10.85 15.7 10.5 17.5 10.5ZM13 12.49V14.15C14.13 13.51 15.7 13.16 17.5 13.16C18.38 13.16 19.23 13.25 20 13.42V11.9C19.21 11.75 18.36 11.66 17.5 11.66C15.8 11.66 14.26 11.96 13 12.49ZM17.5 14.33C15.8 14.33 14.26 14.62 13 15.16V16.82C14.13 16.18 15.7 15.83 17.5 15.83C18.38 15.83 19.23 15.92 20 16.09V14.57C19.21 14.41 18.36 14.33 17.5 14.33Z"}),Bt("path",{d:"M6.5 10.5C5.62 10.5 4.77 10.59 4 10.76V9.24C4.79 9.09 5.64 9 6.5 9C8.2 9 9.74 9.29 11 9.83V11.49C9.87 10.85 8.3 10.5 6.5 10.5ZM11 12.49V14.15C9.87 13.51 8.3 13.16 6.5 13.16C5.62 13.16 4.77 13.25 4 13.42V11.9C4.79 11.75 5.64 11.66 6.5 11.66C8.2 11.66 9.74 11.96 11 12.49ZM6.5 14.33C8.2 14.33 9.74 14.62 11 15.16V16.82C9.87 16.18 8.3 15.83 6.5 15.83C5.62 15.83 4.77 15.92 4 16.09V14.57C4.79 14.41 5.64 14.33 6.5 14.33Z"})]})},ir=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10 10-4.49 10-10S17.51 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3-8c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3z"})})},or=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 6C9.79 6 8 7.79 8 10H10C10 8.9 10.9 8 12 8C13.1 8 14 8.9 14 10C14 10.8792 13.4202 11.3236 12.7704 11.8217C11.9421 12.4566 11 13.1787 11 15H13C13 13.9046 13.711 13.2833 14.4408 12.6455C15.21 11.9733 16 11.2829 16 10C16 7.79 14.21 6 12 6ZM13 16V18H11V16H13Z"})})},ar=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M4 20h16c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm0-3h2v2H4v-2zM2 6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2zm4 1H4V5h2v2zm-2 7h16c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm0-3h2v2H4v-2z"})})},ur=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})},lr=function(){return Bt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Bt("path",{d:"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z"})})},cr=function(e){var t=m((0,r.useState)({width:0,height:0}),2),n=t[0],i=t[1];return(0,r.useEffect)((function(){var t=new ResizeObserver((function(e){var t=e[0].contentRect,n=t.width,r=t.height;i({width:n,height:r})}));return e&&t.observe(e),function(){e&&t.unobserve(e)}}),[e]),n},sr=n(123),fr=n.n(sr);function dr(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var hr=["to","isNavLink","children"],pr=function(e){var t=e.to,n=e.isNavLink,r=e.children,i=dr(e,hr);return n?Bt(Xe,at(at({to:t},i),{},{children:r})):Bt("div",at(at({},i),{},{children:r}))},vr=function(e){var t,n=e.activeItem,r=e.item,i=e.color,o=void 0===i?Et("color-primary"):i,a=e.activeNavRef,u=e.onChange,l=e.isNavLink;return Bt(pr,{className:fr()(it({"vm-tabs-item":!0,"vm-tabs-item_active":n===r.value},r.className||"",r.className)),isNavLink:l,to:r.value,style:{color:o},onClick:(t=r.value,function(){u&&u(t)}),ref:n===r.value?a:void 0,children:[r.icon&&Bt("div",{className:fr()({"vm-tabs-item__icon":!0,"vm-tabs-item__icon_single":!r.label}),children:r.icon}),r.label]})},mr=function(e){var t=e.activeItem,n=e.items,i=e.color,o=void 0===i?Et("color-primary"):i,a=e.onChange,u=e.indicatorPlacement,l=void 0===u?"bottom":u,c=e.isNavLink,s=cr(document.body),f=(0,r.useRef)(null),d=m((0,r.useState)({left:0,width:0,bottom:0}),2),h=d[0],p=d[1];return(0,r.useEffect)((function(){var e;if((null===(e=f.current)||void 0===e?void 0:e.base)instanceof HTMLElement){var t=f.current.base,n=t.offsetLeft,r=t.offsetWidth,i=t.offsetHeight;p({left:n,width:r,bottom:"top"===l?i-2:0})}}),[s,t,f,n]),Bt("div",{className:"vm-tabs",children:[n.map((function(e){return Bt(vr,{activeItem:t,item:e,onChange:a,color:o,activeNavRef:f,isNavLink:c},e.value)})),Bt("div",{className:"vm-tabs__indicator",style:at(at({},h),{},{borderColor:o})})]})},gr=[{value:"chart",icon:Bt(Un,{}),label:"Graph",prometheusCode:0},{value:"code",icon:Bt(Wn,{}),label:"JSON",prometheusCode:3},{value:"table",icon:Bt(qn,{}),label:"Table",prometheusCode:1}],yr=function(){var e=Cr().displayType,t=Er();return Bt(mr,{activeItem:e,items:gr,onChange:function(n){var r;t({type:"SET_DISPLAY_TYPE",payload:null!==(r=n)&&void 0!==r?r:e})}})},_r=wt("g0.tab",0),br=gr.find((function(e){return e.prometheusCode===+_r||e.value===_r})),Dr=kt("SERIES_LIMITS"),wr={displayType:(null===br||void 0===br?void 0:br.value)||"chart",nocache:!1,isTracingEnabled:!1,seriesLimits:Dr?JSON.parse(kt("SERIES_LIMITS")):bt,tableCompact:kt("TABLE_COMPACT")||!1};function xr(e,t){switch(t.type){case"SET_DISPLAY_TYPE":return at(at({},e),{},{displayType:t.payload});case"SET_SERIES_LIMITS":return xt("SERIES_LIMITS",JSON.stringify(t.payload)),at(at({},e),{},{seriesLimits:t.payload});case"TOGGLE_QUERY_TRACING":return at(at({},e),{},{isTracingEnabled:!e.isTracingEnabled});case"TOGGLE_NO_CACHE":return at(at({},e),{},{nocache:!e.nocache});case"TOGGLE_TABLE_COMPACT":return xt("TABLE_COMPACT",!e.tableCompact),at(at({},e),{},{tableCompact:!e.tableCompact});default:throw new Error}}var kr=(0,r.createContext)({}),Cr=function(){return(0,r.useContext)(kr).state},Er=function(){return(0,r.useContext)(kr).dispatch},Ar={customStep:wt("g0.step_input",""),yaxis:{limits:{enable:!1,range:{1:[0,0]}}}};function Sr(e,t){switch(t.type){case"TOGGLE_ENABLE_YAXIS_LIMITS":return at(at({},e),{},{yaxis:at(at({},e.yaxis),{},{limits:at(at({},e.yaxis.limits),{},{enable:!e.yaxis.limits.enable})})});case"SET_CUSTOM_STEP":return at(at({},e),{},{customStep:t.payload});case"SET_YAXIS_LIMITS":return at(at({},e),{},{yaxis:at(at({},e.yaxis),{},{limits:at(at({},e.yaxis.limits),{},{range:t.payload})})});default:throw new Error}}var Nr=(0,r.createContext)({}),Mr=function(){return(0,r.useContext)(Nr).state},Fr=function(){return(0,r.useContext)(Nr).dispatch},Or={runQuery:0,topN:wt("topN",10),date:wt("date",o()().tz().format(zt)),focusLabel:wt("focusLabel",""),match:wt("match",""),extraLabel:wt("extra_label","")};function Tr(e,t){switch(t.type){case"SET_TOP_N":return at(at({},e),{},{topN:t.payload});case"SET_DATE":return at(at({},e),{},{date:t.payload});case"SET_MATCH":return at(at({},e),{},{match:t.payload});case"SET_EXTRA_LABEL":return at(at({},e),{},{extraLabel:t.payload});case"SET_FOCUS_LABEL":return at(at({},e),{},{focusLabel:t.payload});case"RUN_QUERY":return at(at({},e),{},{runQuery:e.runQuery+1});default:throw new Error}}var Br=(0,r.createContext)({}),Ir=function(){return(0,r.useContext)(Br).state},Lr=function(){return(0,r.useContext)(Br).dispatch},Pr={topN:wt("topN",null),maxLifetime:wt("maxLifetime",""),runQuery:0};function Rr(e,t){switch(t.type){case"SET_TOP_N":return at(at({},e),{},{topN:t.payload});case"SET_MAX_LIFE_TIME":return at(at({},e),{},{maxLifetime:t.payload});case"SET_RUN_QUERY":return at(at({},e),{},{runQuery:e.runQuery+1});default:throw new Error}}var zr=(0,r.createContext)({}),jr=function(){return(0,r.useContext)(zr).state},$r={windows:"Windows",mac:"Mac OS",linux:"Linux"};function Yr(){var e=cr(document.body),t=function(){var e=["Android","webOS","iPhone","iPad","iPod","BlackBerry","Windows Phone"].map((function(e){return navigator.userAgent.match(new RegExp(e,"i"))})).some((function(e){return e})),t=window.innerWidth<500;return e||t},n=m((0,r.useState)(t()),2),i=n[0],o=n[1];return(0,r.useEffect)((function(){o(t())}),[e]),{isMobile:i}}var Hr={success:Bt(In,{}),error:Bt(Bn,{}),warning:Bt(Tn,{}),info:Bt(On,{})},Vr=function(e){var t,n=e.variant,r=e.children,i=Lt().isDarkTheme,o=Yr().isMobile;return Bt("div",{className:fr()((t={"vm-alert":!0},it(t,"vm-alert_".concat(n),n),it(t,"vm-alert_dark",i),it(t,"vm-alert_mobile",o),t)),children:[Bt("div",{className:"vm-alert__icon",children:Hr[n||"info"]}),Bt("div",{className:"vm-alert__content",children:r})]})},Ur=(0,r.createContext)({showInfoMessage:function(){}}),qr=function(){return(0,r.useContext)(Ur)},Wr={dashboardsSettings:[],dashboardsLoading:!1,dashboardsError:""};function Qr(e,t){switch(t.type){case"SET_DASHBOARDS_SETTINGS":return at(at({},e),{},{dashboardsSettings:t.payload});case"SET_DASHBOARDS_LOADING":return at(at({},e),{},{dashboardsLoading:t.payload});case"SET_DASHBOARDS_ERROR":return at(at({},e),{},{dashboardsError:t.payload});default:throw new Error}}var Gr=(0,r.createContext)({}),Jr=function(){return(0,r.useContext)(Gr).state},Zr=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return function(n){var r=n.children;return Bt(e,{children:Bt(t,{children:r})})}}),(function(e){var t=e.children;return Bt(Ot.HY,{children:t})}))}.apply(void 0,[function(e){var t=e.children,n=m((0,r.useReducer)(Ft,Rt),2),i=n[0],o=n[1],a=(0,r.useMemo)((function(){return{state:i,dispatch:o}}),[i,o]);return Bt(It.Provider,{value:a,children:t})},function(e){var t=e.children,n=m((0,r.useReducer)(gn,mn),2),i=n[0],o=n[1],a=(0,r.useMemo)((function(){return{state:i,dispatch:o}}),[i,o]);return Bt(yn.Provider,{value:a,children:t})},function(e){var t=e.children,n=m((0,r.useReducer)(xn,wn),2),i=n[0],o=n[1],a=(0,r.useMemo)((function(){return{state:i,dispatch:o}}),[i,o]);return Bt(kn.Provider,{value:a,children:t})},function(e){var t=e.children,n=m((0,r.useReducer)(xr,wr),2),i=n[0],o=n[1],a=(0,r.useMemo)((function(){return{state:i,dispatch:o}}),[i,o]);return Bt(kr.Provider,{value:a,children:t})},function(e){var t=e.children,n=m((0,r.useReducer)(Sr,Ar),2),i=n[0],o=n[1],a=(0,r.useMemo)((function(){return{state:i,dispatch:o}}),[i,o]);return Bt(Nr.Provider,{value:a,children:t})},function(e){var t=e.children,n=m((0,r.useReducer)(Tr,Or),2),i=n[0],o=n[1],a=(0,r.useMemo)((function(){return{state:i,dispatch:o}}),[i,o]);return Bt(Br.Provider,{value:a,children:t})},function(e){var t=e.children,n=m((0,r.useReducer)(Rr,Pr),2),i=n[0],o=n[1],a=(0,r.useMemo)((function(){return{state:i,dispatch:o}}),[i,o]);return Bt(zr.Provider,{value:a,children:t})},function(e){var t=e.children,n=Yr().isMobile,i=m((0,r.useState)({}),2),o=i[0],a=i[1],u=m((0,r.useState)(!1),2),l=u[0],c=u[1],s=m((0,r.useState)(void 0),2),f=s[0],d=s[1];(0,r.useEffect)((function(){if(f){a({message:f.text,variant:f.type,key:Date.now()}),c(!0);var e=setTimeout(h,4e3);return function(){return clearTimeout(e)}}}),[f]);var h=function(){d(void 0),c(!1)};return Bt(Ur.Provider,{value:{showInfoMessage:d},children:[l&&Bt("div",{className:fr()({"vm-snackbar":!0,"vm-snackbar_mobile":n}),children:Bt(Vr,{variant:o.variant,children:Bt("div",{className:"vm-snackbar-content",children:[Bt("span",{children:o.message}),Bt("div",{className:"vm-snackbar-content__close",onClick:h,children:Bt(Mn,{})})]})})}),t]})},function(e){var t=e.children,n=m((0,r.useReducer)(Qr,Wr),2),i=n[0],o=n[1],a=(0,r.useMemo)((function(){return{state:i,dispatch:o}}),[i,o]);return Bt(Gr.Provider,{value:a,children:t})}]),Kr=function(e){var t=e.activeMenu,n=e.label,r=e.value,i=e.color;return Bt(Xe,{className:fr()({"vm-header-nav-item":!0,"vm-header-nav-item_active":t===r}),style:{color:i},to:r,children:n})},Xr=function(e,t,n){(0,r.useEffect)((function(){var r=function(r){var i=null===e||void 0===e?void 0:e.current,o=r.target,a=(null===n||void 0===n?void 0:n.current)&&n.current.contains(o);!i||i.contains((null===r||void 0===r?void 0:r.target)||null)||a||t(r)};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),function(){document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r)}}),[e,t])},ei=function(e){var t,n=e.variant,r=void 0===n?"contained":n,i=e.color,o=void 0===i?"primary":i,a=e.size,u=void 0===a?"medium":a,l=e.children,c=e.endIcon,s=e.startIcon,f=e.fullWidth,d=void 0!==f&&f,h=e.className,p=e.disabled,v=e.onClick,m=e.onMouseDown;return Bt("button",{className:fr()((it(t={"vm-button":!0},"vm-button_".concat(r,"_").concat(o),!0),it(t,"vm-button_".concat(u),u),it(t,"vm-button_icon",(s||c)&&!l),it(t,"vm-button_full-width",d),it(t,"vm-button_with-icon",s||c),it(t,"vm-button_disabled",p),it(t,h||"",h),t)),disabled:p,onClick:v,onMouseDown:m,children:Bt(Ot.HY,{children:[s&&Bt("span",{className:"vm-button__start-icon",children:s}),l&&Bt("span",{children:l}),c&&Bt("span",{className:"vm-button__end-icon",children:c})]})})},ti=function(e){var t=e.children,n=e.buttonRef,i=e.placement,o=void 0===i?"bottom-left":i,a=e.open,u=void 0!==a&&a,l=e.onClose,c=e.offset,s=void 0===c?{top:6,left:0}:c,f=e.clickOutside,d=void 0===f||f,h=e.fullWidth,p=e.title,v=e.disabledFullScreen,g=Yr().isMobile,y=Se(),_=Ae(),b=m((0,r.useState)(!1),2),D=b[0],w=b[1],x=m((0,r.useState)({width:0,height:0}),2),k=x[0],C=x[1],E=(0,r.useRef)(null),A=function(){w(!1)};(0,r.useEffect)((function(){return window.addEventListener("scroll",A),function(){window.removeEventListener("scroll",A)}}),[]),(0,r.useEffect)((function(){w(u)}),[u]),(0,r.useEffect)((function(){return!D&&l&&l(),D&&g&&!v&&(document.body.style.overflow="hidden"),function(){document.body.style.overflow="auto"}}),[D]),(0,r.useEffect)((function(){var e,t;C({width:(null===E||void 0===E||null===(e=E.current)||void 0===e?void 0:e.clientWidth)||0,height:(null===E||void 0===E||null===(t=E.current)||void 0===t?void 0:t.clientHeight)||0}),w(!1)}),[E]);var S=(0,r.useMemo)((function(){var e=n.current;if(!e||!D)return{};var t=e.getBoundingClientRect(),r={top:0,left:0,width:"auto"},i="bottom-right"===o||"top-right"===o,a=null===o||void 0===o?void 0:o.includes("top"),u=(null===s||void 0===s?void 0:s.top)||0,l=(null===s||void 0===s?void 0:s.left)||0;r.left=r.left=t.left+l,r.top=t.height+t.top+u,i&&(r.left=t.right-k.width),a&&(r.top=t.top-k.height-u);var c=window,f=c.innerWidth,d=c.innerHeight,p=r.top+k.height+20>d,v=r.top-20<0,m=r.left+k.width+20>f,g=r.left-20<0;return p&&(r.top=t.top-k.height-u),v&&(r.top=t.height+t.top+u),m&&(r.left=t.right-k.width-l),g&&(r.left=t.left+l),h&&(r.width="".concat(t.width,"px")),r.top<0&&(r.top=20),r}),[n,o,D,t,h]);d&&Xr(E,(function(){return w(!1)}),n),(0,r.useEffect)((function(){if(E.current&&D&&(!g||v)){var e=E.current.getBoundingClientRect(),t=e.right,n=e.width;if(t>window.innerWidth){var r=window.innerWidth-20-n;E.current.style.left=r<window.innerWidth?"0":"".concat(r,"px")}}}),[D,E]);var N=function(){D&&g&&!v&&(y(_,{replace:!0}),l())};(0,r.useEffect)((function(){return window.addEventListener("popstate",N),function(){window.removeEventListener("popstate",N)}}),[D,g,v,_]);var M=fr()({"vm-popper":!0,"vm-popper_mobile":g&&!v,"vm-popper_open":(g||Object.keys(S).length)&&D});return Bt(Ot.HY,{children:(D||!k.width)&&r.default.createPortal(Bt("div",{className:M,ref:E,style:g&&!v?{}:S,children:[(p||g&&!v)&&Bt("div",{className:"vm-popper-header",children:[Bt("p",{className:"vm-popper-header__title",children:p}),Bt(ei,{variant:"text",size:"small",onClick:function(e){e.stopPropagation(),l()},children:Bt(Mn,{})})]}),t]}),document.body)})},ni=function(e){var t=e.activeMenu,n=e.label,i=e.color,o=e.background,a=e.submenu,u=e.direction,l=Ae().pathname,c=m((0,r.useState)(!1),2),s=c[0],f=c[1],d=m((0,r.useState)(null),2),h=d[0],p=d[1],v=(0,r.useRef)(null),g=function(){f(!1)},y=function(){h&&clearTimeout(h);var e=setTimeout(g,300);p(e)};return(0,r.useEffect)((function(){g()}),[l]),"column"===u?Bt(Ot.HY,{children:a.map((function(e){return Bt(Kr,{activeMenu:t,value:e.value,label:e.label||""},e.value)}))}):Bt("div",{className:fr()({"vm-header-nav-item":!0,"vm-header-nav-item_sub":!0,"vm-header-nav-item_open":s,"vm-header-nav-item_active":a.find((function(e){return e.value===t}))}),style:{color:i},onMouseEnter:function(){f(!0),h&&clearTimeout(h)},onMouseLeave:y,ref:v,children:[n,Bt(Rn,{}),Bt(ti,{open:s,placement:"bottom-left",offset:{top:12,left:0},onClose:g,buttonRef:v,children:Bt("div",{className:"vm-header-nav-item-submenu",style:{background:o},onMouseLeave:y,onMouseEnter:function(){h&&clearTimeout(h)},children:a.map((function(e){return Bt(Kr,{activeMenu:t,value:e.value,label:e.label||"",color:i},e.value)}))})})]})},ri=function(e){var t=e.color,n=e.background,i=e.direction,o=pt(),a=Jr().dashboardsSettings,u=Ae().pathname,l=m((0,r.useState)(u),2),c=l[0],s=l[1],f=(0,r.useMemo)((function(){return[{label:ft[dt.home].title,value:dt.home},{label:"Explore",submenu:[{label:ft[dt.metrics].title,value:dt.metrics},{label:ft[dt.cardinality].title,value:dt.cardinality},{label:ft[dt.topQueries].title,value:dt.topQueries}]},{label:ft[dt.trace].title,value:dt.trace},{label:ft[dt.dashboards].title,value:dt.dashboards,hide:o||!a.length}].filter((function(e){return!e.hide}))}),[o,a]);return(0,r.useEffect)((function(){s(u)}),[u]),Bt("nav",{className:fr()(it({"vm-header-nav":!0},"vm-header-nav_".concat(i),i)),children:f.map((function(e){return e.submenu?Bt(ni,{activeMenu:c,label:e.label||"",submenu:e.submenu,color:t,background:n,direction:i},e.label):Bt(Kr,{activeMenu:c,value:e.value,label:e.label||"",color:t},e.value)}))})},ii=function(e){var t=e.title,n=e.children,i=e.onClose,o=e.className,a=e.isOpen,u=void 0===a||a,l=Yr().isMobile,c=Se(),s=Ae(),f=function(e){"Escape"===e.key&&i()},d=function(e){e.stopPropagation()},h=function(){u&&(c(s,{replace:!0}),i())};(0,r.useEffect)((function(){return window.addEventListener("popstate",h),function(){window.removeEventListener("popstate",h)}}),[u,s]);return(0,r.useEffect)((function(){if(u)return document.body.style.overflow="hidden",window.addEventListener("keyup",f),function(){document.body.style.overflow="auto",window.removeEventListener("keyup",f)}}),[u]),r.default.createPortal(Bt("div",{className:fr()(it({"vm-modal":!0,"vm-modal_mobile":l},"".concat(o),o)),onMouseDown:i,children:Bt("div",{className:"vm-modal-content",children:[Bt("div",{className:"vm-modal-content-header",onMouseDown:d,children:[t&&Bt("div",{className:"vm-modal-content-header__title",children:t}),Bt("div",{className:"vm-modal-header__close",children:Bt(ei,{variant:"text",size:"small",onClick:i,children:Bt(Mn,{})})})]}),Bt("div",{className:"vm-modal-content-body",onMouseDown:d,children:n})]})}),document.body)},oi=function(e){var t=e.children,n=e.title,i=e.open,o=e.placement,a=void 0===o?"bottom-center":o,u=e.offset,l=void 0===u?{top:6,left:0}:u,c=Yr().isMobile,s=m((0,r.useState)(!1),2),f=s[0],d=s[1],h=m((0,r.useState)({width:0,height:0}),2),p=h[0],v=h[1],g=(0,r.useRef)(null),y=(0,r.useRef)(null),_=function(){return d(!1)};(0,r.useEffect)((function(){return window.addEventListener("scroll",_),function(){window.removeEventListener("scroll",_)}}),[]),(0,r.useEffect)((function(){y.current&&f&&v({width:y.current.clientWidth,height:y.current.clientHeight})}),[f]);var b=(0,r.useMemo)((function(){var e,t=null===g||void 0===g||null===(e=g.current)||void 0===e?void 0:e.base;if(!t||!f)return{};var n=t.getBoundingClientRect(),r={top:0,left:0},i="bottom-right"===a||"top-right"===a,o="bottom-left"===a||"top-left"===a,u=null===a||void 0===a?void 0:a.includes("top"),c=(null===l||void 0===l?void 0:l.top)||0,s=(null===l||void 0===l?void 0:l.left)||0;r.left=n.left-(p.width-n.width)/2+s,r.top=n.height+n.top+c,i&&(r.left=n.right-p.width),o&&(r.left=n.left+s),u&&(r.top=n.top-p.height-c);var d=window,h=d.innerWidth,v=d.innerHeight,m=r.top+p.height+20>v,y=r.top-20<0,_=r.left+p.width+20>h,b=r.left-20<0;return m&&(r.top=n.top-p.height-c),y&&(r.top=n.height+n.top+c),_&&(r.left=n.right-p.width-s),b&&(r.left=n.left+s),r.top<0&&(r.top=20),r.left<0&&(r.left=20),r}),[g,a,f,p]),D=function(){"boolean"!==typeof i&&d(!0)},w=function(){d(!1)};return(0,r.useEffect)((function(){"boolean"===typeof i&&d(i)}),[i]),(0,r.useEffect)((function(){var e,t=null===g||void 0===g||null===(e=g.current)||void 0===e?void 0:e.base;if(t)return t.addEventListener("mouseenter",D),t.addEventListener("mouseleave",w),function(){t.removeEventListener("mouseenter",D),t.removeEventListener("mouseleave",w)}}),[g]),Bt(Ot.HY,{children:[Bt(r.Fragment,{ref:g,children:t}),!c&&f&&r.default.createPortal(Bt("div",{className:"vm-tooltip",ref:y,style:b,children:n}),document.body)]})},ai=(Object.values($r).find((function(e){return navigator.userAgent.indexOf(e)>=0}))||"unknown")===$r.mac?"Cmd":"Ctrl",ui=[{title:"Query",list:[{keys:["Enter"],description:"Run"},{keys:["Shift","Enter"],description:"Multi-line queries"},{keys:[ai,"Arrow Up"],description:"Previous command from the Query history"},{keys:[ai,"Arrow Down"],description:"Next command from the Query history"},{keys:[ai,"Click by 'Eye'"],description:"Toggle multiple queries"}]},{title:"Graph",list:[{keys:[ai,"Scroll Up"],alt:["+"],description:"Zoom in"},{keys:[ai,"Scroll Down"],alt:["-"],description:"Zoom out"},{keys:[ai,"Click and Drag"],description:"Move the graph left/right"}]},{title:"Legend",list:[{keys:["Mouse Click"],description:"Select series"},{keys:[ai,"Mouse Click"],description:"Toggle multiple series"}]}],li="Shortcut keys",ci=function(e){var t=e.showTitle,n=m((0,r.useState)(!1),2),i=n[0],o=n[1],a=pt();return Bt(Ot.HY,{children:[Bt(oi,{open:!0!==t&&void 0,title:li,placement:"bottom-center",children:Bt(ei,{className:a?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Bt(Yn,{}),onClick:function(){o(!0)},children:t&&li})}),i&&Bt(ii,{title:"Shortcut keys",onClose:function(){o(!1)},children:Bt("div",{className:"vm-shortcuts",children:ui.map((function(e){return Bt("div",{className:"vm-shortcuts-section",children:[Bt("h3",{className:"vm-shortcuts-section__title",children:e.title}),Bt("div",{className:"vm-shortcuts-section-list",children:e.list.map((function(e){return Bt("div",{className:"vm-shortcuts-section-list-item",children:[Bt("div",{className:"vm-shortcuts-section-list-item__key",children:[e.keys.map((function(t,n){return Bt(Ot.HY,{children:[Bt("code",{children:t},t),n!==e.keys.length-1?"+":""]})})),e.alt&&e.alt.map((function(t,n){return Bt(Ot.HY,{children:["or",Bt("code",{children:t},t),n!==e.alt.length-1?"+":""]})}))]}),Bt("p",{className:"vm-shortcuts-section-list-item__description",children:e.description})]},e.keys.join("+"))}))})]},e.title)}))})})]})},si=function(e){var t=e.open;return Bt("button",{className:fr()({"vm-menu-burger":!0,"vm-menu-burger_opened":t}),children:Bt("span",{})})},fi=function(e){var t=e.background,n=e.color,i=Ae().pathname,o=Yr().isMobile,a=(0,r.useRef)(null),u=m((0,r.useState)(!1),2),l=u[0],c=u[1],s=function(){c(!1)};return(0,r.useEffect)(s,[i]),Xr(a,s),Bt("div",{className:"vm-header-sidebar",ref:a,children:[Bt("div",{className:fr()({"vm-header-sidebar-button":!0,"vm-header-sidebar-button_open":l}),onClick:function(){c((function(e){return!e}))},children:Bt(si,{open:l})}),Bt("div",{className:fr()({"vm-header-sidebar-menu":!0,"vm-header-sidebar-menu_open":l}),children:[Bt("div",{children:Bt(ri,{color:n,background:t,direction:"column"})}),Bt("div",{className:"vm-header-sidebar-menu-settings",children:!o&&Bt(ci,{showTitle:!0})})]})]})},di=function(e){var t=e.label,n=e.value,i=e.type,o=void 0===i?"text":i,a=e.error,u=void 0===a?"":a,l=e.placeholder,c=e.endIcon,s=e.startIcon,f=e.disabled,d=void 0!==f&&f,h=e.autofocus,p=void 0!==h&&h,v=e.helperText,m=e.inputmode,g=void 0===m?"text":m,y=e.onChange,_=e.onEnter,b=e.onKeyDown,D=e.onFocus,w=e.onBlur,x=Lt().isDarkTheme,k=Yr().isMobile,C=(0,r.useRef)(null),E=(0,r.useRef)(null),A=(0,r.useMemo)((function(){return"textarea"===o?E:C}),[o]),S=fr()({"vm-text-field__input":!0,"vm-text-field__input_error":u,"vm-text-field__input_icon-start":s,"vm-text-field__input_disabled":d,"vm-text-field__input_textarea":"textarea"===o}),N=function(e){b&&b(e),"Enter"!==e.key||e.shiftKey||(e.preventDefault(),_&&_())},M=function(e){d||y&&y(e.target.value)};(0,r.useEffect)((function(){var e;p&&!k&&(null===A||void 0===A||null===(e=A.current)||void 0===e?void 0:e.focus)&&A.current.focus()}),[A,p]);var F=function(){D&&D()},O=function(){w&&w()};return Bt("label",{className:fr()({"vm-text-field":!0,"vm-text-field_textarea":"textarea"===o,"vm-text-field_dark":x}),"data-replicated-value":n,children:[s&&Bt("div",{className:"vm-text-field__icon-start",children:s}),c&&Bt("div",{className:"vm-text-field__icon-end",children:c}),"textarea"===o?Bt("textarea",{className:S,disabled:d,ref:E,value:n,rows:1,inputMode:g,placeholder:l,autoCapitalize:"none",onInput:M,onKeyDown:N,onFocus:F,onBlur:O}):Bt("input",{className:S,disabled:d,ref:C,value:n,type:o,placeholder:l,inputMode:g,autoCapitalize:"none",onInput:M,onKeyDown:N,onFocus:F,onBlur:O}),t&&Bt("span",{className:"vm-text-field__label",children:t}),Bt("span",{className:"vm-text-field__error","data-show":!!u,children:u}),v&&!u&&Bt("span",{className:"vm-text-field__helper-text",children:v})]})},hi=function(e){var t=e.accountIds,n=pt(),i=Yr().isMobile,o=Lt(),a=o.tenantId,u=o.serverUrl,l=Pt(),c=bn(),s=m((0,r.useState)(""),2),f=s[0],d=s[1],h=m((0,r.useState)(!1),2),p=h[0],v=h[1],g=(0,r.useRef)(null),y=(0,r.useMemo)((function(){if(!f)return t;try{var e=new RegExp(f,"i");return t.filter((function(t){return e.test(t)})).sort((function(t,n){var r,i;return((null===(r=t.match(e))||void 0===r?void 0:r.index)||0)-((null===(i=n.match(e))||void 0===i?void 0:i.index)||0)}))}catch(n){return[]}}),[f,t]),_=(0,r.useMemo)((function(){return t.length>1&&!0}),[t,u]),b=function(){v((function(e){return!e}))},D=function(){v(!1)},w=function(e){return function(){var t=e;if(l({type:"SET_TENANT_ID",payload:t}),u){var n=vt(u,t);if(n===u)return;l({type:"SET_SERVER",payload:n}),c({type:"RUN_QUERY"})}D()}};return(0,r.useEffect)((function(){var e=(u.match(/(\/select\/)(\d+|\d.+)(\/)(.+)/)||[])[2];a&&a!==e?w(a)():w(e)()}),[u]),_?Bt("div",{className:"vm-tenant-input",children:[Bt(oi,{title:"Define Tenant ID if you need request to another storage",children:Bt("div",{ref:g,children:i?Bt("div",{className:"vm-mobile-option",onClick:b,children:[Bt("span",{className:"vm-mobile-option__icon",children:Bt(ar,{})}),Bt("div",{className:"vm-mobile-option-text",children:[Bt("span",{className:"vm-mobile-option-text__label",children:"Tenant ID"}),Bt("span",{className:"vm-mobile-option-text__value",children:a})]}),Bt("span",{className:"vm-mobile-option__arrow",children:Bt(Pn,{})})]}):Bt(ei,{className:n?"":"vm-header-button",variant:"contained",color:"primary",fullWidth:!0,startIcon:Bt(ar,{}),endIcon:Bt("div",{className:fr()({"vm-execution-controls-buttons__arrow":!0,"vm-execution-controls-buttons__arrow_open":p}),children:Bt(Pn,{})}),onClick:b,children:a})})}),Bt(ti,{open:p,placement:"bottom-right",onClose:D,buttonRef:g,title:i?"Define Tenant ID":void 0,children:Bt("div",{className:fr()({"vm-list vm-tenant-input-list":!0,"vm-list vm-tenant-input-list_mobile":i}),children:[Bt("div",{className:"vm-tenant-input-list__search",children:Bt(di,{autofocus:!0,label:"Search",value:f,onChange:d,type:"search"})}),y.map((function(e){return Bt("div",{className:fr()({"vm-list-item":!0,"vm-list-item_mobile":i,"vm-list-item_active":e===a}),onClick:w(e),children:e},e)}))]})})]}):null};var pi,vi=function(e){var t=(0,r.useRef)();return(0,r.useEffect)((function(){t.current=e}),[e]),t.current},mi=function(){var e=pt(),t=Yr().isMobile,n=Mr().customStep,i=_n().period.step,o=Fr(),a=_n().period,u=vi(a.end-a.start),l=m((0,r.useState)(!1),2),c=l[0],s=l[1],f=m((0,r.useState)(n||i),2),d=f[0],h=f[1],p=m((0,r.useState)(""),2),v=p[0],g=p[1],y=(0,r.useRef)(null),_=function(){s((function(e){return!e}))},b=function(){s(!1)},D=function(e){var t=e||d||i||"1s",n=(t.match(/[a-zA-Z]+/g)||[]).length?t:"".concat(t,"s");o({type:"SET_CUSTOM_STEP",payload:n}),h(n),g("")},w=function(e){var t=e.match(/[-+]?([0-9]*\.[0-9]+|[0-9]+)/g)||[],n=e.match(/[a-zA-Z]+/g)||[],r=t.length&&t.every((function(e){return parseFloat(e)>0})),i=n.every((function(e){return Wt.find((function(t){return t.short===e}))})),o=r&&i;h(e),g(o?"":ut.validStep)};return(0,r.useEffect)((function(){n&&D(n)}),[n]),(0,r.useEffect)((function(){!n&&i&&D(i)}),[i]),(0,r.useEffect)((function(){a.end-a.start!==u&&u&&i&&D(i)}),[a,u,i]),Bt("div",{className:"vm-step-control",ref:y,children:[t?Bt("div",{className:"vm-mobile-option",onClick:_,children:[Bt("span",{className:"vm-mobile-option__icon",children:Bt(nr,{})}),Bt("div",{className:"vm-mobile-option-text",children:[Bt("span",{className:"vm-mobile-option-text__label",children:"Step"}),Bt("span",{className:"vm-mobile-option-text__value",children:d})]}),Bt("span",{className:"vm-mobile-option__arrow",children:Bt(Pn,{})})]}):Bt(oi,{title:"Query resolution step width",children:Bt(ei,{className:e?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Bt(nr,{}),onClick:_,children:Bt("p",{children:["STEP",Bt("p",{className:"vm-step-control__value",children:d})]})})}),Bt(ti,{open:c,placement:"bottom-right",onClose:b,buttonRef:y,title:t?"Query resolution step width":void 0,children:Bt("div",{className:fr()({"vm-step-control-popper":!0,"vm-step-control-popper_mobile":t}),children:[Bt(di,{autofocus:!0,label:"Step value",value:d,error:v,onChange:w,onEnter:function(){D(),b()},onFocus:function(){document.activeElement instanceof HTMLInputElement&&document.activeElement.select()},onBlur:D,endIcon:Bt(oi,{title:"Set default step value: ".concat(i),children:Bt(ei,{size:"small",variant:"text",color:"primary",startIcon:Bt(Fn,{}),onClick:function(){var e=i||"1s";w(e),D(e)}})})}),Bt("div",{className:"vm-step-control-popper-info",children:[Bt("code",{children:"step"})," - the ",Bt("a",{className:"vm-link vm-link_colored",href:"https://prometheus.io/docs/prometheus/latest/querying/basics/#time-durations",target:"_blank",rel:"noreferrer",children:"interval"}),"between datapoints, which must be returned from the range query. The ",Bt("code",{children:"query"})," is executed at",Bt("code",{children:"start"}),", ",Bt("code",{children:"start+step"}),", ",Bt("code",{children:"start+2*step"}),", \u2026, ",Bt("code",{children:"end"})," timestamps.",Bt("a",{className:"vm-link vm-link_colored",href:"https://docs.victoriametrics.com/keyConcepts.html#range-query",target:"_blank",rel:"help noreferrer",children:"Read more about Range query"})]})]})})]})},gi=function(e){var t=e.relativeTime,n=e.setDuration,r=Yr().isMobile;return Bt("div",{className:fr()({"vm-time-duration":!0,"vm-time-duration_mobile":r}),children:rn.map((function(e){var i,o=e.id,a=e.duration,u=e.until,l=e.title;return Bt("div",{className:fr()({"vm-list-item":!0,"vm-list-item_mobile":r,"vm-list-item_active":o===t}),onClick:(i={duration:a,until:u(),id:o},function(){n(i)}),children:l||a},o)}))})},yi=function(e){var t=e.viewDate,n=e.showArrowNav,r=e.onChangeViewDate;return Bt("div",{className:"vm-calendar-header",children:[Bt("div",{className:"vm-calendar-header-left",onClick:e.toggleDisplayYears,children:[Bt("span",{className:"vm-calendar-header-left__date",children:t.format("MMMM YYYY")}),Bt("div",{className:"vm-calendar-header-left__select-year",children:Bt(Rn,{})})]}),n&&Bt("div",{className:"vm-calendar-header-right",children:[Bt("div",{className:"vm-calendar-header-right__prev",onClick:function(){r(t.subtract(1,"month"))},children:Bt(Pn,{})}),Bt("div",{className:"vm-calendar-header-right__next",onClick:function(){r(t.add(1,"month"))},children:Bt(Pn,{})})]})]})},_i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],bi=function(e){var t=e.viewDate,n=e.selectDate,i=e.onChangeSelectDate,a=o()().tz().startOf("day"),u=(0,r.useMemo)((function(){var e=new Array(42).fill(null),n=t.startOf("month"),r=t.endOf("month").diff(n,"day")+1,i=new Array(r).fill(n).map((function(e,t){return e.add(t,"day")})),o=n.day();return e.splice.apply(e,[o,r].concat(_(i))),e}),[t]),l=function(e){return function(){e&&i(e)}};return Bt("div",{className:"vm-calendar-body",children:[_i.map((function(e){return Bt("div",{className:"vm-calendar-body-cell vm-calendar-body-cell_weekday",children:e[0]},e)})),u.map((function(e,t){return Bt("div",{className:fr()({"vm-calendar-body-cell":!0,"vm-calendar-body-cell_day":!0,"vm-calendar-body-cell_day_empty":!e,"vm-calendar-body-cell_day_active":(e&&e.toISOString())===n.startOf("day").toISOString(),"vm-calendar-body-cell_day_today":(e&&e.toISOString())===a.toISOString()}),onClick:l(e),children:e&&e.format("D")},e?e.toISOString():t)}))]})},Di=function(e){var t=e.viewDate,n=e.onChangeViewDate,i=o()().format("YYYY"),a=(0,r.useMemo)((function(){return t.format("YYYY")}),[t]),u=(0,r.useMemo)((function(){var e=o()().subtract(9,"year");return new Array(18).fill(e).map((function(e,t){return e.add(t,"year")}))}),[t]);(0,r.useEffect)((function(){var e=document.getElementById("vm-calendar-year-".concat(a));e&&e.scrollIntoView({block:"center"})}),[]);return Bt("div",{className:"vm-calendar-years",children:u.map((function(e){return Bt("div",{className:fr()({"vm-calendar-years__year":!0,"vm-calendar-years__year_selected":e.format("YYYY")===a,"vm-calendar-years__year_today":e.format("YYYY")===i}),id:"vm-calendar-year-".concat(e.format("YYYY")),onClick:(t=e,function(){n(t)}),children:e.format("YYYY")},e.format("YYYY"));var t}))})},wi=function(e){var t=e.viewDate,n=e.selectDate,i=e.onChangeViewDate,a=o()().format("MM"),u=(0,r.useMemo)((function(){return n.format("MM")}),[n]),l=(0,r.useMemo)((function(){return new Array(12).fill("").map((function(e,n){return o()(t).month(n)}))}),[t]);(0,r.useEffect)((function(){var e=document.getElementById("vm-calendar-year-".concat(u));e&&e.scrollIntoView({block:"center"})}),[]);var c=function(e){return function(){i(e)}};return Bt("div",{className:"vm-calendar-years",children:l.map((function(e){return Bt("div",{className:fr()({"vm-calendar-years__year":!0,"vm-calendar-years__year_selected":e.format("MM")===u,"vm-calendar-years__year_today":e.format("MM")===a}),id:"vm-calendar-year-".concat(e.format("MM")),onClick:c(e),children:e.format("MMMM")},e.format("MM"))}))})};!function(e){e[e.days=0]="days",e[e.months=1]="months",e[e.years=2]="years"}(pi||(pi={}));var xi=function(e){var t=e.date,n=e.format,i=void 0===n?jt:n,a=e.onChange,u=m((0,r.useState)(pi.days),2),l=u[0],c=u[1],s=m((0,r.useState)(o().tz(t)),2),f=s[0],d=s[1],h=m((0,r.useState)(o().tz(t)),2),p=h[0],v=h[1],g=Yr().isMobile,y=function(e){d(e),c((function(e){return e===pi.years?pi.months:pi.days}))};return(0,r.useEffect)((function(){p.format()!==o().tz(t).format()&&a(p.format(i))}),[p]),(0,r.useEffect)((function(){var e=o().tz(t);d(e),v(e)}),[t]),Bt("div",{className:fr()({"vm-calendar":!0,"vm-calendar_mobile":g}),children:[Bt(yi,{viewDate:f,onChangeViewDate:y,toggleDisplayYears:function(){c((function(e){return e===pi.years?pi.days:pi.years}))},showArrowNav:l===pi.days}),l===pi.days&&Bt(bi,{viewDate:f,selectDate:p,onChangeSelectDate:function(e){v(e)}}),l===pi.years&&Bt(Di,{viewDate:f,onChangeViewDate:y}),l===pi.months&&Bt(wi,{selectDate:p,viewDate:f,onChangeViewDate:y})]})},ki=(0,r.forwardRef)((function(e,t){var n=e.date,i=e.targetRef,a=e.format,u=void 0===a?jt:a,l=e.onChange,c=e.label,s=m((0,r.useState)(!1),2),f=s[0],d=s[1],h=(0,r.useMemo)((function(){return o()(n).isValid()?o().tz(n):o()().tz()}),[n]),p=Yr().isMobile,v=function(){d((function(e){return!e}))},g=function(){d(!1)},y=function(e){"Escape"!==e.key&&"Enter"!==e.key||g()};return(0,r.useEffect)((function(){var e;return null===(e=i.current)||void 0===e||e.addEventListener("click",v),function(){var e;null===(e=i.current)||void 0===e||e.removeEventListener("click",v)}}),[i]),(0,r.useEffect)((function(){return window.addEventListener("keyup",y),function(){window.removeEventListener("keyup",y)}}),[]),Bt(Ot.HY,{children:Bt(ti,{open:f,buttonRef:i,placement:"bottom-right",onClose:g,title:p?c:void 0,children:Bt("div",{ref:t,children:Bt(xi,{date:h,format:u,onChange:function(e){l(e),g()}})})})})})),Ci=ki,Ei=n(111),Ai=n.n(Ei),Si=function(e){return o()(e).isValid()?o().tz(e).format(jt):e},Ni=function(e){var t=e.value,n=void 0===t?"":t,i=e.label,a=e.pickerLabel,u=e.pickerRef,l=e.onChange,c=e.onEnter,s=(0,r.useRef)(null),f=m((0,r.useState)(null),2),d=f[0],h=f[1],p=m((0,r.useState)(Si(n)),2),v=p[0],g=p[1],y=m((0,r.useState)(!1),2),_=y[0],b=y[1],D=m((0,r.useState)(!1),2),w=D[0],x=D[1],k=o()(v).isValid()?"":"Expected format: YYYY-MM-DD HH:mm:ss";return(0,r.useEffect)((function(){var e=Si(n);e!==v&&g(e),w&&(c(),x(!1))}),[n]),(0,r.useEffect)((function(){_&&d&&(d.focus(),d.setSelectionRange(11,11),b(!1))}),[_]),Bt("div",{className:fr()({"vm-date-time-input":!0,"vm-date-time-input_error":k}),children:[Bt("label",{children:i}),Bt(Ai(),{tabIndex:1,inputRef:h,mask:"9999-99-99 99:99:99",placeholder:"YYYY-MM-DD HH:mm:ss",value:v,autoCapitalize:"none",inputMode:"numeric",maskChar:null,onChange:function(e){g(e.currentTarget.value)},onBlur:function(){l(v)},onKeyUp:function(e){"Enter"===e.key&&(l(v),x(!0))}}),k&&Bt("span",{className:"vm-date-time-input__error-text",children:k}),Bt("div",{className:"vm-date-time-input__icon",ref:s,children:Bt(ei,{variant:"text",color:"gray",size:"small",startIcon:Bt(jn,{})})}),Bt(Ci,{label:a,ref:u,date:v,onChange:function(e){g(e),b(!0)},targetRef:s})]})},Mi=function(){var e=Yr().isMobile,t=Lt().isDarkTheme,n=(0,r.useRef)(null),i=cr(document.body),a=(0,r.useMemo)((function(){return i.width>1280}),[i]),u=m((0,r.useState)(),2),l=u[0],c=u[1],s=m((0,r.useState)(),2),f=s[0],d=s[1],h=_n(),p=h.period,v=p.end,g=p.start,y=h.relativeTime,_=h.timezone,b=h.duration,D=bn(),w=pt(),x=(0,r.useMemo)((function(){return{region:_,utc:an(_)}}),[_]);(0,r.useEffect)((function(){c(en(nn(v)))}),[_,v]),(0,r.useEffect)((function(){d(en(nn(g)))}),[_,g]);var k=function(e){var t=e.duration,n=e.until,r=e.id;D({type:"SET_RELATIVE_TIME",payload:{duration:t,until:n,id:r}}),F(!1)},C=(0,r.useMemo)((function(){return{start:o().tz(nn(g)).format(jt),end:o().tz(nn(v)).format(jt)}}),[g,v,_]),E=(0,r.useMemo)((function(){return y&&"none"!==y?y.replace(/_/g," "):"".concat(C.start," - ").concat(C.end)}),[y,C]),A=(0,r.useRef)(null),S=(0,r.useRef)(null),N=m((0,r.useState)(!1),2),M=N[0],F=N[1],O=(0,r.useRef)(null),T=function(){f&&l&&D({type:"SET_PERIOD",payload:{from:o().tz(f).toDate(),to:o().tz(l).toDate()}}),F(!1)},B=function(){F((function(e){return!e}))},I=function(){F(!1)};return(0,r.useEffect)((function(){var e=on({relativeTimeId:y,defaultDuration:b,defaultEndInput:nn(v)});k({id:e.relativeTimeId,duration:e.duration,until:e.endInput})}),[_]),Xr(n,(function(t){var n,r;if(!e){var i=t.target,o=(null===A||void 0===A?void 0:A.current)&&(null===A||void 0===A||null===(n=A.current)||void 0===n?void 0:n.contains(i)),a=(null===S||void 0===S?void 0:S.current)&&(null===S||void 0===S||null===(r=S.current)||void 0===r?void 0:r.contains(i));o||a||I()}})),Bt(Ot.HY,{children:[Bt("div",{ref:O,children:e?Bt("div",{className:"vm-mobile-option",onClick:B,children:[Bt("span",{className:"vm-mobile-option__icon",children:Bt(zn,{})}),Bt("div",{className:"vm-mobile-option-text",children:[Bt("span",{className:"vm-mobile-option-text__label",children:"Time range"}),Bt("span",{className:"vm-mobile-option-text__value",children:E})]}),Bt("span",{className:"vm-mobile-option__arrow",children:Bt(Pn,{})})]}):Bt(oi,{title:a?"Time range controls":E,children:Bt(ei,{className:w?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Bt(zn,{}),onClick:B,children:a&&Bt("span",{children:E})})})}),Bt(ti,{open:M,buttonRef:O,placement:"bottom-right",onClose:I,clickOutside:!1,title:e?"Time range controls":"",children:Bt("div",{className:fr()({"vm-time-selector":!0,"vm-time-selector_mobile":e}),ref:n,children:[Bt("div",{className:"vm-time-selector-left",children:[Bt("div",{className:fr()({"vm-time-selector-left-inputs":!0,"vm-time-selector-left-inputs_dark":t}),children:[Bt(Ni,{value:f,label:"From:",pickerLabel:"Date From",pickerRef:A,onChange:d,onEnter:T}),Bt(Ni,{value:l,label:"To:",pickerLabel:"Date To",pickerRef:S,onChange:c,onEnter:T})]}),Bt("div",{className:"vm-time-selector-left-timezone",children:[Bt("div",{className:"vm-time-selector-left-timezone__title",children:x.region}),Bt("div",{className:"vm-time-selector-left-timezone__utc",children:x.utc})]}),Bt(ei,{variant:"text",startIcon:Bt($n,{}),onClick:function(){return D({type:"RUN_QUERY_TO_NOW"})},children:"switch to now"}),Bt("div",{className:"vm-time-selector-left__controls",children:[Bt(ei,{color:"error",variant:"outlined",onClick:function(){c(en(nn(v))),d(en(nn(g))),F(!1)},children:"Cancel"}),Bt(ei,{color:"primary",onClick:T,children:"Apply"})]})]}),Bt(gi,{relativeTime:y||"",setDuration:k})]})})]})},Fi=function(){var e=Yr().isMobile,t=pt(),n=(0,r.useRef)(null),i=Ir().date,a=Lr(),u=(0,r.useMemo)((function(){return o().tz(i).format(zt)}),[i]);return Bt("div",{children:[Bt("div",{ref:n,children:e?Bt("div",{className:"vm-mobile-option",children:[Bt("span",{className:"vm-mobile-option__icon",children:Bt(jn,{})}),Bt("div",{className:"vm-mobile-option-text",children:[Bt("span",{className:"vm-mobile-option-text__label",children:"Date control"}),Bt("span",{className:"vm-mobile-option-text__value",children:u})]}),Bt("span",{className:"vm-mobile-option__arrow",children:Bt(Pn,{})})]}):Bt(oi,{title:"Date control",children:Bt(ei,{className:t?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Bt(jn,{}),children:u})})}),Bt(Ci,{label:"Date control",date:i||"",format:zt,onChange:function(e){a({type:"SET_DATE",payload:e})},targetRef:n})]})},Oi=[{seconds:0,title:"Off"},{seconds:1,title:"1s"},{seconds:2,title:"2s"},{seconds:5,title:"5s"},{seconds:10,title:"10s"},{seconds:30,title:"30s"},{seconds:60,title:"1m"},{seconds:300,title:"5m"},{seconds:900,title:"15m"},{seconds:1800,title:"30m"},{seconds:3600,title:"1h"},{seconds:7200,title:"2h"}],Ti=function(){var e=Yr().isMobile,t=bn(),n=pt(),i=m((0,r.useState)(!1),2),o=i[0],a=i[1],u=m((0,r.useState)(Oi[0]),2),l=u[0],c=u[1];(0,r.useEffect)((function(){var e,n=l.seconds;return o?e=setInterval((function(){t({type:"RUN_QUERY"})}),1e3*n):c(Oi[0]),function(){e&&clearInterval(e)}}),[l,o]);var s=m((0,r.useState)(!1),2),f=s[0],d=s[1],h=(0,r.useRef)(null),p=function(){d((function(e){return!e}))},v=function(e){return function(){!function(e){(o&&!e.seconds||!o&&e.seconds)&&a((function(e){return!e})),c(e),d(!1)}(e)}};return Bt(Ot.HY,{children:[Bt("div",{className:"vm-execution-controls",children:Bt("div",{className:fr()({"vm-execution-controls-buttons":!0,"vm-execution-controls-buttons_mobile":e,"vm-header-button":!n}),children:[!e&&Bt(oi,{title:"Refresh dashboard",children:Bt(ei,{variant:"contained",color:"primary",onClick:function(){t({type:"RUN_QUERY"})},startIcon:Bt(Ln,{})})}),e?Bt("div",{className:"vm-mobile-option",onClick:p,children:[Bt("span",{className:"vm-mobile-option__icon",children:Bt(Fn,{})}),Bt("div",{className:"vm-mobile-option-text",children:[Bt("span",{className:"vm-mobile-option-text__label",children:"Auto-refresh"}),Bt("span",{className:"vm-mobile-option-text__value",children:l.title})]}),Bt("span",{className:"vm-mobile-option__arrow",children:Bt(Pn,{})})]}):Bt(oi,{title:"Auto-refresh control",children:Bt("div",{ref:h,children:Bt(ei,{variant:"contained",color:"primary",fullWidth:!0,endIcon:Bt("div",{className:fr()({"vm-execution-controls-buttons__arrow":!0,"vm-execution-controls-buttons__arrow_open":f}),children:Bt(Pn,{})}),onClick:p,children:l.title})})})]})}),Bt(ti,{open:f,placement:"bottom-right",onClose:function(){d(!1)},buttonRef:h,title:e?"Auto-refresh duration":void 0,children:Bt("div",{className:fr()({"vm-execution-controls-list":!0,"vm-execution-controls-list_mobile":e}),children:Oi.map((function(t){return Bt("div",{className:fr()({"vm-list-item":!0,"vm-list-item_mobile":e,"vm-list-item_active":t.seconds===l.seconds}),onClick:v(t),children:t.title},t.seconds)}))})})]})},Bi=function(e){var t;try{t=new URL(e)}catch(Tt){return!1}return"http:"===t.protocol||"https:"===t.protocol},Ii=function(e){var t=e.serverUrl,n=e.onChange,i=e.onEnter,o=e.onBlur,a=m((0,r.useState)(""),2),u=a[0],l=a[1];return Bt(di,{autofocus:!0,label:"Server URL",value:t,error:u,onChange:function(e){var t=e||"";n(t),l(""),t||l(ut.emptyServer),Bi(t)||l(ut.validServer)},onEnter:i,onBlur:o,inputmode:"url"})},Li=[{label:"Graph",type:"chart"},{label:"JSON",type:"code"},{label:"Table",type:"table"}],Pi=function(e){var t=e.limits,n=e.onChange,i=e.onEnter,o=Yr().isMobile,a=m((0,r.useState)({table:"",chart:"",code:""}),2),u=a[0],l=a[1],c=function(e){return function(r){!function(e,r){var i=e||"";l((function(e){return at(at({},e),{},it({},r,+i<0?ut.positiveNumber:""))})),n(at(at({},t),{},it({},r,i||1/0)))}(r,e)}};return Bt("div",{className:"vm-limits-configurator",children:[Bt("div",{className:"vm-server-configurator__title",children:["Series limits by tabs",Bt(oi,{title:"To disable limits set to 0",children:Bt(ei,{variant:"text",color:"primary",size:"small",startIcon:Bt(On,{})})}),Bt("div",{className:"vm-limits-configurator-title__reset",children:Bt(ei,{variant:"text",color:"primary",size:"small",startIcon:Bt(Fn,{}),onClick:function(){n(bt)},children:"Reset"})})]}),Bt("div",{className:fr()({"vm-limits-configurator__inputs":!0,"vm-limits-configurator__inputs_mobile":o}),children:Li.map((function(e){return Bt("div",{children:Bt(di,{label:e.label,value:t[e.type],error:u[e.type],onChange:c(e.type),onEnter:i,type:"number"})},e.type)}))})]})},Ri=function(e){var t=e.defaultExpanded,n=void 0!==t&&t,i=e.onChange,o=e.title,a=e.children,u=m((0,r.useState)(n),2),l=u[0],c=u[1];return(0,r.useEffect)((function(){i&&i(l)}),[l]),Bt(Ot.HY,{children:[Bt("header",{className:"vm-accordion-header ".concat(l&&"vm-accordion-header_open"),onClick:function(){c((function(e){return!e}))},children:[o,Bt("div",{className:"vm-accordion-header__arrow ".concat(l&&"vm-accordion-header__arrow_open"),children:Bt(Pn,{})})]}),l&&Bt("section",{className:"vm-accordion-section",children:a},"content")]})},zi=function(e){var t=e.timezoneState,n=e.onChange,i=Yr().isMobile,a=un(),u=m((0,r.useState)(!1),2),l=u[0],c=u[1],s=m((0,r.useState)(""),2),f=s[0],d=s[1],h=(0,r.useRef)(null),p=(0,r.useMemo)((function(){if(!f)return a;try{return un(f)}catch(e){return{}}}),[f,a]),v=(0,r.useMemo)((function(){return Object.keys(p)}),[p]),g=(0,r.useMemo)((function(){return{region:o().tz.guess(),utc:an(o().tz.guess())}}),[]),y=(0,r.useMemo)((function(){return{region:t,utc:an(t)}}),[t]),_=function(){c(!1)},b=function(e){return function(){!function(e){n(e.region),d(""),_()}(e)}};return Bt("div",{className:"vm-timezones",children:[Bt("div",{className:"vm-server-configurator__title",children:"Time zone"}),Bt("div",{className:"vm-timezones-item vm-timezones-item_selected",onClick:function(){c((function(e){return!e}))},ref:h,children:[Bt("div",{className:"vm-timezones-item__title",children:y.region}),Bt("div",{className:"vm-timezones-item__utc",children:y.utc}),Bt("div",{className:fr()({"vm-timezones-item__icon":!0,"vm-timezones-item__icon_open":l}),children:Bt(Rn,{})})]}),Bt(ti,{open:l,buttonRef:h,placement:"bottom-left",onClose:_,fullWidth:!0,title:i?"Time zone":void 0,children:Bt("div",{className:fr()({"vm-timezones-list":!0,"vm-timezones-list_mobile":i}),children:[Bt("div",{className:"vm-timezones-list-header",children:[Bt("div",{className:"vm-timezones-list-header__search",children:Bt(di,{autofocus:!0,label:"Search",value:f,onChange:function(e){d(e)}})}),Bt("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:b(g),children:[Bt("div",{className:"vm-timezones-item__title",children:["Browser Time (",g.region,")"]}),Bt("div",{className:"vm-timezones-item__utc",children:g.utc})]})]}),v.map((function(e){return Bt("div",{className:"vm-timezones-list-group",children:Bt(Ri,{defaultExpanded:!0,title:Bt("div",{className:"vm-timezones-list-group__title",children:e}),children:Bt("div",{className:"vm-timezones-list-group-options",children:p[e]&&p[e].map((function(e){return Bt("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:b(e),children:[Bt("div",{className:"vm-timezones-item__title",children:e.region}),Bt("div",{className:"vm-timezones-item__utc",children:e.utc})]},e.search)}))})})},e)}))]})})]})},ji=function(e){var t=e.options,n=e.value,i=e.label,o=e.onChange,a=(0,r.useRef)(null),u=m((0,r.useState)({width:"0px",left:"0px",borderRadius:"0px"}),2),l=u[0],c=u[1],s=function(e){return function(){o(e)}};return(0,r.useEffect)((function(){if(a.current){var e=t.findIndex((function(e){return e.value===n})),r=a.current.getBoundingClientRect().width,i=e*r,o="0";0===e&&(o="16px 0 0 16px"),e===t.length-1&&(o="10px",i-=1,o="0 16px 16px 0"),0!==e&&e!==t.length-1&&(r+=1,i-=1),c({width:"".concat(r,"px"),left:"".concat(i,"px"),borderRadius:o})}else c({width:"0px",left:"0px",borderRadius:"0px"})}),[a,n,t]),Bt("div",{className:"vm-toggles",children:[i&&Bt("label",{className:"vm-toggles__label",children:i}),Bt("div",{className:"vm-toggles-group",style:{gridTemplateColumns:"repeat(".concat(t.length,", 1fr)")},children:[l.borderRadius&&Bt("div",{className:"vm-toggles-group__highlight",style:l}),t.map((function(e,t){return Bt("div",{className:fr()({"vm-toggles-group-item":!0,"vm-toggles-group-item_first":0===t,"vm-toggles-group-item_active":e.value===n,"vm-toggles-group-item_icon":e.icon&&e.title}),onClick:s(e.value),ref:e.value===n?a:null,children:[e.icon,e.title]},e.value)}))]})]})},$i=Object.values(lt).map((function(e){return{title:e,value:e}})),Yi=function(){var e=Yr().isMobile,t=Lt().theme,n=Pt();return Bt("div",{className:fr()({"vm-theme-control":!0,"vm-theme-control_mobile":e}),children:[Bt("div",{className:"vm-server-configurator__title",children:"Theme preferences"}),Bt("div",{className:"vm-theme-control__toggle",children:Bt(ji,{options:$i,value:t,onChange:function(e){n({type:"SET_THEME",payload:e})}})},"".concat(e))]})},Hi="Settings",Vi=function(){var e=Yr().isMobile,t=pt(),n=Lt().serverUrl,i=_n().timezone,o=Cr().seriesLimits,a=Pt(),u=bn(),l=Er(),c=m((0,r.useState)(n),2),s=c[0],f=c[1],d=m((0,r.useState)(o),2),h=d[0],p=d[1],v=m((0,r.useState)(i),2),g=v[0],y=v[1],_=m((0,r.useState)(!1),2),b=_[0],D=_[1],w=function(){return D(!0)},x=function(){a({type:"SET_SERVER",payload:s}),u({type:"SET_TIMEZONE",payload:g}),l({type:"SET_SERIES_LIMITS",payload:h})};return(0,r.useEffect)((function(){n!==s&&f(n)}),[n]),Bt(Ot.HY,{children:[e?Bt("div",{className:"vm-mobile-option",onClick:w,children:[Bt("span",{className:"vm-mobile-option__icon",children:Bt(Nn,{})}),Bt("div",{className:"vm-mobile-option-text",children:Bt("span",{className:"vm-mobile-option-text__label",children:Hi})}),Bt("span",{className:"vm-mobile-option__arrow",children:Bt(Pn,{})})]}):Bt(oi,{title:Hi,children:Bt(ei,{className:fr()({"vm-header-button":!t}),variant:"contained",color:"primary",startIcon:Bt(Nn,{}),onClick:w})}),b&&Bt(ii,{title:Hi,onClose:function(){return D(!1)},children:Bt("div",{className:fr()({"vm-server-configurator":!0,"vm-server-configurator_mobile":e}),children:[!t&&Bt("div",{className:"vm-server-configurator__input",children:Bt(Ii,{serverUrl:s,onChange:f,onEnter:x,onBlur:x})}),Bt("div",{className:"vm-server-configurator__input",children:Bt(Pi,{limits:h,onChange:p,onEnter:x})}),Bt("div",{className:"vm-server-configurator__input",children:Bt(zi,{timezoneState:g,onChange:y})}),!t&&Bt("div",{className:"vm-server-configurator__input",children:Bt(Yi,{})})]})})]})};function Ui(){Ui=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(N){l=function(e,t,n){return e[t]=n}}function c(e,t,n,i){var o=t&&t.prototype instanceof d?t:d,a=Object.create(o.prototype),u=new E(i||[]);return r(a,"_invoke",{value:w(e,n,u)}),a}function s(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(N){return{type:"throw",arg:N}}}e.wrap=c;var f={};function d(){}function h(){}function p(){}var v={};l(v,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(A([])));g&&g!==t&&n.call(g,o)&&(v=g);var y=p.prototype=d.prototype=Object.create(v);function _(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function i(r,o,a,u){var l=s(e[r],e,o);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==D(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){i("next",e,a,u)}),(function(e){i("throw",e,a,u)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return i("throw",e,a,u)}))}u(l.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){i(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(i,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw o;return S()}for(n.method=i,n.arg=o;;){var a=n.delegate;if(a){var u=x(a,n);if(u){if(u===f)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=s(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}function x(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,x(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var i=s(r,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,f;var o=i.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function E(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:S}}function S(){return{value:void 0,done:!0}}return h.prototype=p,r(y,"constructor",{value:p,configurable:!0}),r(p,"constructor",{value:h,configurable:!0}),h.displayName=l(p,u,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===h||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,l(e,u,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},_(b.prototype),l(b.prototype,a,(function(){return this})),e.AsyncIterator=b,e.async=function(t,n,r,i,o){void 0===o&&(o=Promise);var a=new b(c(t,n,r,i),o);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},_(y),l(y,u,"Generator"),l(y,o,(function(){return this})),l(y,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,E.prototype={constructor:E,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return a.type="throw",a.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var u=n.call(o,"catchLoc"),l=n.call(o,"finallyLoc");if(u&&l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(u){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;C(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function qi(e,t,n,r,i,o,a){try{var u=e[o](a),l=u.value}catch(c){return void n(c)}u.done?t(l):Promise.resolve(l).then(r,i)}function Wi(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){qi(o,r,i,a,u,"next",e)}function u(e){qi(o,r,i,a,u,"throw",e)}a(void 0)}))}}var Qi,Gi,Ji=function(e){var t=e.displaySidebar,n=e.isMobile,r=e.headerSetup,i=e.accountIds;return Bt("div",{className:fr()({"vm-header-controls":!0,"vm-header-controls_mobile":n}),children:[(null===r||void 0===r?void 0:r.tenant)&&Bt(hi,{accountIds:i||[]}),(null===r||void 0===r?void 0:r.stepControl)&&Bt(mi,{}),(null===r||void 0===r?void 0:r.timeSelector)&&Bt(Mi,{}),(null===r||void 0===r?void 0:r.cardinalityDatePicker)&&Bt(Fi,{}),(null===r||void 0===r?void 0:r.executionControls)&&Bt(Ti,{}),Bt(Vi,{}),!t&&Bt(ci,{})]})},Zi=function(e){var t=pt(),n=m((0,r.useState)(!1),2),i=n[0],o=n[1],a=Ae().pathname,u=function(){var e=ht().useTenantID,t=Lt().serverUrl,n=m((0,r.useState)(!1),2),i=n[0],o=n[1],a=m((0,r.useState)(),2),u=a[0],l=a[1],c=m((0,r.useState)([]),2),s=c[0],f=c[1],d=(0,r.useMemo)((function(){return"".concat(t.replace(/^(.+)(\/select.+)/,"$1"),"/admin/tenants")}),[t]);return(0,r.useEffect)((function(){if(e){var t=function(){var e=Wi(Ui().mark((function e(){var t,n,r;return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o(!0),e.prev=1,e.next=4,fetch(d);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],f(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?l(void 0):l("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&l("".concat(e.t0.name,": ").concat(e.t0.message));case 16:o(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[d]),{accountIds:s,isLoading:i,error:u}}(),l=u.accountIds,c=(0,r.useMemo)((function(){return(ft[a]||{}).header||{}}),[a]);return e.isMobile?Bt(Ot.HY,{children:[Bt("div",{children:Bt(ei,{className:fr()({"vm-header-button":!t}),startIcon:Bt(ur,{}),onClick:function(){o((function(e){return!e}))}})}),Bt(ii,{title:"Controls",onClose:function(){o(!1)},isOpen:i,className:fr()({"vm-header-controls-modal":!0,"vm-header-controls-modal_open":i}),children:Bt(Ji,at(at({},e),{},{accountIds:l,headerSetup:c}))})]}):Bt(Ji,at(at({},e),{},{accountIds:l,headerSetup:c}))},Ki=function(){var e=Yr().isMobile,t=cr(document.body),n=(0,r.useMemo)((function(){return window.innerWidth<1e3}),[t]),i=Lt().isDarkTheme,o=pt(),a=(0,r.useMemo)((function(){return Et(i?"color-background-block":"color-primary")}),[i]),u=(0,r.useMemo)((function(){var e=ht().headerStyles,t=void 0===e?{}:e,n=t.background,r=void 0===n?o?"#FFF":a:n,i=t.color;return{background:r,color:void 0===i?o?a:"#FFF":i}}),[a]),l=u.background,c=u.color,s=Se(),f=function(){s({pathname:dt.home}),window.location.reload()};return Bt("header",{className:fr()({"vm-header":!0,"vm-header_app":o,"vm-header_dark":i,"vm-header_mobile":e}),style:{background:l,color:c},children:[n?Bt(fi,{background:l,color:c}):Bt(Ot.HY,{children:[!o&&Bt("div",{className:"vm-header-logo",onClick:f,style:{color:c},children:Bt(An,{})}),Bt(ri,{color:c,background:l})]}),e&&Bt("div",{className:"vm-header-logo vm-header-logo_mobile",onClick:f,style:{color:c},children:Bt(An,{})}),Bt(Zi,{displaySidebar:n,isMobile:e})]})},Xi=function(){var e=Yr().isMobile,t="2019-".concat(o()().format("YYYY"));return Bt("footer",{className:"vm-footer",children:[Bt("a",{className:"vm-link vm-footer__website",target:"_blank",href:"https://victoriametrics.com/",rel:"me noreferrer",children:[Bt(Sn,{}),"victoriametrics.com"]}),Bt("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://docs.victoriametrics.com/#vmui",rel:"help noreferrer",children:[Bt(rr,{}),e?"Docs":"Documentation"]}),Bt("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://github.com/VictoriaMetrics/VictoriaMetrics/issues/new/choose",rel:"noreferrer",children:[Bt(ir,{}),e?"New issue":"Create an issue"]}),Bt("div",{className:"vm-footer__copyright",children:["\xa9 ",t," VictoriaMetrics"]})]})},eo=function(){var e=Wi(Ui().mark((function e(t){var n,r;return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("./dashboards/".concat(t));case 2:return n=e.sent,e.next=5,n.json();case 5:return r=e.sent,e.abrupt("return",r);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),to=function(){var e=pt(),t=Lt().serverUrl,n=(0,r.useContext)(Gr).dispatch,i=m((0,r.useState)(!1),2),o=i[0],a=i[1],u=m((0,r.useState)(""),2),l=u[0],c=u[1],s=m((0,r.useState)([]),2),f=s[0],d=s[1],h=function(){var e=Wi(Ui().mark((function e(){var t,n;return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,null!==(t=window.__VMUI_PREDEFINED_DASHBOARDS__)&&void 0!==t&&t.length){e.next=4;break}return e.abrupt("return",[]);case 4:return e.next=6,Promise.all(t.map(function(){var e=Wi(Ui().mark((function e(t){return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",eo(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 6:n=e.sent,d((function(e){return[].concat(_(n),_(e))})),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(0),e.t0 instanceof Error&&c("".concat(e.t0.name,": ").concat(e.t0.message));case 13:case"end":return e.stop()}}),e,null,[[0,10]])})));return function(){return e.apply(this,arguments)}}(),p=function(){var e=Wi(Ui().mark((function e(){var n,r,i;return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return c(""),a(!0),e.prev=4,e.next=7,fetch("".concat(t,"/vmui/custom-dashboards"));case 7:return n=e.sent,e.next=10,n.json();case 10:if(r=e.sent,!n.ok){e.next=22;break}if(!((i=r.dashboardsSettings)&&i.length>0)){e.next=17;break}d((function(e){return[].concat(_(e),_(i))})),e.next=19;break;case 17:return e.next=19,h();case 19:a(!1),e.next=26;break;case 22:return e.next=24,h();case 24:c(r.error),a(!1);case 26:e.next=34;break;case 28:return e.prev=28,e.t0=e.catch(4),a(!1),e.t0 instanceof Error&&c("".concat(e.t0.name,": ").concat(e.t0.message)),e.next=34,h();case 34:case"end":return e.stop()}}),e,null,[[4,28]])})));return function(){return e.apply(this,arguments)}}();return(0,r.useEffect)((function(){e||(d([]),p())}),[t]),(0,r.useEffect)((function(){n({type:"SET_DASHBOARDS_SETTINGS",payload:f})}),[f]),(0,r.useEffect)((function(){n({type:"SET_DASHBOARDS_LOADING",payload:o})}),[o]),(0,r.useEffect)((function(){n({type:"SET_DASHBOARDS_ERROR",payload:l})}),[l]),{dashboardsSettings:f,isLoading:o,error:l}},no=function(){var e=pt(),t=Yr().isMobile,n=Ae().pathname,i=m(nt(),2),o=i[0],a=i[1];to();return(0,r.useEffect)((function(){var e,t="vmui",r=null===(e=ft[n])||void 0===e?void 0:e.title;document.title=r?"".concat(r," - ").concat(t):t}),[n]),(0,r.useEffect)((function(){var e=window.location.search;if(e){var t=gt().parse(e,{ignoreQueryPrefix:!0});Object.entries(t).forEach((function(e){var t=m(e,2),n=t[0],r=t[1];o.set(n,r),a(o)})),window.location.search=""}window.location.replace(window.location.href.replace(/\/\?#\//,"/#/"))}),[]),Bt("section",{className:"vm-container",children:[Bt(Ki,{}),Bt("div",{className:fr()({"vm-container-body":!0,"vm-container-body_mobile":t,"vm-container-body_app":e}),children:Bt(je,{})}),!e&&Bt(Xi,{})]})},ro="u-off",io="u-label",oo="width",ao="height",uo="top",lo="bottom",co="left",so="right",fo="#000",ho=fo+"0",po="mousemove",vo="mousedown",mo="mouseup",go="mouseenter",yo="mouseleave",_o="dblclick",bo="change",Do="dppxchange",wo="undefined"!=typeof window,xo=wo?document:null,ko=wo?window:null,Co=wo?navigator:null;function Eo(e,t){if(null!=t){var n=e.classList;!n.contains(t)&&n.add(t)}}function Ao(e,t){var n=e.classList;n.contains(t)&&n.remove(t)}function So(e,t,n){e.style[t]=n+"px"}function No(e,t,n,r){var i=xo.createElement(e);return null!=t&&Eo(i,t),null!=n&&n.insertBefore(i,r),i}function Mo(e,t){return No("div",e,t)}var Fo=new WeakMap;function Oo(e,t,n,r,i){var o="translate("+t+"px,"+n+"px)";o!=Fo.get(e)&&(e.style.transform=o,Fo.set(e,o),t<0||n<0||t>r||n>i?Eo(e,ro):Ao(e,ro))}var To=new WeakMap;function Bo(e,t,n){var r=t+n;r!=To.get(e)&&(To.set(e,r),e.style.background=t,e.style.borderColor=n)}var Io=new WeakMap;function Lo(e,t,n,r){var i=t+""+n;i!=Io.get(e)&&(Io.set(e,i),e.style.height=n+"px",e.style.width=t+"px",e.style.marginLeft=r?-t/2+"px":0,e.style.marginTop=r?-n/2+"px":0)}var Po={passive:!0},Ro=at(at({},Po),{},{capture:!0});function zo(e,t,n,r){t.addEventListener(e,n,r?Ro:Po)}function jo(e,t,n,r){t.removeEventListener(e,n,r?Ro:Po)}function $o(e,t,n,r){var i;n=n||0;for(var o=(r=r||t.length-1)<=2147483647;r-n>1;)t[i=o?n+r>>1:ia((n+r)/2)]<e?n=i:r=i;return e-t[n]<=t[r]-e?n:r}function Yo(e,t,n,r){for(var i=1==r?t:n;i>=t&&i<=n;i+=r)if(null!=e[i])return i;return-1}function Ho(e,t,n,r){var i=pa,o=-pa;if(1==r)i=e[t],o=e[n];else if(-1==r)i=e[n],o=e[t];else for(var a=t;a<=n;a++)null!=e[a]&&(i=ua(i,e[a]),o=la(o,e[a]));return[i,o]}function Vo(e,t,n){for(var r=pa,i=-pa,o=t;o<=n;o++)e[o]>0&&(r=ua(r,e[o]),i=la(i,e[o]));return[r==pa?1:r,i==-pa?10:i]}function Uo(e,t,n,r){var i=sa(e),o=sa(t),a=10==n?fa:da;e==t&&(-1==i?(e*=n,t/=n):(e/=n,t*=n));var u=1==o?aa:ia,l=(1==i?ia:aa)(a(ra(e))),c=u(a(ra(t))),s=ca(n,l),f=ca(n,c);return l<0&&(s=Ea(s,-l)),c<0&&(f=Ea(f,-c)),r?(e=s*i,t=f*o):(e=Ca(e,s),t=ka(t,f)),[e,t]}function qo(e,t,n,r){var i=Uo(e,t,n,r);return 0==e&&(i[0]=0),0==t&&(i[1]=0),i}wo&&function e(){var t=devicePixelRatio;Qi!=t&&(Qi=t,Gi&&jo(bo,Gi,e),Gi=matchMedia("(min-resolution: ".concat(Qi-.001,"dppx) and (max-resolution: ").concat(Qi+.001,"dppx)")),zo(bo,Gi,e),ko.dispatchEvent(new CustomEvent(Do)))}();var Wo={mode:3,pad:.1},Qo={pad:0,soft:null,mode:0},Go={min:Qo,max:Qo};function Jo(e,t,n,r){return La(n)?Ko(e,t,n):(Qo.pad=n,Qo.soft=r?0:null,Qo.mode=r?3:0,Ko(e,t,Go))}function Zo(e,t){return null==e?t:e}function Ko(e,t,n){var r=n.min,i=n.max,o=Zo(r.pad,0),a=Zo(i.pad,0),u=Zo(r.hard,-pa),l=Zo(i.hard,pa),c=Zo(r.soft,pa),s=Zo(i.soft,-pa),f=Zo(r.mode,0),d=Zo(i.mode,0),h=t-e,p=fa(h),v=la(ra(e),ra(t)),m=fa(v),g=ra(m-p);(h<1e-9||g>10)&&(h=0,0!=e&&0!=t||(h=1e-9,2==f&&c!=pa&&(o=0),2==d&&s!=-pa&&(a=0)));var y=h||v||1e3,_=fa(y),b=ca(10,ia(_)),D=Ea(Ca(e-y*(0==h?0==e?.1:1:o),b/10),9),w=e>=c&&(1==f||3==f&&D<=c||2==f&&D>=c)?c:pa,x=la(u,D<w&&e>=w?w:ua(w,D)),k=Ea(ka(t+y*(0==h?0==t?.1:1:a),b/10),9),C=t<=s&&(1==d||3==d&&k>=s||2==d&&k<=s)?s:-pa,E=ua(l,k>C&&t<=C?C:la(C,k));return x==E&&0==x&&(E=100),[x,E]}var Xo=new Intl.NumberFormat(wo?Co.language:"en-US"),ea=function(e){return Xo.format(e)},ta=Math,na=ta.PI,ra=ta.abs,ia=ta.floor,oa=ta.round,aa=ta.ceil,ua=ta.min,la=ta.max,ca=ta.pow,sa=ta.sign,fa=ta.log10,da=ta.log2,ha=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return ta.asinh(e/t)},pa=1/0;function va(e){return 1+(0|fa((e^e>>31)-(e>>31)))}function ma(e,t){return oa(e/t)*t}function ga(e,t,n){return ua(la(e,t),n)}function ya(e){return"function"==typeof e?e:function(){return e}}var _a=function(e){return e},ba=function(e,t){return t},Da=function(e){return null},wa=function(e){return!0},xa=function(e,t){return e==t};function ka(e,t){return aa(e/t)*t}function Ca(e,t){return ia(e/t)*t}function Ea(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(Ba(e))return e;var n=Math.pow(10,t),r=e*n*(1+Number.EPSILON);return oa(r)/n}var Aa=new Map;function Sa(e){return((""+e).split(".")[1]||"").length}function Na(e,t,n,r){for(var i=[],o=r.map(Sa),a=t;a<n;a++)for(var u=ra(a),l=Ea(ca(e,a),u),c=0;c<r.length;c++){var s=r[c]*l,f=(s>=0&&a>=0?0:u)+(a>=o[c]?0:o[c]),d=Ea(s,f);i.push(d),Aa.set(d,f)}return i}var Ma={},Fa=[],Oa=[null,null],Ta=Array.isArray,Ba=Number.isInteger;function Ia(e){return"string"==typeof e}function La(e){var t=!1;if(null!=e){var n=e.constructor;t=null==n||n==Object}return t}function Pa(e){return null!=e&&"object"==typeof e}var Ra=Object.getPrototypeOf(Uint8Array);function za(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:La;if(Ta(e)){var r=e.find((function(e){return null!=e}));if(Ta(r)||n(r)){t=Array(e.length);for(var i=0;i<e.length;i++)t[i]=za(e[i],n)}else t=e.slice()}else if(e instanceof Ra)t=e.slice();else if(n(e))for(var o in t={},e)t[o]=za(e[o],n);else t=e;return t}function ja(e){for(var t=arguments,n=1;n<t.length;n++){var r=t[n];for(var i in r)La(e[i])?ja(e[i],za(r[i])):e[i]=za(r[i])}return e}function $a(e,t,n){for(var r,i=0,o=-1;i<t.length;i++){var a=t[i];if(a>o){for(r=a-1;r>=0&&null==e[r];)e[r--]=null;for(r=a+1;r<n&&null==e[r];)e[o=r++]=null}}}var Ya="undefined"==typeof queueMicrotask?function(e){return Promise.resolve().then(e)}:queueMicrotask,Ha=["January","February","March","April","May","June","July","August","September","October","November","December"],Va=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function Ua(e){return e.slice(0,3)}var qa=Va.map(Ua),Wa=Ha.map(Ua),Qa={MMMM:Ha,MMM:Wa,WWWW:Va,WWW:qa};function Ga(e){return(e<10?"0":"")+e}var Ja={YYYY:function(e){return e.getFullYear()},YY:function(e){return(e.getFullYear()+"").slice(2)},MMMM:function(e,t){return t.MMMM[e.getMonth()]},MMM:function(e,t){return t.MMM[e.getMonth()]},MM:function(e){return Ga(e.getMonth()+1)},M:function(e){return e.getMonth()+1},DD:function(e){return Ga(e.getDate())},D:function(e){return e.getDate()},WWWW:function(e,t){return t.WWWW[e.getDay()]},WWW:function(e,t){return t.WWW[e.getDay()]},HH:function(e){return Ga(e.getHours())},H:function(e){return e.getHours()},h:function(e){var t=e.getHours();return 0==t?12:t>12?t-12:t},AA:function(e){return e.getHours()>=12?"PM":"AM"},aa:function(e){return e.getHours()>=12?"pm":"am"},a:function(e){return e.getHours()>=12?"p":"a"},mm:function(e){return Ga(e.getMinutes())},m:function(e){return e.getMinutes()},ss:function(e){return Ga(e.getSeconds())},s:function(e){return e.getSeconds()},fff:function(e){return((t=e.getMilliseconds())<10?"00":t<100?"0":"")+t;var t}};function Za(e,t){t=t||Qa;for(var n,r=[],i=/\{([a-z]+)\}|[^{]+/gi;n=i.exec(e);)r.push("{"==n[0][0]?Ja[n[1]]:n[0]);return function(e){for(var n="",i=0;i<r.length;i++)n+="string"==typeof r[i]?r[i]:r[i](e,t);return n}}var Ka=(new Intl.DateTimeFormat).resolvedOptions().timeZone;var Xa=function(e){return e%1==0},eu=[1,2,2.5,5],tu=Na(10,-16,0,eu),nu=Na(10,0,16,eu),ru=nu.filter(Xa),iu=tu.concat(nu),ou="{YYYY}",au="\n"+ou,uu="{M}/{D}",lu="\n"+uu,cu=lu+"/{YY}",su="{aa}",fu="{h}:{mm}"+su,du="\n"+fu,hu=":{ss}",pu=null;function vu(e){var t=1e3*e,n=60*t,r=60*n,i=24*r,o=30*i,a=365*i;return[(1==e?Na(10,0,3,eu).filter(Xa):Na(10,-3,0,eu)).concat([t,5*t,10*t,15*t,30*t,n,5*n,10*n,15*n,30*n,r,2*r,3*r,4*r,6*r,8*r,12*r,i,2*i,3*i,4*i,5*i,6*i,7*i,8*i,9*i,10*i,15*i,o,2*o,3*o,4*o,6*o,a,2*a,5*a,10*a,25*a,50*a,100*a]),[[a,ou,pu,pu,pu,pu,pu,pu,1],[28*i,"{MMM}",au,pu,pu,pu,pu,pu,1],[i,uu,au,pu,pu,pu,pu,pu,1],[r,"{h}"+su,cu,pu,lu,pu,pu,pu,1],[n,fu,cu,pu,lu,pu,pu,pu,1],[t,hu,cu+" "+fu,pu,lu+" "+fu,pu,du,pu,1],[e,hu+".{fff}",cu+" "+fu,pu,lu+" "+fu,pu,du,pu,1]],function(t){return function(u,l,c,s,f,d){var h=[],p=f>=a,v=f>=o&&f<a,m=t(c),g=Ea(m*e,3),y=Eu(m.getFullYear(),p?0:m.getMonth(),v||p?1:m.getDate()),_=Ea(y*e,3);if(v||p)for(var b=v?f/o:0,D=p?f/a:0,w=g==_?g:Ea(Eu(y.getFullYear()+D,y.getMonth()+b,1)*e,3),x=new Date(oa(w/e)),k=x.getFullYear(),C=x.getMonth(),E=0;w<=s;E++){var A=Eu(k+D*E,C+b*E,1),S=A-t(Ea(A*e,3));(w=Ea((+A+S)*e,3))<=s&&h.push(w)}else{var N=f>=i?i:f,M=_+(ia(c)-ia(g))+ka(g-_,N);h.push(M);for(var F=t(M),O=F.getHours()+F.getMinutes()/n+F.getSeconds()/r,T=f/r,B=d/u.axes[l]._space;!((M=Ea(M+f,1==e?0:3))>s);)if(T>1){var I=ia(Ea(O+T,6))%24,L=t(M).getHours()-I;L>1&&(L=-1),O=(O+T)%24,Ea(((M-=L*r)-h[h.length-1])/f,3)*B>=.7&&h.push(M)}else h.push(M)}return h}}]}var mu=m(vu(1),3),gu=mu[0],yu=mu[1],_u=mu[2],bu=m(vu(.001),3),Du=bu[0],wu=bu[1],xu=bu[2];function ku(e,t){return e.map((function(e){return e.map((function(n,r){return 0==r||8==r||null==n?n:t(1==r||0==e[8]?n:e[1]+n)}))}))}function Cu(e,t){return function(n,r,i,o,a){var u,l,c,s,f,d,h=t.find((function(e){return a>=e[0]}))||t[t.length-1];return r.map((function(t){var n=e(t),r=n.getFullYear(),i=n.getMonth(),o=n.getDate(),a=n.getHours(),p=n.getMinutes(),v=n.getSeconds(),m=r!=u&&h[2]||i!=l&&h[3]||o!=c&&h[4]||a!=s&&h[5]||p!=f&&h[6]||v!=d&&h[7]||h[1];return u=r,l=i,c=o,s=a,f=p,d=v,m(n)}))}}function Eu(e,t,n){return new Date(e,t,n)}function Au(e,t){return t(e)}Na(2,-53,53,[1]);function Su(e,t){return function(n,r){return t(e(r))}}var Nu={show:!0,live:!0,isolate:!1,mount:function(){},markers:{show:!0,width:2,stroke:function(e,t){var n=e.series[t];return n.width?n.stroke(e,t):n.points.width?n.points.stroke(e,t):null},fill:function(e,t){return e.series[t].fill(e,t)},dash:"solid"},idx:null,idxs:null,values:[]};var Mu=[0,0];function Fu(e,t,n){return function(e){0==e.button&&n(e)}}function Ou(e,t,n){return n}var Tu={show:!0,x:!0,y:!0,lock:!1,move:function(e,t,n){return Mu[0]=t,Mu[1]=n,Mu},points:{show:function(e,t){var n=e.cursor.points,r=Mo(),i=n.size(e,t);So(r,oo,i),So(r,ao,i);var o=i/-2;So(r,"marginLeft",o),So(r,"marginTop",o);var a=n.width(e,t,i);return a&&So(r,"borderWidth",a),r},size:function(e,t){return Xu(e.series[t].points.width,1)},width:0,stroke:function(e,t){var n=e.series[t].points;return n._stroke||n._fill},fill:function(e,t){var n=e.series[t].points;return n._fill||n._stroke}},bind:{mousedown:Fu,mouseup:Fu,click:Fu,dblclick:Fu,mousemove:Ou,mouseleave:Ou,mouseenter:Ou},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,_x:!1,_y:!1},focus:{prox:-1},left:-10,top:-10,idx:null,dataIdx:function(e,t,n){return n},idxs:null},Bu={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},Iu=ja({},Bu,{filter:ba}),Lu=ja({},Iu,{size:10}),Pu=ja({},Bu,{show:!1}),Ru='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',zu="bold "+Ru,ju={show:!0,scale:"x",stroke:fo,space:50,gap:5,size:50,labelGap:0,labelSize:30,labelFont:zu,side:2,grid:Iu,ticks:Lu,border:Pu,font:Ru,rotate:0},$u={show:!0,scale:"x",auto:!1,sorted:1,min:pa,max:-pa,idxs:[]};function Yu(e,t,n,r,i){return t.map((function(e){return null==e?"":ea(e)}))}function Hu(e,t,n,r,i,o,a){for(var u=[],l=Aa.get(i)||0,c=n=a?n:Ea(ka(n,i),l);c<=r;c=Ea(c+i,l))u.push(Object.is(c,-0)?0:c);return u}function Vu(e,t,n,r,i,o,a){var u=[],l=e.scales[e.axes[t].scale].log,c=ia((10==l?fa:da)(n));i=ca(l,c),c<0&&(i=Ea(i,-c));var s=n;do{u.push(s),(s=Ea(s+i,Aa.get(i)))>=i*l&&(i=s)}while(s<=r);return u}function Uu(e,t,n,r,i,o,a){var u=e.scales[e.axes[t].scale].asinh,l=r>u?Vu(e,t,la(u,n),r,i):[u],c=r>=0&&n<=0?[0]:[];return(n<-u?Vu(e,t,la(u,-r),-n,i):[u]).reverse().map((function(e){return-e})).concat(c,l)}var qu=/./,Wu=/[12357]/,Qu=/[125]/,Gu=/1/;function Ju(e,t,n,r,i){var o=e.axes[n],a=o.scale,u=e.scales[a];if(3==u.distr&&2==u.log)return t;var l=e.valToPos,c=o._space,s=l(10,a),f=l(9,a)-s>=c?qu:l(7,a)-s>=c?Wu:l(5,a)-s>=c?Qu:Gu;return t.map((function(e){return 4==u.distr&&0==e||f.test(e)?e:null}))}function Zu(e,t){return null==t?"":ea(t)}var Ku={show:!0,scale:"y",stroke:fo,space:30,gap:5,size:50,labelGap:0,labelSize:30,labelFont:zu,side:3,grid:Iu,ticks:Lu,border:Pu,font:Ru,rotate:0};function Xu(e,t){return Ea((3+2*(e||1))*t,3)}var el={scale:null,auto:!0,sorted:0,min:pa,max:-pa},tl=function(e,t,n,r,i){return i},nl={show:!0,auto:!0,sorted:0,gaps:tl,alpha:1,facets:[ja({},el,{scale:"x"}),ja({},el,{scale:"y"})]},rl={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:tl,alpha:1,points:{show:function(e,t){var n=e.series[0],r=n.scale,i=n.idxs,o=e._data[0],a=e.valToPos(o[i[0]],r,!0),u=e.valToPos(o[i[1]],r,!0),l=ra(u-a)/(e.series[t].points.space*Qi);return i[1]-i[0]<=l},filter:null},values:null,min:pa,max:-pa,idxs:[],path:null,clip:null};function il(e,t,n,r,i){return n/10}var ol={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},al=ja({},ol,{time:!1,ori:1}),ul={};function ll(e,t){var n=ul[e];return n||(n={key:e,plots:[],sub:function(e){n.plots.push(e)},unsub:function(e){n.plots=n.plots.filter((function(t){return t!=e}))},pub:function(e,t,r,i,o,a,u){for(var l=0;l<n.plots.length;l++)n.plots[l]!=t&&n.plots[l].pub(e,t,r,i,o,a,u)}},null!=e&&(ul[e]=n)),n}function cl(e,t,n){var r=e.mode,i=e.series[t],o=2==r?e._data[t]:e._data,a=e.scales,u=e.bbox,l=o[0],c=2==r?o[1]:o[t],s=2==r?a[i.facets[0].scale]:a[e.series[0].scale],f=2==r?a[i.facets[1].scale]:a[i.scale],d=u.left,h=u.top,p=u.width,v=u.height,m=e.valToPosH,g=e.valToPosV;return 0==s.ori?n(i,l,c,s,f,m,g,d,h,p,v,gl,_l,Dl,xl,Cl):n(i,l,c,s,f,g,m,h,d,v,p,yl,bl,wl,kl,El)}function sl(e,t){for(var n=0,r=0,i=Zo(e.bands,Fa),o=0;o<i.length;o++){var a=i[o];a.series[0]==t?n=a.dir:a.series[1]==t&&(1==a.dir?r|=1:r|=2)}return[n,1==r?-1:2==r?1:3==r?2:0]}function fl(e,t,n,r,i){var o=e.mode,a=e.series[t],u=2==o?a.facets[1].scale:a.scale,l=e.scales[u];return-1==i?l.min:1==i?l.max:3==l.distr?1==l.dir?l.min:l.max:0}function dl(e,t,n,r,i,o){return cl(e,t,(function(e,t,a,u,l,c,s,f,d,h,p){var v,m,g=e.pxRound,y=u.dir*(0==u.ori?1:-1),_=0==u.ori?_l:bl;1==y?(v=n,m=r):(v=r,m=n);var b=g(c(t[v],u,h,f)),D=g(s(a[v],l,p,d)),w=g(c(t[m],u,h,f)),x=g(s(1==o?l.max:l.min,l,p,d)),k=new Path2D(i);return _(k,w,x),_(k,b,x),_(k,b,D),k}))}function hl(e,t,n,r,i,o){var a=null;if(e.length>0){a=new Path2D;for(var u=0==t?Dl:wl,l=n,c=0;c<e.length;c++){var s=e[c];if(s[1]>s[0]){var f=s[0]-l;f>0&&u(a,l,r,f,r+o),l=s[1]}}var d=n+i-l;d>0&&u(a,l,r,d,r+o)}return a}function pl(e,t,n,r,i,o,a){for(var u=[],l=e.length,c=1==i?n:r;c>=n&&c<=r;c+=i){if(null===t[c]){var s=c,f=c;if(1==i)for(;++c<=r&&null===t[c];)f=c;else for(;--c>=n&&null===t[c];)f=c;var d=o(e[s]),h=f==s?d:o(e[f]),p=s-i;d=a<=0&&p>=0&&p<l?o(e[p]):d;var v=f+i;(h=a>=0&&v>=0&&v<l?o(e[v]):h)>=d&&u.push([d,h])}}return u}function vl(e){return 0==e?_a:1==e?oa:function(t){return ma(t,e)}}function ml(e){var t=0==e?gl:yl,n=0==e?function(e,t,n,r,i,o){e.arcTo(t,n,r,i,o)}:function(e,t,n,r,i,o){e.arcTo(n,t,i,r,o)},r=0==e?function(e,t,n,r,i){e.rect(t,n,r,i)}:function(e,t,n,r,i){e.rect(n,t,i,r)};return function(e,i,o,a,u){var l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;0==l?r(e,i,o,a,u):(l=ua(l,a/2,u/2),t(e,i+l,o),n(e,i+a,o,i+a,o+u,l),n(e,i+a,o+u,i,o+u,l),n(e,i,o+u,i,o,l),n(e,i,o,i+a,o,l),e.closePath())}}var gl=function(e,t,n){e.moveTo(t,n)},yl=function(e,t,n){e.moveTo(n,t)},_l=function(e,t,n){e.lineTo(t,n)},bl=function(e,t,n){e.lineTo(n,t)},Dl=ml(0),wl=ml(1),xl=function(e,t,n,r,i,o){e.arc(t,n,r,i,o)},kl=function(e,t,n,r,i,o){e.arc(n,t,r,i,o)},Cl=function(e,t,n,r,i,o,a){e.bezierCurveTo(t,n,r,i,o,a)},El=function(e,t,n,r,i,o,a){e.bezierCurveTo(n,t,i,r,a,o)};function Al(e){return function(e,t,n,r,i){return cl(e,t,(function(t,o,a,u,l,c,s,f,d,h,p){var v,m,g=t.pxRound,y=t.points;0==u.ori?(v=gl,m=xl):(v=yl,m=kl);var _=Ea(y.width*Qi,3),b=(y.size-y.width)/2*Qi,D=Ea(2*b,3),w=new Path2D,x=new Path2D,k=e.bbox,C=k.left,E=k.top,A=k.width,S=k.height;Dl(x,C-D,E-D,A+2*D,S+2*D);var N=function(e){if(null!=a[e]){var t=g(c(o[e],u,h,f)),n=g(s(a[e],l,p,d));v(w,t+b,n),m(w,t,n,b,0,2*na)}};if(i)i.forEach(N);else for(var M=n;M<=r;M++)N(M);return{stroke:_>0?w:null,fill:w,clip:x,flags:3}}))}}function Sl(e){return function(t,n,r,i,o,a){r!=i&&(o!=r&&a!=r&&e(t,n,r),o!=i&&a!=i&&e(t,n,i),e(t,n,a))}}var Nl=Sl(_l),Ml=Sl(bl);function Fl(e){var t=Zo(null===e||void 0===e?void 0:e.alignGaps,0);return function(e,n,r,i){return cl(e,n,(function(o,a,u,l,c,s,f,d,h,p,v){var g,y,b=o.pxRound,D=function(e){return b(s(e,l,p,d))},w=function(e){return b(f(e,c,v,h))};0==l.ori?(g=_l,y=Nl):(g=bl,y=Ml);for(var x,k,C,E=l.dir*(0==l.ori?1:-1),A={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},S=A.stroke,N=pa,M=-pa,F=D(a[1==E?r:i]),O=Yo(u,r,i,1*E),T=Yo(u,r,i,-1*E),B=D(a[O]),I=D(a[T]),L=1==E?r:i;L>=r&&L<=i;L+=E){var P=D(a[L]);P==F?null!=u[L]&&(k=w(u[L]),N==pa&&(g(S,P,k),x=k),N=ua(k,N),M=la(k,M)):(N!=pa&&(y(S,F,N,M,x,k),C=F),null!=u[L]?(g(S,P,k=w(u[L])),N=M=x=k):(N=pa,M=-pa),F=P)}N!=pa&&N!=M&&C!=F&&y(S,F,N,M,x,k);var R=m(sl(e,n),2),z=R[0],j=R[1];if(null!=o.fill||0!=z){var $=A.fill=new Path2D(S),Y=w(o.fillTo(e,n,o.min,o.max,z));g($,I,Y),g($,B,Y)}if(!o.spanGaps){var H,V=[];(H=V).push.apply(H,_(pl(a,u,r,i,E,D,t))),A.gaps=V=o.gaps(e,n,r,i,V),A.clip=hl(V,l.ori,d,h,p,v)}return 0!=j&&(A.band=2==j?[dl(e,n,r,i,S,-1),dl(e,n,r,i,S,1)]:dl(e,n,r,i,S,j)),A}))}}function Ol(e,t,n,r,i,o){var a=e.length;if(a<2)return null;var u=new Path2D;if(n(u,e[0],t[0]),2==a)r(u,e[1],t[1]);else{for(var l=Array(a),c=Array(a-1),s=Array(a-1),f=Array(a-1),d=0;d<a-1;d++)s[d]=t[d+1]-t[d],f[d]=e[d+1]-e[d],c[d]=s[d]/f[d];l[0]=c[0];for(var h=1;h<a-1;h++)0===c[h]||0===c[h-1]||c[h-1]>0!==c[h]>0?l[h]=0:(l[h]=3*(f[h-1]+f[h])/((2*f[h]+f[h-1])/c[h-1]+(f[h]+2*f[h-1])/c[h]),isFinite(l[h])||(l[h]=0));l[a-1]=c[a-2];for(var p=0;p<a-1;p++)i(u,e[p]+f[p]/3,t[p]+l[p]*f[p]/3,e[p+1]-f[p]/3,t[p+1]-l[p+1]*f[p]/3,e[p+1],t[p+1])}return u}var Tl=new Set;function Bl(){var e,t=g(Tl);try{for(t.s();!(e=t.n()).done;){e.value.syncRect(!0)}}catch(n){t.e(n)}finally{t.f()}}wo&&(zo("resize",ko,Bl),zo("scroll",ko,Bl,!0),zo(Do,ko,(function(){Gl.pxRatio=Qi})));var Il=Fl(),Ll=Al();function Pl(e,t,n,r){return(r?[e[0],e[1]].concat(e.slice(2)):[e[0]].concat(e.slice(1))).map((function(e,r){return Rl(e,r,t,n)}))}function Rl(e,t,n,r){return ja({},0==t?n:r,e)}function zl(e,t,n){return null==t?Oa:[t,n]}var jl=zl;function $l(e,t,n){return null==t?Oa:Jo(t,n,.1,!0)}function Yl(e,t,n,r){return null==t?Oa:Uo(t,n,e.scales[r].log,!1)}var Hl=Yl;function Vl(e,t,n,r){return null==t?Oa:qo(t,n,e.scales[r].log,!1)}var Ul=Vl;function ql(e,t,n,r,i){var o=la(va(e),va(t)),a=t-e,u=$o(i/r*a,n);do{var l=n[u],c=r*l/a;if(c>=i&&o+(l<5?Aa.get(l):0)<=17)return[l,c]}while(++u<n.length);return[0,0]}function Wl(e){var t,n;return[e=e.replace(/(\d+)px/,(function(e,r){return(t=oa((n=+r)*Qi))+"px"})),t,n]}function Ql(e){e.show&&[e.font,e.labelFont].forEach((function(e){var t=Ea(e[2]*Qi,1);e[0]=e[0].replace(/[0-9.]+px/,t+"px"),e[1]=t}))}function Gl(e,t,n){var r={mode:Zo(e.mode,1)},i=r.mode;function o(e,t){return((3==t.distr?fa(e>0?e:t.clamp(r,e,t.min,t.max,t.key)):4==t.distr?ha(e,t.asinh):e)-t._min)/(t._max-t._min)}function a(e,t,n,r){var i=o(e,t);return r+n*(-1==t.dir?1-i:i)}function u(e,t,n,r){var i=o(e,t);return r+n*(-1==t.dir?i:1-i)}function l(e,t,n,r){return 0==t.ori?a(e,t,n,r):u(e,t,n,r)}r.valToPosH=a,r.valToPosV=u;var c=!1;r.status=0;var s=r.root=Mo("uplot");(null!=e.id&&(s.id=e.id),Eo(s,e.class),e.title)&&(Mo("u-title",s).textContent=e.title);var f=No("canvas"),d=r.ctx=f.getContext("2d"),h=Mo("u-wrap",s),p=r.under=Mo("u-under",h);h.appendChild(f);var v=r.over=Mo("u-over",h),g=+Zo((e=za(e)).pxAlign,1),y=vl(g);(e.plugins||[]).forEach((function(t){t.opts&&(e=t.opts(r,e)||e)}));var _,b,D=e.ms||.001,w=r.series=1==i?Pl(e.series||[],$u,rl,!1):(_=e.series||[null],b=nl,_.map((function(e,t){return 0==t?null:ja({},b,e)}))),x=r.axes=Pl(e.axes||[],ju,Ku,!0),k=r.scales={},C=r.bands=e.bands||[];C.forEach((function(e){e.fill=ya(e.fill||null),e.dir=Zo(e.dir,-1)}));var E=2==i?w[1].facets[0].scale:w[0].scale,A={axes:function(){for(var e=function(){var e=x[t];if(!e.show||!e._show)return"continue";var n,i,o=e.side,a=o%2,u=e.stroke(r,t),c=0==o||3==o?-1:1;if(e.label){var s=e.labelGap*c,f=oa((e._lpos+s)*Qi);tt(e.labelFont[0],u,"center",2==o?uo:lo),d.save(),1==a?(n=i=0,d.translate(f,oa(ve+ge/2)),d.rotate((3==o?-na:na)/2)):(n=oa(pe+me/2),i=f),d.fillText(e.label,n,i),d.restore()}var h=m(e._found,2),p=h[0],v=h[1];if(0==v)return"continue";var g=k[e.scale],_=0==a?me:ge,b=0==a?pe:ve,D=oa(e.gap*Qi),w=e._splits,C=2==g.distr?w.map((function(e){return Je[e]})):w,E=2==g.distr?Je[w[1]]-Je[w[0]]:p,A=e.ticks,S=e.border,N=A.show?oa(A.size*Qi):0,M=e._rotate*-na/180,F=y(e._pos*Qi),O=F+(N+D)*c;i=0==a?O:0,n=1==a?O:0,tt(e.font[0],u,1==e.align?co:2==e.align?so:M>0?co:M<0?so:0==a?"center":3==o?so:co,M||1==a?"middle":2==o?uo:lo);for(var T=1.5*e.font[1],B=w.map((function(e){return y(l(e,g,_,b))})),I=e._values,L=0;L<I.length;L++){var P=I[L];if(null!=P){0==a?n=B[L]:i=B[L];for(var R=-1==(P=""+P).indexOf("\n")?[P]:P.split(/\n/gm),z=0;z<R.length;z++){var j=R[z];M?(d.save(),d.translate(n,i+z*T),d.rotate(M),d.fillText(j,0,0),d.restore()):d.fillText(j,n,i+z*T)}}}A.show&<(B,A.filter(r,C,t,v,E),a,o,F,N,Ea(A.width*Qi,3),A.stroke(r,t),A.dash,A.cap);var $=e.grid;$.show&<(B,$.filter(r,C,t,v,E),a,0==a?2:1,0==a?ve:pe,0==a?ge:me,Ea($.width*Qi,3),$.stroke(r,t),$.dash,$.cap),S.show&<([F],[1],0==a?1:0,0==a?1:2,1==a?ve:pe,1==a?ge:me,Ea(S.width*Qi,3),S.stroke(r,t),S.dash,S.cap)},t=0;t<x.length;t++)e();ln("drawAxes")},series:function(){Be>0&&(w.forEach((function(e,n){if(n>0&&e.show&&null==e._paths){var o=2==i?[0,t[n][0].length-1]:function(e){var t=ga(We-1,0,Be-1),n=ga(Qe+1,0,Be-1);for(;null==e[t]&&t>0;)t--;for(;null==e[n]&&n<Be-1;)n++;return[t,n]}(t[n]);e._paths=e.paths(r,n,o[0],o[1])}})),w.forEach((function(e,t){if(t>0&&e.show){Ve!=e.alpha&&(d.globalAlpha=Ve=e.alpha),rt(t,!1),e._paths&&it(t,!1),rt(t,!0);var n=e._paths?e._paths.gaps:null,i=e.points.show(r,t,We,Qe,n),o=e.points.filter(r,t,i,n);(i||o)&&(e.points._paths=e.points.paths(r,t,We,Qe,o),it(t,!0)),1!=Ve&&(d.globalAlpha=Ve=1),ln("drawSeries",t)}})))}},S=(e.drawOrder||["axes","series"]).map((function(e){return A[e]}));function N(t){var n=k[t];if(null==n){var r=(e.scales||Ma)[t]||Ma;if(null!=r.from)N(r.from),k[t]=ja({},k[r.from],r,{key:t});else{(n=k[t]=ja({},t==E?ol:al,r)).key=t;var o=n.time,a=n.range,u=Ta(a);if((t!=E||2==i&&!o)&&(!u||null!=a[0]&&null!=a[1]||(a={min:null==a[0]?Wo:{mode:1,hard:a[0],soft:a[0]},max:null==a[1]?Wo:{mode:1,hard:a[1],soft:a[1]}},u=!1),!u&&La(a))){var l=a;a=function(e,t,n){return null==t?Oa:Jo(t,n,l)}}n.range=ya(a||(o?jl:t==E?3==n.distr?Hl:4==n.distr?Ul:zl:3==n.distr?Yl:4==n.distr?Vl:$l)),n.auto=ya(!u&&n.auto),n.clamp=ya(n.clamp||il),n._min=n._max=null}}}for(var M in N("x"),N("y"),1==i&&w.forEach((function(e){N(e.scale)})),x.forEach((function(e){N(e.scale)})),e.scales)N(M);var F,O,T=k[E],B=T.distr;0==T.ori?(Eo(s,"u-hz"),F=a,O=u):(Eo(s,"u-vt"),F=u,O=a);var I={};for(var L in k){var P=k[L];null==P.min&&null==P.max||(I[L]={min:P.min,max:P.max},P.min=P.max=null)}var R,z=e.tzDate||function(e){return new Date(oa(e/D))},j=e.fmtDate||Za,$=1==D?_u(z):xu(z),Y=Cu(z,ku(1==D?yu:wu,j)),H=Su(z,Au("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",j)),V=[],U=r.legend=ja({},Nu,e.legend),q=U.show,W=U.markers;U.idxs=V,W.width=ya(W.width),W.dash=ya(W.dash),W.stroke=ya(W.stroke),W.fill=ya(W.fill);var Q,G=[],J=[],Z=!1,K={};if(U.live){var X=w[1]?w[1].values:null;for(var ee in Q=(Z=null!=X)?X(r,1,0):{_:0})K[ee]="--"}if(q)if(R=No("table","u-legend",s),U.mount(r,R),Z){var te=No("tr","u-thead",R);for(var ne in No("th",null,te),Q)No("th",io,te).textContent=ne}else Eo(R,"u-inline"),U.live&&Eo(R,"u-live");var re={show:!0},ie={show:!1};var oe=new Map;function ae(e,t,n){var i=oe.get(t)||{},o=Ee.bind[e](r,t,n);o&&(zo(e,t,i[e]=o),oe.set(t,i))}function ue(e,t,n){var r=oe.get(t)||{};for(var i in r)null!=e&&i!=e||(jo(i,t,r[i]),delete r[i]);null==e&&oe.delete(t)}var le=0,ce=0,se=0,fe=0,de=0,he=0,pe=0,ve=0,me=0,ge=0;r.bbox={};var ye=!1,_e=!1,be=!1,De=!1,we=!1,xe=!1;function ke(e,t,n){(n||e!=r.width||t!=r.height)&&Ce(e,t),ft(!1),be=!0,_e=!0,Ee.left>=0&&(De=xe=!0),Ct()}function Ce(e,t){r.width=le=se=e,r.height=ce=fe=t,de=he=0,function(){var e=!1,t=!1,n=!1,r=!1;x.forEach((function(i,o){if(i.show&&i._show){var a=i.side,u=a%2,l=i._size+(null!=i.label?i.labelSize:0);l>0&&(u?(se-=l,3==a?(de+=l,r=!0):n=!0):(fe-=l,0==a?(he+=l,e=!0):t=!0))}})),Oe[0]=e,Oe[1]=n,Oe[2]=t,Oe[3]=r,se-=qe[1]+qe[3],de+=qe[3],fe-=qe[2]+qe[0],he+=qe[0]}(),function(){var e=de+se,t=he+fe,n=de,r=he;function i(i,o){switch(i){case 1:return(e+=o)-o;case 2:return(t+=o)-o;case 3:return(n-=o)+o;case 0:return(r-=o)+o}}x.forEach((function(e,t){if(e.show&&e._show){var n=e.side;e._pos=i(n,e._size),null!=e.label&&(e._lpos=i(n,e.labelSize))}}))}();var n=r.bbox;pe=n.left=ma(de*Qi,.5),ve=n.top=ma(he*Qi,.5),me=n.width=ma(se*Qi,.5),ge=n.height=ma(fe*Qi,.5)}r.setSize=function(e){ke(e.width,e.height)};var Ee=r.cursor=ja({},Tu,{drag:{y:2==i}},e.cursor);Ee.idxs=V,Ee._lock=!1;var Ae=Ee.points;Ae.show=ya(Ae.show),Ae.size=ya(Ae.size),Ae.stroke=ya(Ae.stroke),Ae.width=ya(Ae.width),Ae.fill=ya(Ae.fill);var Se=r.focus=ja({},e.focus||{alpha:.3},Ee.focus),Ne=Se.prox>=0,Me=[null];function Fe(e,t){if(1==i||t>0){var n=1==i&&k[e.scale].time,o=e.value;e.value=n?Ia(o)?Su(z,Au(o,j)):o||H:o||Zu,e.label=e.label||(n?"Time":"Value")}if(t>0){e.width=null==e.width?1:e.width,e.paths=e.paths||Il||Da,e.fillTo=ya(e.fillTo||fl),e.pxAlign=+Zo(e.pxAlign,g),e.pxRound=vl(e.pxAlign),e.stroke=ya(e.stroke||null),e.fill=ya(e.fill||null),e._stroke=e._fill=e._paths=e._focus=null;var a=Xu(e.width,1),u=e.points=ja({},{size:a,width:la(1,.2*a),stroke:e.stroke,space:2*a,paths:Ll,_stroke:null,_fill:null},e.points);u.show=ya(u.show),u.filter=ya(u.filter),u.fill=ya(u.fill),u.stroke=ya(u.stroke),u.paths=ya(u.paths),u.pxAlign=e.pxAlign}if(q){var l=function(e,t){if(0==t&&(Z||!U.live||2==i))return Oa;var n=[],o=No("tr","u-series",R,R.childNodes[t]);Eo(o,e.class),e.show||Eo(o,ro);var a=No("th",null,o);if(W.show){var u=Mo("u-marker",a);if(t>0){var l=W.width(r,t);l&&(u.style.border=l+"px "+W.dash(r,t)+" "+W.stroke(r,t)),u.style.background=W.fill(r,t)}}var c=Mo(io,a);for(var s in c.textContent=e.label,t>0&&(W.show||(c.style.color=e.width>0?W.stroke(r,t):W.fill(r,t)),ae("click",a,(function(t){if(!Ee._lock){var n=w.indexOf(e);if((t.ctrlKey||t.metaKey)!=U.isolate){var r=w.some((function(e,t){return t>0&&t!=n&&e.show}));w.forEach((function(e,t){t>0&&zt(t,r?t==n?re:ie:re,!0,cn.setSeries)}))}else zt(n,{show:!e.show},!0,cn.setSeries)}})),Ne&&ae(go,a,(function(t){Ee._lock||zt(w.indexOf(e),jt,!0,cn.setSeries)}))),Q){var f=No("td","u-value",o);f.textContent="--",n.push(f)}return[o,n]}(e,t);G.splice(t,0,l[0]),J.splice(t,0,l[1]),U.values.push(null)}if(Ee.show){V.splice(t,0,null);var c=function(e,t){if(t>0){var n=Ee.points.show(r,t);if(n)return Eo(n,"u-cursor-pt"),Eo(n,e.class),Oo(n,-10,-10,se,fe),v.insertBefore(n,Me[t]),n}}(e,t);c&&Me.splice(t,0,c)}ln("addSeries",t)}r.addSeries=function(e,t){t=null==t?w.length:t,e=1==i?Rl(e,t,$u,rl):Rl(e,t,null,nl),w.splice(t,0,e),Fe(w[t],t)},r.delSeries=function(e){if(w.splice(e,1),q){U.values.splice(e,1),J.splice(e,1);var t=G.splice(e,1)[0];ue(null,t.firstChild),t.remove()}Ee.show&&(V.splice(e,1),Me.length>1&&Me.splice(e,1)[0].remove()),ln("delSeries",e)};var Oe=[!1,!1,!1,!1];function Te(e,t,n,r){var i=m(n,4),o=i[0],a=i[1],u=i[2],l=i[3],c=t%2,s=0;return 0==c&&(l||a)&&(s=0==t&&!o||2==t&&!u?oa(ju.size/3):0),1==c&&(o||u)&&(s=1==t&&!a||3==t&&!l?oa(Ku.size/2):0),s}var Be,Ie,Le,Pe,Re,ze,je,$e,Ye,He,Ve,Ue=r.padding=(e.padding||[Te,Te,Te,Te]).map((function(e){return ya(Zo(e,Te))})),qe=r._padding=Ue.map((function(e,t){return e(r,t,Oe,0)})),We=null,Qe=null,Ge=1==i?w[0].idxs:null,Je=null,Ze=!1;function Ke(e,n){if(t=null==e?[]:za(e,Pa),2==i){Be=0;for(var o=1;o<w.length;o++)Be+=t[o][0].length;r.data=t=e}else if(null==t[0]&&(t[0]=[]),r.data=t.slice(),Je=t[0],Be=Je.length,2==B){t[0]=Array(Be);for(var a=0;a<Be;a++)t[0][a]=a}if(r._data=t,ft(!0),ln("setData"),2==B&&(be=!0),!1!==n){var u=T;u.auto(r,Ze)?Xe():Rt(E,u.min,u.max),De=Ee.left>=0,xe=!0,Ct()}}function Xe(){var e,n;if(Ze=!0,1==i)if(Be>0){if(We=Ge[0]=0,Qe=Ge[1]=Be-1,e=t[0][We],n=t[0][Qe],2==B)e=We,n=Qe;else if(1==Be)if(3==B){var r=m(Uo(e,e,T.log,!1),2);e=r[0],n=r[1]}else if(4==B){var o=m(qo(e,e,T.log,!1),2);e=o[0],n=o[1]}else if(T.time)n=e+oa(86400/D);else{var a=m(Jo(e,n,.1,!0),2);e=a[0],n=a[1]}}else We=Ge[0]=e=null,Qe=Ge[1]=n=null;Rt(E,e,n)}function et(e,t,n,r,i,o){var a,u,l,c,s;null!==(a=e)&&void 0!==a||(e=ho),null!==(u=n)&&void 0!==u||(n=Fa),null!==(l=r)&&void 0!==l||(r="butt"),null!==(c=i)&&void 0!==c||(i=ho),null!==(s=o)&&void 0!==s||(o="round"),e!=Ie&&(d.strokeStyle=Ie=e),i!=Le&&(d.fillStyle=Le=i),t!=Pe&&(d.lineWidth=Pe=t),o!=ze&&(d.lineJoin=ze=o),r!=je&&(d.lineCap=je=r),n!=Re&&d.setLineDash(Re=n)}function tt(e,t,n,r){t!=Le&&(d.fillStyle=Le=t),e!=$e&&(d.font=$e=e),n!=Ye&&(d.textAlign=Ye=n),r!=He&&(d.textBaseline=He=r)}function nt(e,t,n,i){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(i.length>0&&e.auto(r,Ze)&&(null==t||null==t.min)){var a=Zo(We,0),u=Zo(Qe,i.length-1),l=null==n.min?3==e.distr?Vo(i,a,u):Ho(i,a,u,o):[n.min,n.max];e.min=ua(e.min,n.min=l[0]),e.max=la(e.max,n.max=l[1])}}function rt(e,t){var n=t?w[e].points:w[e];n._stroke=n.stroke(r,e),n._fill=n.fill(r,e)}function it(e,n){var i=n?w[e].points:w[e],o=i._stroke,a=i._fill,u=i._paths,l=u.stroke,c=u.fill,s=u.clip,f=u.flags,h=null,p=Ea(i.width*Qi,3),v=p%2/2;n&&null==a&&(a=p>0?"#fff":o);var m=1==i.pxAlign;if(m&&d.translate(v,v),!n){var g=pe,y=ve,_=me,b=ge,D=p*Qi/2;0==i.min&&(b+=D),0==i.max&&(y-=D,b+=D),(h=new Path2D).rect(g,y,_,b)}n?ot(o,p,i.dash,i.cap,a,l,c,f,s):function(e,n,i,o,a,u,l,c,s,f,d){var h=!1;C.forEach((function(p,v){if(p.series[0]==e){var m,g=w[p.series[1]],y=t[p.series[1]],_=(g._paths||Ma).band;Ta(_)&&(_=1==p.dir?_[0]:_[1]);var b=null;g.show&&_&&function(e,t,n){for(t=Zo(t,0),n=Zo(n,e.length-1);t<=n;){if(null!=e[t])return!0;t++}return!1}(y,We,Qe)?(b=p.fill(r,v)||u,m=g._paths.clip):_=null,ot(n,i,o,a,b,l,c,s,f,d,m,_),h=!0}})),h||ot(n,i,o,a,u,l,c,s,f,d)}(e,o,p,i.dash,i.cap,a,l,c,f,h,s),m&&d.translate(-v,-v)}r.setData=Ke;function ot(e,t,n,r,i,o,a,u,l,c,s,f){et(e,t,n,r,i),(l||c||f)&&(d.save(),l&&d.clip(l),c&&d.clip(c)),f?3==(3&u)?(d.clip(f),s&&d.clip(s),ut(i,a),at(e,o,t)):2&u?(ut(i,a),d.clip(f),at(e,o,t)):1&u&&(d.save(),d.clip(f),s&&d.clip(s),ut(i,a),d.restore(),at(e,o,t)):(ut(i,a),at(e,o,t)),(l||c||f)&&d.restore()}function at(e,t,n){n>0&&(t instanceof Map?t.forEach((function(e,t){d.strokeStyle=Ie=t,d.stroke(e)})):null!=t&&e&&d.stroke(t))}function ut(e,t){t instanceof Map?t.forEach((function(e,t){d.fillStyle=Le=t,d.fill(e)})):null!=t&&e&&d.fill(t)}function lt(e,t,n,r,i,o,a,u,l,c){var s=a%2/2;1==g&&d.translate(s,s),et(u,a,l,c,u),d.beginPath();var f,h,p,v,m=i+(0==r||3==r?-o:o);0==n?(h=i,v=m):(f=i,p=m);for(var y=0;y<e.length;y++)null!=t[y]&&(0==n?f=p=e[y]:h=v=e[y],d.moveTo(f,h),d.lineTo(p,v));d.stroke(),1==g&&d.translate(-s,-s)}function ct(e){var t=!0;return x.forEach((function(n,i){if(n.show){var o=k[n.scale];if(null!=o.min){n._show||(t=!1,n._show=!0,ft(!1));var a=n.side,u=a%2,l=o.min,c=o.max,s=function(e,t,n,i){var o,a=x[e];if(i<=0)o=[0,0];else{var u=a._space=a.space(r,e,t,n,i);o=ql(t,n,a._incrs=a.incrs(r,e,t,n,i,u),i,u)}return a._found=o}(i,l,c,0==u?se:fe),f=m(s,2),d=f[0],h=f[1];if(0!=h){var p=2==o.distr,v=n._splits=n.splits(r,i,l,c,d,h,p),g=2==o.distr?v.map((function(e){return Je[e]})):v,y=2==o.distr?Je[v[1]]-Je[v[0]]:d,_=n._values=n.values(r,n.filter(r,g,i,h,y),i,h,y);n._rotate=2==a?n.rotate(r,_,i,h):0;var b=n._size;n._size=aa(n.size(r,_,i,e)),null!=b&&n._size!=b&&(t=!1)}}else n._show&&(t=!1,n._show=!1,ft(!1))}})),t}function st(e){var t=!0;return Ue.forEach((function(n,i){var o=n(r,i,Oe,e);o!=qe[i]&&(t=!1),qe[i]=o})),t}function ft(e){w.forEach((function(t,n){n>0&&(t._paths=null,e&&(1==i?(t.min=null,t.max=null):t.facets.forEach((function(e){e.min=null,e.max=null}))))}))}var dt,ht,pt,vt,mt,gt,yt,_t,bt,Dt,wt,xt,kt=!1;function Ct(){kt||(Ya(Et),kt=!0)}function Et(){ye&&(!function(){var e=za(k,Pa);for(var n in e){var o=e[n],a=I[n];if(null!=a&&null!=a.min)ja(o,a),n==E&&ft(!0);else if(n!=E||2==i)if(0==Be&&null==o.from){var u=o.range(r,null,null,n);o.min=u[0],o.max=u[1]}else o.min=pa,o.max=-pa}if(Be>0)for(var l in w.forEach((function(n,o){if(1==i){var a=n.scale,u=e[a],l=I[a];if(0==o){var c=u.range(r,u.min,u.max,a);u.min=c[0],u.max=c[1],We=$o(u.min,t[0]),(Qe=$o(u.max,t[0]))-We>1&&(t[0][We]<u.min&&We++,t[0][Qe]>u.max&&Qe--),n.min=Je[We],n.max=Je[Qe]}else n.show&&n.auto&&nt(u,l,n,t[o],n.sorted);n.idxs[0]=We,n.idxs[1]=Qe}else if(o>0&&n.show&&n.auto){var s=m(n.facets,2),f=s[0],d=s[1],h=f.scale,p=d.scale,v=m(t[o],2),g=v[0],y=v[1];nt(e[h],I[h],f,g,f.sorted),nt(e[p],I[p],d,y,d.sorted),n.min=d.min,n.max=d.max}})),e){var c=e[l],s=I[l];if(null==c.from&&(null==s||null==s.min)){var f=c.range(r,c.min==pa?null:c.min,c.max==-pa?null:c.max,l);c.min=f[0],c.max=f[1]}}for(var d in e){var h=e[d];if(null!=h.from){var p=e[h.from];if(null==p.min)h.min=h.max=null;else{var v=h.range(r,p.min,p.max,d);h.min=v[0],h.max=v[1]}}}var g={},y=!1;for(var _ in e){var b=e[_],D=k[_];if(D.min!=b.min||D.max!=b.max){D.min=b.min,D.max=b.max;var x=D.distr;D._min=3==x?fa(D.min):4==x?ha(D.min,D.asinh):D.min,D._max=3==x?fa(D.max):4==x?ha(D.max,D.asinh):D.max,g[_]=y=!0}}if(y){for(var C in w.forEach((function(e,t){2==i?t>0&&g.y&&(e._paths=null):g[e.scale]&&(e._paths=null)})),g)be=!0,ln("setScale",C);Ee.show&&Ee.left>=0&&(De=xe=!0)}for(var A in I)I[A]=null}(),ye=!1),be&&(!function(){for(var e=!1,t=0;!e;){var n=ct(++t),i=st(t);(e=3==t||n&&i)||(Ce(r.width,r.height),_e=!0)}}(),be=!1),_e&&(So(p,co,de),So(p,uo,he),So(p,oo,se),So(p,ao,fe),So(v,co,de),So(v,uo,he),So(v,oo,se),So(v,ao,fe),So(h,oo,le),So(h,ao,ce),f.width=oa(le*Qi),f.height=oa(ce*Qi),x.forEach((function(e){var t=e._el,n=e._show,r=e._size,i=e._pos,o=e.side;if(null!=t)if(n){var a=o%2==1;So(t,a?"left":"top",i-(3===o||0===o?r:0)),So(t,a?"width":"height",r),So(t,a?"top":"left",a?he:de),So(t,a?"height":"width",a?fe:se),Ao(t,ro)}else Eo(t,ro)})),Ie=Le=Pe=ze=je=$e=Ye=He=Re=null,Ve=1,Jt(!0),ln("setSize"),_e=!1),le>0&&ce>0&&(d.clearRect(0,0,f.width,f.height),ln("drawClear"),S.forEach((function(e){return e()})),ln("draw")),It.show&&we&&(Pt(It),we=!1),Ee.show&&De&&(Qt(null,!0,!1),De=!1),c||(c=!0,r.status=1,ln("ready")),Ze=!1,kt=!1}function At(e,n){var i=k[e];if(null==i.from){if(0==Be){var o=i.range(r,n.min,n.max,e);n.min=o[0],n.max=o[1]}if(n.min>n.max){var a=n.min;n.min=n.max,n.max=a}if(Be>1&&null!=n.min&&null!=n.max&&n.max-n.min<1e-16)return;e==E&&2==i.distr&&Be>0&&(n.min=$o(n.min,t[0]),n.max=$o(n.max,t[0]),n.min==n.max&&n.max++),I[e]=n,ye=!0,Ct()}}r.redraw=function(e,t){be=t||!1,!1!==e?Rt(E,T.min,T.max):Ct()},r.setScale=At;var St=!1,Nt=Ee.drag,Mt=Nt.x,Ft=Nt.y;Ee.show&&(Ee.x&&(dt=Mo("u-cursor-x",v)),Ee.y&&(ht=Mo("u-cursor-y",v)),0==T.ori?(pt=dt,vt=ht):(pt=ht,vt=dt),wt=Ee.left,xt=Ee.top);var Ot,Tt,Bt,It=r.select=ja({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),Lt=It.show?Mo("u-select",It.over?v:p):null;function Pt(e,t){if(It.show){for(var n in e)It[n]=e[n],n in Xt&&So(Lt,n,e[n]);!1!==t&&ln("setSelect")}}function Rt(e,t,n){At(e,{min:t,max:n})}function zt(e,t,n,o){null!=t.focus&&function(e){if(e!=Bt){var t=null==e,n=1!=Se.alpha;w.forEach((function(r,i){var o=t||0==i||i==e;r._focus=t?null:o,n&&function(e,t){w[e].alpha=t,Ee.show&&Me[e]&&(Me[e].style.opacity=t);q&&G[e]&&(G[e].style.opacity=t)}(i,o?1:Se.alpha)})),Bt=e,n&&Ct()}}(e),null!=t.show&&w.forEach((function(n,r){r>0&&(e==r||null==e)&&(n.show=t.show,function(e,t){var n=w[e],r=q?G[e]:null;n.show?r&&Ao(r,ro):(r&&Eo(r,ro),Me.length>1&&Oo(Me[e],-10,-10,se,fe))}(r,t.show),Rt(2==i?n.facets[1].scale:n.scale,null,null),Ct())})),!1!==n&&ln("setSeries",e,t),o&&dn("setSeries",r,e,t)}r.setSelect=Pt,r.setSeries=zt,r.addBand=function(e,t){e.fill=ya(e.fill||null),e.dir=Zo(e.dir,-1),t=null==t?C.length:t,C.splice(t,0,e)},r.setBand=function(e,t){ja(C[e],t)},r.delBand=function(e){null==e?C.length=0:C.splice(e,1)};var jt={focus:!0};function $t(e,t,n){var r=k[t];n&&(e=e/Qi-(1==r.ori?he:de));var i=se;1==r.ori&&(e=(i=fe)-e),-1==r.dir&&(e=i-e);var o=r._min,a=o+(r._max-o)*(e/i),u=r.distr;return 3==u?ca(10,a):4==u?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return ta.sinh(e)*t}(a,r.asinh):a}function Yt(e,t){So(Lt,co,It.left=e),So(Lt,oo,It.width=t)}function Ht(e,t){So(Lt,uo,It.top=e),So(Lt,ao,It.height=t)}q&&Ne&&zo(yo,R,(function(e){Ee._lock||null!=Bt&&zt(null,jt,!0,cn.setSeries)})),r.valToIdx=function(e){return $o(e,t[0])},r.posToIdx=function(e,n){return $o($t(e,E,n),t[0],We,Qe)},r.posToVal=$t,r.valToPos=function(e,t,n){return 0==k[t].ori?a(e,k[t],n?me:se,n?pe:0):u(e,k[t],n?ge:fe,n?ve:0)},r.batch=function(e){e(r),Ct()},r.setCursor=function(e,t,n){wt=e.left,xt=e.top,Qt(null,t,n)};var Vt=0==T.ori?Yt:Ht,Ut=1==T.ori?Yt:Ht;function qt(e,t){if(null!=e){var n=e.idx;U.idx=n,w.forEach((function(e,t){(t>0||!Z)&&Wt(t,n)}))}q&&U.live&&function(){if(q&&U.live)for(var e=2==i?1:0;e<w.length;e++)if(0!=e||!Z){var t=U.values[e],n=0;for(var r in t)J[e][n++].firstChild.nodeValue=t[r]}}(),xe=!1,!1!==t&&ln("setLegend")}function Wt(e,n){var i;if(null==n)i=K;else{var o=w[e],a=0==e&&2==B?Je:t[e];i=Z?o.values(r,e,n):{_:o.value(r,a[n],e,n)}}U.values[e]=i}function Qt(e,n,o){bt=wt,Dt=xt;var a,u=m(Ee.move(r,wt,xt),2);wt=u[0],xt=u[1],Ee.show&&(pt&&Oo(pt,oa(wt),0,se,fe),vt&&Oo(vt,0,oa(xt),se,fe));var l=We>Qe;Ot=pa;var c=0==T.ori?se:fe,s=1==T.ori?se:fe;if(wt<0||0==Be||l){a=null;for(var f=0;f<w.length;f++)f>0&&Me.length>1&&Oo(Me[f],-10,-10,se,fe);if(Ne&&zt(null,jt,!0,null==e&&cn.setSeries),U.live){V.fill(null),xe=!0;for(var d=0;d<w.length;d++)U.values[d]=K}}else{var h,p;1==i&&(a=$o(h=$t(0==T.ori?wt:xt,E),t[0],We,Qe),p=ka(F(t[0][a],T,c,0),.5));for(var v=2==i?1:0;v<w.length;v++){var g=w[v],y=V[v],_=1==i?t[v][y]:t[v][1][y],b=Ee.dataIdx(r,v,a,h),D=1==i?t[v][b]:t[v][1][b];xe=xe||D!=_||b!=y,V[v]=b;var x=b==a?p:ka(F(1==i?t[0][b]:t[v][0][b],T,c,0),.5);if(v>0&&g.show){var C=null==D?-10:ka(O(D,1==i?k[g.scale]:k[g.facets[1].scale],s,0),.5);if(C>0&&1==i){var A=ra(C-xt);A<=Ot&&(Ot=A,Tt=v)}var S=void 0,N=void 0;if(0==T.ori?(S=x,N=C):(S=C,N=x),xe&&Me.length>1){Bo(Me[v],Ee.points.fill(r,v),Ee.points.stroke(r,v));var M=void 0,B=void 0,I=void 0,L=void 0,P=!0,R=Ee.points.bbox;if(null!=R){P=!1;var z=R(r,v);I=z.left,L=z.top,M=z.width,B=z.height}else I=S,L=N,M=B=Ee.points.size(r,v);Lo(Me[v],M,B,P),Oo(Me[v],I,L,se,fe)}}if(U.live){if(!xe||0==v&&Z)continue;Wt(v,b)}}}if(Ee.idx=a,Ee.left=wt,Ee.top=xt,xe&&(U.idx=a,qt()),It.show&&St)if(null!=e){var j=m(cn.scales,2),$=j[0],Y=j[1],H=m(cn.match,2),q=H[0],W=H[1],Q=m(e.cursor.sync.scales,2),G=Q[0],J=Q[1],X=e.cursor.drag;if(Mt=X._x,Ft=X._y,Mt||Ft){var ee,te,ne,re,ie,oe=e.select,ae=oe.left,ue=oe.top,le=oe.width,ce=oe.height,de=e.scales[$].ori,he=e.posToVal,pe=null!=$&&q($,G),ve=null!=Y&&W(Y,J);pe&&Mt?(0==de?(ee=ae,te=le):(ee=ue,te=ce),ne=k[$],re=F(he(ee,G),ne,c,0),ie=F(he(ee+te,G),ne,c,0),Vt(ua(re,ie),ra(ie-re))):Vt(0,c),ve&&Ft?(1==de?(ee=ae,te=le):(ee=ue,te=ce),ne=k[Y],re=O(he(ee,J),ne,s,0),ie=O(he(ee+te,J),ne,s,0),Ut(ua(re,ie),ra(ie-re))):Ut(0,s)}else en()}else{var me=ra(bt-mt),ge=ra(Dt-gt);if(1==T.ori){var ye=me;me=ge,ge=ye}Mt=Nt.x&&me>=Nt.dist,Ft=Nt.y&&ge>=Nt.dist;var _e,be,De=Nt.uni;null!=De?Mt&&Ft&&(Ft=ge>=De,(Mt=me>=De)||Ft||(ge>me?Ft=!0:Mt=!0)):Nt.x&&Nt.y&&(Mt||Ft)&&(Mt=Ft=!0),Mt&&(0==T.ori?(_e=yt,be=wt):(_e=_t,be=xt),Vt(ua(_e,be),ra(be-_e)),Ft||Ut(0,s)),Ft&&(1==T.ori?(_e=yt,be=wt):(_e=_t,be=xt),Ut(ua(_e,be),ra(be-_e)),Mt||Vt(0,c)),Mt||Ft||(Vt(0,0),Ut(0,0))}if(Nt._x=Mt,Nt._y=Ft,null==e){if(o){if(null!=sn){var we=m(cn.scales,2),ke=we[0],Ce=we[1];cn.values[0]=null!=ke?$t(0==T.ori?wt:xt,ke):null,cn.values[1]=null!=Ce?$t(1==T.ori?wt:xt,Ce):null}dn(po,r,wt,xt,se,fe,a)}if(Ne){var Ae=o&&cn.setSeries,Fe=Se.prox;null==Bt?Ot<=Fe&&zt(Tt,jt,!0,Ae):Ot>Fe?zt(null,jt,!0,Ae):Tt!=Bt&&zt(Tt,jt,!0,Ae)}}!1!==n&&ln("setCursor")}r.setLegend=qt;var Gt=null;function Jt(e){!0===e?Gt=null:ln("syncRect",Gt=v.getBoundingClientRect())}function Zt(e,t,n,r,i,o,a){Ee._lock||St&&null!=e&&0==e.movementX&&0==e.movementY||(Kt(e,t,n,r,i,o,a,!1,null!=e),null!=e?Qt(null,!0,!0):Qt(t,!0,!1))}function Kt(e,t,n,i,o,a,u,c,s){if(null==Gt&&Jt(!1),null!=e)n=e.clientX-Gt.left,i=e.clientY-Gt.top;else{if(n<0||i<0)return wt=-10,void(xt=-10);var f=m(cn.scales,2),d=f[0],h=f[1],p=t.cursor.sync,v=m(p.values,2),g=v[0],y=v[1],_=m(p.scales,2),b=_[0],D=_[1],w=m(cn.match,2),x=w[0],C=w[1],E=t.axes[0].side%2==1,A=0==T.ori?se:fe,S=1==T.ori?se:fe,N=E?a:o,M=E?o:a,F=E?i:n,O=E?n:i;if(n=null!=b?x(d,b)?l(g,k[d],A,0):-10:A*(F/N),i=null!=D?C(h,D)?l(y,k[h],S,0):-10:S*(O/M),1==T.ori){var B=n;n=i,i=B}}if(s&&((n<=1||n>=se-1)&&(n=ma(n,se)),(i<=1||i>=fe-1)&&(i=ma(i,fe))),c){mt=n,gt=i;var I=m(Ee.move(r,n,i),2);yt=I[0],_t=I[1]}else wt=n,xt=i}var Xt={width:0,height:0,left:0,top:0};function en(){Pt(Xt,!1)}function tn(e,t,n,i,o,a,u){St=!0,Mt=Ft=Nt._x=Nt._y=!1,Kt(e,t,n,i,o,a,0,!0,!1),null!=e&&(ae(mo,xo,nn),dn(vo,r,yt,_t,se,fe,null))}function nn(e,t,n,i,o,a,u){St=Nt._x=Nt._y=!1,Kt(e,t,n,i,o,a,0,!1,!0);var l=It.left,c=It.top,s=It.width,f=It.height,d=s>0||f>0;if(d&&Pt(It),Nt.setScale&&d){var h=l,p=s,v=c,m=f;if(1==T.ori&&(h=c,p=f,v=l,m=s),Mt&&Rt(E,$t(h,E),$t(h+p,E)),Ft)for(var g in k){var y=k[g];g!=E&&null==y.from&&y.min!=pa&&Rt(g,$t(v+m,g),$t(v,g))}en()}else Ee.lock&&(Ee._lock=!Ee._lock,Ee._lock||Qt(null,!0,!1));null!=e&&(ue(mo,xo),dn(mo,r,wt,xt,se,fe,null))}function rn(e,t,n,i,o,a,u){Xe(),en(),null!=e&&dn(_o,r,wt,xt,se,fe,null)}function on(){x.forEach(Ql),ke(r.width,r.height,!0)}zo(Do,ko,on);var an={};an.mousedown=tn,an.mousemove=Zt,an.mouseup=nn,an.dblclick=rn,an.setSeries=function(e,t,n,r){zt(n,r,!0,!1)},Ee.show&&(ae(vo,v,tn),ae(po,v,Zt),ae(go,v,Jt),ae(yo,v,(function(e,t,n,r,i,o,a){if(!Ee._lock){var u=St;if(St){var l,c,s=!0,f=!0;0==T.ori?(l=Mt,c=Ft):(l=Ft,c=Mt),l&&c&&(s=wt<=10||wt>=se-10,f=xt<=10||xt>=fe-10),l&&s&&(wt=wt<yt?0:se),c&&f&&(xt=xt<_t?0:fe),Qt(null,!0,!0),St=!1}wt=-10,xt=-10,Qt(null,!0,!0),u&&(St=u)}})),ae(_o,v,rn),Tl.add(r),r.syncRect=Jt);var un=r.hooks=e.hooks||{};function ln(e,t,n){e in un&&un[e].forEach((function(e){e.call(null,r,t,n)}))}(e.plugins||[]).forEach((function(e){for(var t in e.hooks)un[t]=(un[t]||[]).concat(e.hooks[t])}));var cn=ja({key:null,setSeries:!1,filters:{pub:wa,sub:wa},scales:[E,w[1]?w[1].scale:null],match:[xa,xa],values:[null,null]},Ee.sync);Ee.sync=cn;var sn=cn.key,fn=ll(sn);function dn(e,t,n,r,i,o,a){cn.filters.pub(e,t,n,r,i,o,a)&&fn.pub(e,t,n,r,i,o,a)}function hn(){ln("init",e,t),Ke(t||e.data,!1),I[E]?At(E,I[E]):Xe(),we=It.show,De=xe=!0,ke(e.width,e.height)}return fn.sub(r),r.pub=function(e,t,n,r,i,o,a){cn.filters.sub(e,t,n,r,i,o,a)&&an[e](null,t,n,r,i,o,a)},r.destroy=function(){var e;fn.unsub(r),Tl.delete(r),oe.clear(),jo(Do,ko,on),s.remove(),null===(e=R)||void 0===e||e.remove(),ln("destroy")},w.forEach(Fe),x.forEach((function(e,t){if(e._show=e.show,e.show){var n=e.side%2,i=k[e.scale];null==i&&(e.scale=n?w[1].scale:E,i=k[e.scale]);var o=i.time;e.size=ya(e.size),e.space=ya(e.space),e.rotate=ya(e.rotate),e.incrs=ya(e.incrs||(2==i.distr?ru:o?1==D?gu:Du:iu)),e.splits=ya(e.splits||(o&&1==i.distr?$:3==i.distr?Vu:4==i.distr?Uu:Hu)),e.stroke=ya(e.stroke),e.grid.stroke=ya(e.grid.stroke),e.ticks.stroke=ya(e.ticks.stroke),e.border.stroke=ya(e.border.stroke);var a=e.values;e.values=Ta(a)&&!Ta(a[0])?ya(a):o?Ta(a)?Cu(z,ku(a,j)):Ia(a)?function(e,t){var n=Za(t);return function(t,r,i,o,a){return r.map((function(t){return n(e(t))}))}}(z,a):a||Y:a||Yu,e.filter=ya(e.filter||(i.distr>=3&&10==i.log?Ju:ba)),e.font=Wl(e.font),e.labelFont=Wl(e.labelFont),e._size=e.size(r,null,t,0),e._space=e._rotate=e._incrs=e._found=e._splits=e._values=null,e._size>0&&(Oe[t]=!0,e._el=Mo("u-axis",h))}})),n?n instanceof HTMLElement?(n.appendChild(s),hn()):n(r,hn):hn(),r}Gl.assign=ja,Gl.fmtNum=ea,Gl.rangeNum=Jo,Gl.rangeLog=Uo,Gl.rangeAsinh=qo,Gl.orient=cl,Gl.pxRatio=Qi,Gl.join=function(e,t){for(var n=new Set,r=0;r<e.length;r++)for(var i=e[r][0],o=i.length,a=0;a<o;a++)n.add(i[a]);for(var u=[Array.from(n).sort((function(e,t){return e-t}))],l=u[0].length,c=new Map,s=0;s<l;s++)c.set(u[0][s],s);for(var f=0;f<e.length;f++)for(var d=e[f],h=d[0],p=1;p<d.length;p++){for(var v=d[p],m=Array(l).fill(void 0),g=t?t[f][p]:1,y=[],_=0;_<v.length;_++){var b=v[_],D=c.get(h[_]);null===b?0!=g&&(m[D]=b,2==g&&y.push(D)):m[D]=b}$a(m,y,l),u.push(m)}return u},Gl.fmtDate=Za,Gl.tzDate=function(e,t){var n;return"UTC"==t||"Etc/UTC"==t?n=new Date(+e+6e4*e.getTimezoneOffset()):t==Ka?n=e:(n=new Date(e.toLocaleString("en-US",{timeZone:t}))).setMilliseconds(e.getMilliseconds()),n},Gl.sync=ll,Gl.addGap=function(e,t,n){var r=e[e.length-1];r&&r[0]==t?r[1]=n:e.push([t,n])},Gl.clipGaps=hl;var Jl=Gl.paths={points:Al};Jl.linear=Fl,Jl.stepped=function(e){var t=Zo(e.align,1),n=Zo(e.ascDesc,!1),r=Zo(e.alignGaps,0),i=Zo(e.extend,!1);return function(e,o,a,u){return cl(e,o,(function(l,c,s,f,d,h,p,v,g,y,b){var D=l.pxRound,w=e.bbox,x=w.left,k=w.width,C=function(e){return D(h(e,f,y,v))},E=function(e){return D(p(e,d,b,g))},A=0==f.ori?_l:bl,S={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},N=S.stroke,M=f.dir*(0==f.ori?1:-1);a=Yo(s,a,u,1),u=Yo(s,a,u,-1);var F=E(s[1==M?a:u]),O=C(c[1==M?a:u]),T=O,B=O;i&&-1==t&&A(N,B=x,F),A(N,O,F);for(var I=1==M?a:u;I>=a&&I<=u;I+=M){var L=s[I];if(null!=L){var P=C(c[I]),R=E(L);1==t?A(N,P,F):A(N,T,R),A(N,P,R),F=R,T=P}}var z=T;i&&1==t&&A(N,z=x+k,F);var j=m(sl(e,o),2),$=j[0],Y=j[1];if(null!=l.fill||0!=$){var H=S.fill=new Path2D(N),V=E(l.fillTo(e,o,l.min,l.max,$));A(H,z,V),A(H,B,V)}if(!l.spanGaps){var U,q=[];(U=q).push.apply(U,_(pl(c,s,a,u,M,C,r)));var W=l.width*Qi/2,Q=n||1==t?W:-W,G=n||-1==t?-W:W;q.forEach((function(e){e[0]+=Q,e[1]+=G})),S.gaps=q=l.gaps(e,o,a,u,q),S.clip=hl(q,f.ori,v,g,y,b)}return 0!=Y&&(S.band=2==Y?[dl(e,o,a,u,N,-1),dl(e,o,a,u,N,1)]:dl(e,o,a,u,N,Y)),S}))}},Jl.bars=function(e){var t=Zo((e=e||Ma).size,[.6,pa,1]),n=e.align||0,r=(e.gap||0)*Qi,i=Zo(e.radius,0),o=1-t[0],a=Zo(t[1],pa)*Qi,u=Zo(t[2],1)*Qi,l=Zo(e.disp,Ma),c=Zo(e.each,(function(e){})),s=l.fill,f=l.stroke;return function(e,t,d,h){return cl(e,t,(function(p,v,g,y,_,b,D,w,x,k,C){var E,A,S=p.pxRound,N=y.dir*(0==y.ori?1:-1),M=_.dir*(1==_.ori?1:-1),F=0==y.ori?Dl:wl,O=0==y.ori?c:function(e,t,n,r,i,o,a){c(e,t,n,i,r,a,o)},T=m(sl(e,t),2),B=T[0],I=T[1],L=3==_.distr?1==B?_.max:_.min:0,P=D(L,_,C,x),R=S(p.width*Qi),z=!1,j=null,$=null,Y=null,H=null;null==s||0!=R&&null==f||(z=!0,j=s.values(e,t,d,h),$=new Map,new Set(j).forEach((function(e){null!=e&&$.set(e,new Path2D)})),R>0&&(Y=f.values(e,t,d,h),H=new Map,new Set(Y).forEach((function(e){null!=e&&H.set(e,new Path2D)}))));var V=l.x0,U=l.size;if(null!=V&&null!=U){v=V.values(e,t,d,h),2==V.unit&&(v=v.map((function(t){return e.posToVal(w+t*k,y.key,!0)})));var q=U.values(e,t,d,h);A=S((A=2==U.unit?q[0]*k:b(q[0],y,k,w)-b(0,y,k,w))-R),E=1==N?-R/2:A+R/2}else{var W=k;if(v.length>1)for(var Q=null,G=0,J=1/0;G<v.length;G++)if(void 0!==g[G]){if(null!=Q){var Z=ra(v[G]-v[Q]);Z<J&&(J=Z,W=ra(b(v[G],y,k,w)-b(v[Q],y,k,w)))}Q=G}A=S(ua(a,la(u,W-W*o))-R-r),E=(0==n?A/2:n==N?0:A)-n*N*r/2}var K,X={stroke:null,fill:null,clip:null,band:null,gaps:null,flags:3};0!=I&&(X.band=new Path2D,K=S(D(1==I?_.max:_.min,_,C,x)));var ee=z?null:new Path2D,te=X.band,ne=l.y0,re=l.y1,ie=null;null!=ne&&null!=re&&(g=re.values(e,t,d,h),ie=ne.values(e,t,d,h));for(var oe=1==N?d:h;oe>=d&&oe<=h;oe+=N){var ae=g[oe];if(void 0!==ae){var ue=b(2!=y.distr||null!=l?v[oe]:oe,y,k,w),le=D(Zo(ae,L),_,C,x);null!=ie&&null!=ae&&(P=D(ie[oe],_,C,x));var ce=S(ue-E),se=S(la(le,P)),fe=S(ua(le,P)),de=se-fe,he=i*A;null!=ae&&(z?(R>0&&null!=Y[oe]&&F(H.get(Y[oe]),ce,fe+ia(R/2),A,la(0,de-R),he),null!=j[oe]&&F($.get(j[oe]),ce,fe+ia(R/2),A,la(0,de-R),he)):F(ee,ce,fe+ia(R/2),A,la(0,de-R),he),O(e,t,oe,ce-R/2,fe,A+R,de)),0!=I&&(M*I==1?(se=fe,fe=K):(fe=se,se=K),F(te,ce-R/2,fe,A+R,la(0,de=se-fe),0))}}return R>0&&(X.stroke=z?H:ee),X.fill=z?$:ee,X}))}},Jl.spline=function(e){return function(e,t){var n=Zo(null===t||void 0===t?void 0:t.alignGaps,0);return function(t,r,i,o){return cl(t,r,(function(a,u,l,c,s,f,d,h,p,v,g){var y,b,D,w=a.pxRound,x=function(e){return w(f(e,c,v,h))},k=function(e){return w(d(e,s,g,p))};0==c.ori?(y=gl,D=_l,b=Cl):(y=yl,D=bl,b=El);var C=c.dir*(0==c.ori?1:-1);i=Yo(l,i,o,1),o=Yo(l,i,o,-1);for(var E=x(u[1==C?i:o]),A=E,S=[],N=[],M=1==C?i:o;M>=i&&M<=o;M+=C)if(null!=l[M]){var F=x(u[M]);S.push(A=F),N.push(k(l[M]))}var O={stroke:e(S,N,y,D,b,w),fill:null,clip:null,band:null,gaps:null,flags:1},T=O.stroke,B=m(sl(t,r),2),I=B[0],L=B[1];if(null!=a.fill||0!=I){var P=O.fill=new Path2D(T),R=k(a.fillTo(t,r,a.min,a.max,I));D(P,A,R),D(P,E,R)}if(!a.spanGaps){var z,j=[];(z=j).push.apply(z,_(pl(u,l,i,o,C,x,n))),O.gaps=j=a.gaps(t,r,i,o,j),O.clip=hl(j,c.ori,h,p,v,g)}return 0!=L&&(O.band=2==L?[dl(t,r,i,o,T,-1),dl(t,r,i,o,T,1)]:dl(t,r,i,o,T,L)),O}))}}(Ol,e)};var Zl,Kl={legend:{show:!1},cursor:{drag:{x:!0,y:!1},focus:{prox:30},points:{size:5.6,width:1.4},bind:{click:function(){return null},dblclick:function(){return null}}}},Xl=function(e,t,n){if(void 0===e||null===e)return"";n=n||0,t=t||0;var r=Math.abs(n-t);if(isNaN(r)||0==r)return Math.abs(e)>=1e3?e.toLocaleString("en-US"):e.toString();var i=3+Math.floor(1+Math.log10(Math.max(Math.abs(t),Math.abs(n)))-Math.log10(r));return(isNaN(i)||i>20)&&(i=20),e.toLocaleString("en-US",{minimumSignificantDigits:i,maximumSignificantDigits:i})},ec=function(e,t,n,r){var i,o=e.axes[n];if(r>1)return o._size||60;var a=6+((null===o||void 0===o||null===(i=o.ticks)||void 0===i?void 0:i.size)||0)+(o.gap||0),u=(null!==t&&void 0!==t?t:[]).reduce((function(e,t){return t.length>e.length?t:e}),"");return""!=u&&(a+=function(e,t){var n=document.createElement("span");n.innerText=e,n.style.cssText="position: absolute; z-index: -1; pointer-events: none; opacity: 0; font: ".concat(t),document.body.appendChild(n);var r=n.offsetWidth;return n.remove(),r}(u,"10px Arial")),Math.ceil(a)},tc=function(e){var t=e.e,n=e.factor,r=void 0===n?.85:n,i=e.u,o=e.setPanning,a=e.setPlotScale;t.preventDefault();var u=t instanceof MouseEvent;o(!0);var l=u?t.clientX:t.touches[0].clientX,c=i.posToVal(1,"x")-i.posToVal(0,"x"),s=i.scales.x.min||0,f=i.scales.x.max||0,d=function(e){var t=e instanceof MouseEvent;if(t||!(e.touches.length>1)){e.preventDefault();var n=t?e.clientX:e.touches[0].clientX,o=c*((n-l)*r);a({u:i,min:s-o,max:f-o})}},h=function e(){o(!1),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",e),document.removeEventListener("touchmove",d),document.removeEventListener("touchend",e)};document.addEventListener("mousemove",d),document.addEventListener("mouseup",h),document.addEventListener("touchmove",d),document.addEventListener("touchend",h)},nc=function(e){for(var t=e.length,n=-1/0;t--;){var r=e[t];Number.isFinite(r)&&r>n&&(n=r)}return Number.isFinite(n)?n:null},rc=function(e){for(var t=e.length,n=1/0;t--;){var r=e[t];Number.isFinite(r)&&r<n&&(n=r)}return Number.isFinite(n)?n:null},ic=[[31536e3,"{YYYY}",null,null,null,null,null,null,1],[2419200,"{MMM}","\n{YYYY}",null,null,null,null,null,1],[86400,"{MM}-{DD}","\n{YYYY}",null,null,null,null,null,1],[3600,"{HH}:{mm}","\n{YYYY}-{MM}-{DD}",null,"\n{MM}-{DD}",null,null,null,1],[60,"{HH}:{mm}","\n{YYYY}-{MM}-{DD}",null,"\n{MM}-{DD}",null,null,null,1],[1,"{HH}:{mm}:{ss}","\n{YYYY}-{MM}-{DD}",null,"\n{MM}-{DD} {HH}:{mm}",null,null,null,1],[.001,":{ss}.{fff}","\n{YYYY}-{MM}-{DD} {HH}:{mm}",null,"\n{MM}-{DD} {HH}:{mm}",null,"\n{HH}:{mm}",null,1]],oc=function(e,t){return Array.from(new Set(e.map((function(e){return e.scale})))).map((function(e){var n={scale:e,show:!0,size:ec,stroke:Et("color-text"),font:"10px Arial",values:function(e,n){return function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=t[0],i=t[t.length-1];return n?t.map((function(e){return"".concat(Xl(e,r,i)," ").concat(n)})):t.map((function(e){return Xl(e,r,i)}))}(e,n,t)}};return e?Number(e)%2?n:at(at({},n),{},{side:1}):{space:80,values:ic,stroke:Et("color-text")}}))},ac=function(e,t){if(null==e||null==t)return[-1,1];var n=.02*(Math.abs(t-e)||Math.abs(e)||1);return[e-n,t+n]},uc=n(61),lc=n.n(uc),cc=function(e){var t,n,i,a=e.u,u=e.id,l=e.unit,c=void 0===l?"":l,s=e.metrics,f=e.series,d=e.yRange,h=e.tooltipIdx,p=e.tooltipOffset,v=e.isSticky,g=e.onClose,y=(0,r.useRef)(null),_=m((0,r.useState)({top:-999,left:-999}),2),b=_[0],D=_[1],w=m((0,r.useState)(!1),2),x=w[0],k=w[1],C=m((0,r.useState)(!1),2),E=C[0],A=C[1],S=m((0,r.useState)(h.seriesIdx),2),N=S[0],M=S[1],F=m((0,r.useState)(h.dataIdx),2),O=F[0],T=F[1],B=(0,r.useMemo)((function(){return a.root.querySelector(".u-wrap")}),[a]),I=_t()(a,["data",N,O],0),L=Xl(I,_t()(d,[0]),_t()(d,[1])),P=a.data[0][O],R=o()(1e3*P).tz().format("YYYY-MM-DD HH:mm:ss:SSS (Z)"),z=(null===(t=f[N])||void 0===t?void 0:t.stroke)+"",j=(null===(n=f[N])||void 0===n?void 0:n.calculations)||{},$=new Set(s.map((function(e){return e.group}))).size>1,Y=(null===(i=s[N-1])||void 0===i?void 0:i.group)||0,H=(0,r.useMemo)((function(){var e,t=(null===(e=s[N-1])||void 0===e?void 0:e.metric)||{},n=Object.keys(t).filter((function(e){return"__name__"!=e})).map((function(e){return"".concat(e,"=").concat(JSON.stringify(t[e]))})),r=t.__name__||"";return n.length>0&&(r+="{"+n.join(",")+"}"),r}),[s,N]),V=function(e){if(x){var t=e.clientX,n=e.clientY;D({top:n,left:t})}},U=function(){k(!1)};return(0,r.useEffect)((function(){var e;if(y.current){var t=a.valToPos(I||0,(null===(e=f[N])||void 0===e?void 0:e.scale)||"1"),n=a.valToPos(P,"x"),r=y.current.getBoundingClientRect(),i=r.width,o=r.height,u=a.over.getBoundingClientRect(),l=n+i>=u.width?i+20:0,c=t+o>=u.height?o+20:0,s={top:t+p.top+10-c,left:n+p.left+10-l};s.left<0&&(s.left=20),s.top<0&&(s.top=20),D(s)}}),[a,I,P,N,p,y]),(0,r.useEffect)((function(){M(h.seriesIdx),T(h.dataIdx)}),[h]),(0,r.useEffect)((function(){return x&&(document.addEventListener("mousemove",V),document.addEventListener("mouseup",U)),function(){document.removeEventListener("mousemove",V),document.removeEventListener("mouseup",U)}}),[x]),!B||h.seriesIdx<0||h.dataIdx<0?null:r.default.createPortal(Bt("div",{className:fr()({"vm-chart-tooltip":!0,"vm-chart-tooltip_sticky":v,"vm-chart-tooltip_moved":E}),ref:y,style:b,children:[Bt("div",{className:"vm-chart-tooltip-header",children:[Bt("div",{className:"vm-chart-tooltip-header__date",children:[$&&Bt("div",{children:["Query ",Y]}),R]}),v&&Bt(Ot.HY,{children:[Bt(ei,{className:"vm-chart-tooltip-header__drag",variant:"text",size:"small",startIcon:Bt(tr,{}),onMouseDown:function(e){A(!0),k(!0);var t=e.clientX,n=e.clientY;D({top:n,left:t})}}),Bt(ei,{className:"vm-chart-tooltip-header__close",variant:"text",size:"small",startIcon:Bt(Mn,{}),onClick:function(){g&&g(u)}})]})]}),Bt("div",{className:"vm-chart-tooltip-data",children:[Bt("div",{className:"vm-chart-tooltip-data__marker",style:{background:z}}),Bt("div",{children:[Bt("b",{children:[L,c]}),Bt("br",{}),"median:",Bt("b",{children:j.median}),", min:",Bt("b",{children:j.min}),", max:",Bt("b",{children:j.max})]})]}),Bt("div",{className:"vm-chart-tooltip-info",children:H})]}),B)};!function(e){e.xRange="xRange",e.yRange="yRange",e.data="data"}(Zl||(Zl={}));var sc=function(e){var t=e.data,n=e.series,i=e.metrics,a=void 0===i?[]:i,u=e.period,l=e.yaxis,c=e.unit,s=e.setPeriod,f=e.container,d=e.height,h=Lt().isDarkTheme,p=(0,r.useRef)(null),v=m((0,r.useState)(!1),2),g=v[0],y=v[1],b=m((0,r.useState)({min:u.start,max:u.end}),2),D=b[0],w=b[1],x=m((0,r.useState)([0,1]),2),k=x[0],C=x[1],E=m((0,r.useState)(),2),A=E[0],S=E[1],N=m((0,r.useState)(0),2),M=N[0],F=N[1],O=cr(f),T=m((0,r.useState)(!1),2),B=T[0],I=T[1],L=m((0,r.useState)({seriesIdx:-1,dataIdx:-1}),2),P=L[0],R=L[1],z=m((0,r.useState)({left:0,top:0}),2),j=z[0],$=z[1],Y=m((0,r.useState)([]),2),H=Y[0],V=Y[1],U=(0,r.useMemo)((function(){return"".concat(P.seriesIdx,"_").concat(P.dataIdx)}),[P]),q=(0,r.useCallback)(lc()((function(e){var t=e.min,n=e.max;s({from:o()(1e3*t).toDate(),to:o()(1e3*n).toDate()})}),500),[]),W=function(e){var t=e.u,n=e.min,r=e.max,i=1e3*(r-n);i<Ht||i>Vt||(t.setScale("x",{min:n,max:r}),w({min:n,max:r}),q({min:n,max:r}))},Q=function(e){var t=e.target,n=e.ctrlKey,r=e.metaKey,i=e.key,o=t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement;if(A&&!o){var a="+"===i||"="===i;if(("-"===i||a)&&!n&&!r){e.preventDefault();var u=(D.max-D.min)/10*(a?1:-1);W({u:A,min:D.min+u,max:D.max-u})}}},G=function(){var e="".concat(P.seriesIdx,"_").concat(P.dataIdx),t={id:e,unit:c,series:n,metrics:a,yRange:k,tooltipIdx:P,tooltipOffset:j};if(!H.find((function(t){return t.id===e}))){var r=JSON.parse(JSON.stringify(t));V((function(e){return[].concat(_(e),[r])}))}},J=function(e){V((function(t){return t.filter((function(t){return t.id!==e}))}))},Z=function(){return[D.min,D.max]},K=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3?arguments[3]:void 0;return"1"==r&&C([t,n]),l.limits.enable?l.limits.range[r]:ac(t,n)},X=at(at({},Kl),{},{tzDate:function(e){return o()(en(nn(e))).local().toDate()},series:n,axes:oc([{},{scale:"1"}],c),scales:at({},function(){var e={x:{range:Z}},t=Object.keys(l.limits.range);return(t.length?t:["1"]).forEach((function(t){e[t]={range:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return K(e,n,r,t)}}})),e}()),width:O.width||400,height:d||500,plugins:[{hooks:{ready:function(e){var t=.9;$({left:parseFloat(e.over.style.left),top:parseFloat(e.over.style.top)}),e.over.addEventListener("mousedown",(function(n){var r=n.ctrlKey,i=n.metaKey;0===n.button&&(r||i)&&tc({u:e,e:n,setPanning:y,setPlotScale:W,factor:t})})),e.over.addEventListener("touchstart",(function(n){tc({u:e,e:n,setPanning:y,setPlotScale:W,factor:t})})),e.over.addEventListener("wheel",(function(n){if(n.ctrlKey||n.metaKey){n.preventDefault();var r=e.over.getBoundingClientRect().width,i=e.cursor.left&&e.cursor.left>0?e.cursor.left:0,o=e.posToVal(i,"x"),a=(e.scales.x.max||0)-(e.scales.x.min||0),u=n.deltaY<0?a*t:a/t,l=o-i/r*u,c=l+u;e.batch((function(){return W({u:e,min:l,max:c})}))}}))},setCursor:function(e){var t,n=null!==(t=e.cursor.idx)&&void 0!==t?t:-1;R((function(e){return at(at({},e),{},{dataIdx:n})}))},setSeries:function(e,t){var n=null!==t&&void 0!==t?t:-1;R((function(e){return at(at({},e),{},{seriesIdx:n})}))}}}],hooks:{setSelect:[function(e){var t=e.posToVal(e.select.left,"x"),n=e.posToVal(e.select.left+e.select.width,"x");W({u:e,min:t,max:n})}]}}),ee=function(e){if(A){switch(e){case Zl.xRange:A.scales.x.range=Z;break;case Zl.yRange:Object.keys(l.limits.range).forEach((function(e){A.scales[e]&&(A.scales[e].range=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return K(t,n,r,e)})}));break;case Zl.data:A.setData(t)}g||A.redraw()}};(0,r.useEffect)((function(){return w({min:u.start,max:u.end})}),[u]),(0,r.useEffect)((function(){if(V([]),R({seriesIdx:-1,dataIdx:-1}),p.current){var e=new Gl(X,t,p.current);return S(e),w({min:u.start,max:u.end}),e.destroy}}),[p.current,n,O,d,h]),(0,r.useEffect)((function(){return window.addEventListener("keydown",Q),function(){window.removeEventListener("keydown",Q)}}),[D]);var te=function(e){if(2===e.touches.length){e.preventDefault();var t=e.touches[0].clientX-e.touches[1].clientX,n=e.touches[0].clientY-e.touches[1].clientY;F(Math.sqrt(t*t+n*n))}},ne=function(e){if(2===e.touches.length&&A){e.preventDefault();var t=e.touches[0].clientX-e.touches[1].clientX,n=e.touches[0].clientY-e.touches[1].clientY,r=Math.sqrt(t*t+n*n),i=M-r,o=A.scales.x.max||D.max,a=A.scales.x.min||D.min,u=(o-a)/50*(i>0?-1:1);A.batch((function(){return W({u:A,min:a+u,max:o-u})}))}};return(0,r.useEffect)((function(){return window.addEventListener("touchmove",ne),window.addEventListener("touchstart",te),function(){window.removeEventListener("touchmove",ne),window.removeEventListener("touchstart",te)}}),[A,M]),(0,r.useEffect)((function(){return ee(Zl.data)}),[t]),(0,r.useEffect)((function(){return ee(Zl.xRange)}),[D]),(0,r.useEffect)((function(){return ee(Zl.yRange)}),[l]),(0,r.useEffect)((function(){var e=-1!==P.dataIdx&&-1!==P.seriesIdx;return I(e),e&&window.addEventListener("click",G),function(){window.removeEventListener("click",G)}}),[P,H]),Bt("div",{className:fr()({"vm-line-chart":!0,"vm-line-chart_panning":g}),style:{minWidth:"".concat(O.width||400,"px"),minHeight:"".concat(d||500,"px")},children:[Bt("div",{className:"vm-line-chart__u-plot",ref:p}),A&&B&&Bt(cc,{unit:c,u:A,series:n,metrics:a,yRange:k,tooltipIdx:P,tooltipOffset:j,id:U}),A&&H.map((function(e){return(0,r.createElement)(cc,at(at({},e),{},{isSticky:!0,u:A,key:e.id,onClose:J}))}))]})},fc=function(e){var t=e.legend,n=e.onChange,i=m((0,r.useState)(""),2),o=i[0],a=i[1],u=(0,r.useMemo)((function(){return function(e){return Object.keys(e.freeFormFields).filter((function(e){return"__name__"!==e})).map((function(t){var n="".concat(t,"=").concat(JSON.stringify(e.freeFormFields[t]));return{id:"".concat(e.label,".").concat(n),freeField:n,key:t}}))}(t)}),[t]),l=t.calculations,c=function(){var e=Wi(Ui().mark((function e(t,n){return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,navigator.clipboard.writeText(t);case 2:a(n),setTimeout((function(){return a("")}),2e3);case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}();return Bt("div",{className:fr()({"vm-legend-item":!0,"vm-legend-row":!0,"vm-legend-item_hide":!t.checked}),onClick:function(e){return function(t){n(e,t.ctrlKey||t.metaKey)}}(t),children:[Bt("div",{className:"vm-legend-item__marker",style:{backgroundColor:t.color}}),Bt("div",{className:"vm-legend-item-info",children:Bt("span",{className:"vm-legend-item-info__label",children:[t.freeFormFields.__name__,"{",u.map((function(e,t){return Bt(oi,{open:o===e.id,title:"copied!",placement:"top-center",children:Bt("span",{className:"vm-legend-item-info__free-fields",onClick:(n=e.freeField,r=e.id,function(e){e.stopPropagation(),c(n,r)}),title:"copy to clipboard",children:[e.freeField,t+1<u.length&&","]},e.key)},e.id);var n,r})),"}"]})}),Bt("div",{className:"vm-legend-item-values",children:["median:",l.median,", min:",l.min,", max:",l.max,", last:",l.last]})]})},dc=function(e){var t=e.labels,n=e.query,i=e.onChange,o=(0,r.useMemo)((function(){return Array.from(new Set(t.map((function(e){return e.group}))))}),[t]),a=o.length>1;return Bt(Ot.HY,{children:Bt("div",{className:"vm-legend",children:o.map((function(e){return Bt("div",{className:"vm-legend-group",children:[Bt("div",{className:"vm-legend-group-title",children:[a&&Bt("span",{className:"vm-legend-group-title__count",children:["Query ",e,": "]}),Bt("span",{className:"vm-legend-group-title__query",children:n[e-1]})]}),Bt("div",{children:t.filter((function(t){return t.group===e})).map((function(e){return Bt(fc,{legend:e,onChange:i},e.label)}))})]},e)}))})})},hc=["__name__"],pc=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=e.metric,i=r.__name__,o=dr(r,hc),a=t||"".concat(n?"[Query ".concat(e.group,"] "):"").concat(i||"");return 0==Object.keys(o).length?a||"value":"".concat(a,"{").concat(Object.entries(o).map((function(e){return"".concat(e[0],"=").concat(JSON.stringify(e[1]))})).join(", "),"}")},vc=function(e){switch(e){case"NaN":return NaN;case"Inf":case"+Inf":return 1/0;case"-Inf":return-1/0;default:return parseFloat(e)}},mc=["#e54040","#32a9dc","#2ee329","#7126a1","#e38f0f","#3d811a","#ffea00","#2d2d2d","#da42a6","#a44e0c"],gc=function(e){var t=16777215,n=1,r=0,i=1;if(e.length>0)for(var o=0;o<e.length;o++)e[o].charCodeAt(0)>r&&(r=e[o].charCodeAt(0)),i=parseInt(String(t/r)),n=(n+e[o].charCodeAt(0)*i*49979693)%t;var a=(n*e.length%t).toString(16);return a=a.padEnd(6,a),"#".concat(a)},yc=function(){var e={};return function(t,n,r){var i=pc(t,r[t.group-1]),o=Object.keys(e).length;o<mc.length&&(e[i]=e[i]||mc[o]);var a=t.values.map((function(e){return vc(e[1])})),u=rc(a),l=nc(a),c=function(e){for(var t=e.length,n=[];t--;){var r=e[t];Number.isFinite(r)&&n.push(r)}return n.sort(),n[n.length>>1]}(a),s=function(e){for(var t=e.length;t--;){var n=e[t];if(Number.isFinite(n))return n}}(a);return{label:i,freeFormFields:t.metric,width:1.4,stroke:e[i]||gc(i),show:!bc(i,n),scale:"1",points:{size:4.2,width:1.4},calculations:{min:Xl(u,u,l),max:Xl(l,u,l),median:Xl(c,u,l),last:Xl(s,u,l)}}}},_c=function(e,t){return{group:t,label:e.label||"",color:e.stroke,checked:e.show||!1,freeFormFields:e.freeFormFields,calculations:e.calculations}},bc=function(e,t){return t.includes("".concat(e))},Dc=function(e){var t=e.data,n=void 0===t?[]:t,i=e.period,o=e.customStep,a=e.query,u=e.yaxis,l=e.unit,c=e.showLegend,s=void 0===c||c,f=e.setYaxisLimits,d=e.setPeriod,h=e.alias,p=void 0===h?[]:h,v=e.fullWidth,y=void 0===v||v,b=e.height,D=Yr().isMobile,w=_n().timezone,x=(0,r.useMemo)((function(){return o||i.step||"1s"}),[i.step,o]),k=(0,r.useCallback)(yc(),[n]),C=m((0,r.useState)([[]]),2),E=C[0],A=C[1],S=m((0,r.useState)([]),2),N=S[0],M=S[1],F=m((0,r.useState)([]),2),O=F[0],T=F[1],B=m((0,r.useState)([]),2),I=B[0],L=B[1],P=function(e){var t=function(e){var t={},n=Object.values(e).flat(),r=rc(n),i=nc(n);return t[1]=ac(r,i),t}(e);f(t)};(0,r.useEffect)((function(){var e=[],t={},r=[],o=[{}];null===n||void 0===n||n.forEach((function(n){var i=k(n,I,p);o.push(i),r.push(_c(i,n.group));var a,u=t[n.group]||[],l=g(n.values);try{for(l.s();!(a=l.n()).done;){var c=a.value;e.push(c[0]),u.push(vc(c[1]))}}catch(s){l.e(s)}finally{l.f()}t[n.group]=u}));var a=function(e,t,n){for(var r=Zt(t)||1,i=Array.from(new Set(e)).sort((function(e,t){return e-t})),o=n.start,a=Gt(n.end+r),u=0,l=[];o<=a;){for(;u<i.length&&i[u]<=o;)o=i[u],u++,l.push(o);o=Gt(o+r),(u>=i.length||i[u]>o)&&l.push(o)}for(;l.length<2;)l.push(o),o=Gt(o+r);return l}(e,x,i),u=n.map((function(e){var t,n=[],r=e.values,i=r.length,o=0,u=g(a);try{for(u.s();!(t=u.n()).done;){for(var l=t.value;o<i&&r[o][0]<l;)o++;var c=null;o<i&&r[o][0]==l&&(c=vc(r[o][1]),Number.isFinite(c)||(c=null)),n.push(c)}}catch(p){u.e(p)}finally{u.f()}var s=n.filter((function(e){return null!==e})),f=Math.abs(function(e){for(var t=e[0],n=1,r=1;r<e.length;r++){var i=e[r];Number.isFinite(i)&&(t=t*(n-1)/n+i/n,n++)}return t}(s)),d=ac(rc(s),nc(s)),h=Math.abs(d[1]-d[0]);return f>1e10*h?n.map((function(){return f})):n}));u.unshift(a),P(t),A(u),M(o),T(r)}),[n,w]),(0,r.useEffect)((function(){var e=[],t=[{}];null===n||void 0===n||n.forEach((function(n){var r=k(n,I,p);t.push(r),e.push(_c(r,n.group))})),M(t),T(e)}),[I]);var R=(0,r.useRef)(null);return Bt("div",{className:fr()({"vm-graph-view":!0,"vm-graph-view_full-width":y,"vm-graph-view_full-width_mobile":y&&D}),ref:R,children:[(null===R||void 0===R?void 0:R.current)&&Bt(sc,{data:E,series:N,metrics:n,period:i,yaxis:u,unit:l,setPeriod:d,container:null===R||void 0===R?void 0:R.current,height:b}),s&&Bt(dc,{labels:O,query:a,onChange:function(e,t){L(function(e){var t=e.hideSeries,n=e.legend,r=e.metaKey,i=e.series,o=n.label,a=bc(o,t),u=i.map((function(e){return e.label||""}));return r?a?t.filter((function(e){return e!==o})):[].concat(_(t),[o]):t.length?a?_(u.filter((function(e){return e!==o}))):[]:_(u.filter((function(e){return e!==o})))}({hideSeries:I,legend:e,metaKey:t,series:N}))}})]})},wc=function(e){var t=e.value,n=e.options,i=e.anchor,o=e.disabled,a=e.maxWords,u=void 0===a?1:a,l=e.minLength,c=void 0===l?2:l,s=e.fullWidth,f=e.selected,d=e.noOptionsText,h=e.label,p=e.disabledFullScreen,v=e.onSelect,g=e.onOpenAutocomplete,y=Yr().isMobile,_=(0,r.useRef)(null),b=m((0,r.useState)(!1),2),D=b[0],w=b[1],x=m((0,r.useState)(-1),2),k=x[0],C=x[1],E=(0,r.useMemo)((function(){if(!D)return[];try{var e=new RegExp(String(t),"i");return n.filter((function(n){return e.test(n)&&n!==t})).sort((function(t,n){var r,i;return((null===(r=t.match(e))||void 0===r?void 0:r.index)||0)-((null===(i=n.match(e))||void 0===i?void 0:i.index)||0)}))}catch(r){return[]}}),[D,n,t]),A=(0,r.useMemo)((function(){return d&&!E.length}),[d,E]),S=function(){w(!1)},N=function(e){var t=e.key,n=e.ctrlKey,r=e.metaKey,i=e.shiftKey,o=n||r||i,a=E.length;if("ArrowUp"===t&&!o&&a&&(e.preventDefault(),C((function(e){return e<=0?0:e-1}))),"ArrowDown"===t&&!o&&a){e.preventDefault();var u=E.length-1;C((function(e){return e>=u?u:e+1}))}if("Enter"===t){var l=E[k];l&&v(l),f||S()}"Escape"===t&&S()};return(0,r.useEffect)((function(){var e=(t.match(/[a-zA-Z_:.][a-zA-Z0-9_:.]*/gm)||[]).length;w(t.length>c&&e<=u)}),[t]),(0,r.useEffect)((function(){return function(){if(_.current){var e=_.current.childNodes[k];null!==e&&void 0!==e&&e.scrollIntoView&&e.scrollIntoView({block:"center"})}}(),window.addEventListener("keydown",N),function(){window.removeEventListener("keydown",N)}}),[k,E]),(0,r.useEffect)((function(){C(-1)}),[E]),(0,r.useEffect)((function(){g&&g(D)}),[D]),Bt(ti,{open:D,buttonRef:i,placement:"bottom-left",onClose:S,fullWidth:s,title:y?h:void 0,disabledFullScreen:p,children:Bt("div",{className:fr()({"vm-autocomplete":!0,"vm-autocomplete_mobile":y&&!p}),ref:_,children:[A&&Bt("div",{className:"vm-autocomplete__no-options",children:d}),E.map((function(e,t){return Bt("div",{className:fr()({"vm-list-item":!0,"vm-list-item_mobile":y,"vm-list-item_active":t===k,"vm-list-item_multiselect":f,"vm-list-item_multiselect_selected":null===f||void 0===f?void 0:f.includes(e)}),id:"$autocomplete$".concat(e),onClick:(n=e,function(){o||(v(n),f||S())}),children:[(null===f||void 0===f?void 0:f.includes(e))&&Bt(Zn,{}),Bt("span",{children:e})]},e);var n}))]})})},xc=function(e){var t=e.value,n=e.onChange,i=e.onEnter,o=e.onArrowUp,a=e.onArrowDown,u=e.autocomplete,l=e.error,c=e.options,s=e.label,f=e.disabled,d=void 0!==f&&f,h=m((0,r.useState)(!1),2),p=h[0],v=h[1],g=(0,r.useRef)(null);return Bt("div",{className:"vm-query-editor",ref:g,children:[Bt(di,{value:t,label:s,type:"textarea",autofocus:!!t,error:l,onKeyDown:function(e){var t=e.key,n=e.ctrlKey,r=e.metaKey,u=e.shiftKey,l=n||r,c="ArrowDown"===t,s="Enter"===t;"ArrowUp"===t&&l&&(e.preventDefault(),o()),c&&l&&(e.preventDefault(),a()),!s||u||p||i()},onChange:n,disabled:d,inputmode:"search"}),u&&Bt(wc,{disabledFullScreen:!0,value:t,options:c,anchor:g,onSelect:function(e){n(e)},onOpenAutocomplete:v})]})},kc=function(e){var t,n=e.value,r=void 0!==n&&n,i=e.disabled,o=void 0!==i&&i,a=e.label,u=e.color,l=void 0===u?"secondary":u,c=e.fullWidth,s=e.onChange;return Bt("div",{className:fr()((it(t={"vm-switch":!0,"vm-switch_full-width":c,"vm-switch_disabled":o,"vm-switch_active":r},"vm-switch_".concat(l,"_active"),r),it(t,"vm-switch_".concat(l),l),t)),onClick:function(){o||s(!r)},children:[Bt("div",{className:"vm-switch-track",children:Bt("div",{className:"vm-switch-track__thumb"})}),a&&Bt("span",{className:"vm-switch__label",children:a})]})},Cc=function(e){var t=e.isMobile,n=Cn().autocomplete,r=En(),i=Cr(),o=i.nocache,a=i.isTracingEnabled,u=Er();return Bt("div",{className:fr()({"vm-additional-settings":!0,"vm-additional-settings_mobile":t}),children:[Bt(kc,{label:"Autocomplete",value:n,onChange:function(){r({type:"TOGGLE_AUTOCOMPLETE"})},fullWidth:t}),Bt(kc,{label:"Disable cache",value:o,onChange:function(){u({type:"TOGGLE_NO_CACHE"})},fullWidth:t}),Bt(kc,{label:"Trace query",value:a,onChange:function(){u({type:"TOGGLE_QUERY_TRACING"})},fullWidth:t})]})},Ec=function(){var e=Yr().isMobile,t=m((0,r.useState)(!1),2),n=t[0],i=t[1],o=(0,r.useRef)(null);return e?Bt(Ot.HY,{children:[Bt("div",{ref:o,children:Bt(ei,{variant:"outlined",startIcon:Bt(lr,{}),onClick:function(){i((function(e){return!e}))}})}),Bt(ti,{open:n,buttonRef:o,placement:"bottom-left",onClose:function(){i(!1)},title:"Query settings",children:Bt(Cc,{isMobile:e})})]}):Bt(Cc,{})},Ac=function(e,t){return e.length===t.length&&e.every((function(e,n){return e===t[n]}))},Sc=function(e){var t=e.error,n=e.queryOptions,i=e.onHideQuery,o=e.onRunQuery,a=Yr().isMobile,u=Cn(),l=u.query,c=u.queryHistory,s=u.autocomplete,f=En(),d=bn(),h=m((0,r.useState)(l||[]),2),p=h[0],v=h[1],g=m((0,r.useState)([]),2),y=g[0],b=g[1],D=vi(p),w=function(){f({type:"SET_QUERY_HISTORY",payload:p.map((function(e,t){var n=c[t]||{values:[]},r=e===n.values[n.values.length-1];return{index:n.values.length-Number(r),values:!r&&e?[].concat(_(n.values),[e]):n.values}}))}),f({type:"SET_QUERY",payload:p}),d({type:"RUN_QUERY"}),o()},x=function(e,t){v((function(n){return n.map((function(n,r){return r===t?e:n}))}))},k=function(e,t){return function(){!function(e,t){var n=c[t],r=n.index,i=n.values,o=r+e;o<0||o>=i.length||(x(i[o]||"",t),f({type:"SET_QUERY_HISTORY_BY_INDEX",payload:{value:{values:i,index:o},queryNumber:t}}))}(e,t)}},C=function(e){return function(t){x(t,e)}},E=function(e){return function(){var t;t=e,v((function(e){return e.filter((function(e,n){return n!==t}))})),b((function(t){return t.includes(e)?t.filter((function(t){return t!==e})):t.map((function(t){return t>e?t-1:t}))}))}},A=function(e){return function(t){!function(e,t){var n=e.ctrlKey,r=e.metaKey;if(n||r){var i=p.map((function(e,t){return t})).filter((function(e){return e!==t}));b((function(e){return Ac(i,e)?[]:i}))}else b((function(e){return e.includes(t)?e.filter((function(e){return e!==t})):[].concat(_(e),[t])}))}(t,e)}};return(0,r.useEffect)((function(){D&&p.length<D.length&&w()}),[p]),(0,r.useEffect)((function(){i(y)}),[y]),Bt("div",{className:fr()({"vm-query-configurator":!0,"vm-block":!0,"vm-block_mobile":a}),children:[Bt("div",{className:"vm-query-configurator-list",children:p.map((function(e,r){return Bt("div",{className:fr()({"vm-query-configurator-list-row":!0,"vm-query-configurator-list-row_disabled":y.includes(r),"vm-query-configurator-list-row_mobile":a}),children:[Bt(xc,{value:p[r],autocomplete:s,options:n,error:t,onArrowUp:k(-1,r),onArrowDown:k(1,r),onEnter:w,onChange:C(r),label:"Query ".concat(r+1),disabled:y.includes(r)}),Bt(oi,{title:y.includes(r)?"Enable query":"Disable query",children:Bt("div",{className:"vm-query-configurator-list-row__button",children:Bt(ei,{variant:"text",color:"gray",startIcon:y.includes(r)?Bt(Xn,{}):Bt(Kn,{}),onClick:A(r)})})}),p.length>1&&Bt(oi,{title:"Remove Query",children:Bt("div",{className:"vm-query-configurator-list-row__button",children:Bt(ei,{variant:"text",color:"error",startIcon:Bt(Qn,{}),onClick:E(r)})})})]},r)}))}),Bt("div",{className:"vm-query-configurator-settings",children:[Bt(Ec,{}),Bt("div",{className:"vm-query-configurator-settings__buttons",children:[p.length<4&&Bt(ei,{variant:"outlined",onClick:function(){v((function(e){return[].concat(_(e),[""])}))},startIcon:Bt(Gn,{}),children:"Add Query"}),Bt(ei,{variant:"contained",onClick:w,startIcon:Bt(Hn,{}),children:a?"Execute":"Execute Query"})]})]})]})};function Nc(e){var t,n,r,i=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);i--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new Mc(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function Mc(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return Mc=function(e){this.s=e,this.n=e.next},Mc.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new Mc(e)}var Fc=n(936),Oc=n.n(Fc),Tc=0,Bc=function(){function e(t,n){b(this,e),this.tracing=void 0,this.query=void 0,this.tracingChildren=void 0,this.originalTracing=void 0,this.id=void 0,this.tracing=t,this.originalTracing=JSON.parse(JSON.stringify(t)),this.query=n,this.id=Tc++;var r=t.children||[];this.tracingChildren=r.map((function(t){return new e(t,n)}))}return k(e,[{key:"queryValue",get:function(){return this.query}},{key:"idValue",get:function(){return this.id}},{key:"children",get:function(){return this.tracingChildren}},{key:"message",get:function(){return this.tracing.message}},{key:"duration",get:function(){return this.tracing.duration_msec}},{key:"JSON",get:function(){return JSON.stringify(this.tracing,null,2)}},{key:"originalJSON",get:function(){return JSON.stringify(this.originalTracing,null,2)}},{key:"setTracing",value:function(t){var n=this;this.tracing=t;var r=t.children||[];this.tracingChildren=r.map((function(t){return new e(t,n.query)}))}},{key:"setQuery",value:function(e){this.query=e}},{key:"resetTracing",value:function(){this.tracing=this.originalTracing}}]),e}(),Ic=function(e){var t=e.predefinedQuery,n=e.visible,i=e.display,o=e.customStep,a=e.hideQuery,u=e.showAllSeries,l=Cn().query,c=_n().period,s=Cr(),f=s.displayType,d=s.nocache,h=s.isTracingEnabled,p=s.seriesLimits,v=Lt().serverUrl,g=m((0,r.useState)(!1),2),y=g[0],b=g[1],D=m((0,r.useState)(),2),w=D[0],x=D[1],k=m((0,r.useState)(),2),C=k[0],E=k[1],A=m((0,r.useState)(),2),S=A[0],N=A[1],M=m((0,r.useState)(),2),F=M[0],O=M[1],T=m((0,r.useState)(),2),B=T[0],I=T[1],L=m((0,r.useState)([]),2),P=L[0],R=L[1];(0,r.useEffect)((function(){F&&(x(void 0),E(void 0),N(void 0))}),[F]);var z=function(){var e=Wi(Ui().mark((function e(t){var n,r,i,o,a,u,l,c,s,f,d,h,p,v,m,g,y,D,w,k,C,A,S,M,F;return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.fetchUrl,r=t.fetchQueue,i=t.displayType,o=t.query,a=t.stateSeriesLimits,u=t.showAllSeries,l=t.hideQuery,c=new AbortController,R([].concat(_(r),[c])),e.prev=3,s="chart"===i,f=u?1/0:a[i],d=[],h=[],p=1,v=0,m=!1,g=!1,e.prev=12,D=Nc(n);case 14:return e.next=16,D.next();case 16:if(!(m=!(w=e.sent).done)){e.next=32;break}if(k=w.value,!(null===l||void 0===l?void 0:l.includes(p-1))){e.next=22;break}return p++,e.abrupt("continue",29);case 22:return e.next=24,fetch(k,{signal:c.signal});case 24:return C=e.sent,e.next=27,C.json();case 27:A=e.sent,C.ok?(O(void 0),A.trace&&(S=new Bc(A.trace,o[p-1]),h.push(S)),M=f-d.length,A.data.result.slice(0,M).forEach((function(e){e.group=p,d.push(e)})),v+=A.data.result.length,p++):O("".concat(A.errorType,"\r\n").concat(null===A||void 0===A?void 0:A.error));case 29:m=!1,e.next=14;break;case 32:e.next=38;break;case 34:e.prev=34,e.t0=e.catch(12),g=!0,y=e.t0;case 38:if(e.prev=38,e.prev=39,!m||null==D.return){e.next=43;break}return e.next=43,D.return();case 43:if(e.prev=43,!g){e.next=46;break}throw y;case 46:return e.finish(43);case 47:return e.finish(38);case 48:F="Showing ".concat(f," series out of ").concat(v," series due to performance reasons. Please narrow down the query, so it returns less series"),I(v>f?F:""),s?x(d):E(d),N(h),e.next=57;break;case 54:e.prev=54,e.t1=e.catch(3),e.t1 instanceof Error&&"AbortError"!==e.t1.name&&O("".concat(e.t1.name,": ").concat(e.t1.message));case 57:b(!1);case 58:case"end":return e.stop()}}),e,null,[[3,54],[12,34,38,48],[39,,43,47]])})));return function(t){return e.apply(this,arguments)}}(),j=(0,r.useCallback)(Oc()(z,300),[]),$=(0,r.useMemo)((function(){var e=null!==t&&void 0!==t?t:l,n="chart"===(i||f);if(c)if(v)if(e.every((function(e){return!e.trim()})))O(ut.validQuery);else{if(Bi(v)){var r=at({},c);return r.step=o,e.map((function(e){return n?function(e,t,n,r,i){return"".concat(e,"/api/v1/query_range?query=").concat(encodeURIComponent(t),"&start=").concat(n.start,"&end=").concat(n.end,"&step=").concat(n.step).concat(r?"&nocache=1":"").concat(i?"&trace=1":"")}(v,e,r,d,h):function(e,t,n,r){return"".concat(e,"/api/v1/query?query=").concat(encodeURIComponent(t),"&time=").concat(n.end).concat(r?"&trace=1":"")}(v,e,r,h)}))}O(ut.validServer)}else O(ut.emptyServer)}),[v,c,f,o,a]),Y=m((0,r.useState)([]),2),H=Y[0],V=Y[1];return(0,r.useEffect)((function(){var e=$===H&&!!t;n&&null!==$&&void 0!==$&&$.length&&!e&&(b(!0),j({fetchUrl:$,fetchQueue:P,displayType:i||f,query:null!==t&&void 0!==t?t:l,stateSeriesLimits:p,showAllSeries:u,hideQuery:a}),V($))}),[$,n,p,u]),(0,r.useEffect)((function(){var e=P.slice(0,-1);e.length&&(e.map((function(e){return e.abort()})),R(P.filter((function(e){return!e.signal.aborted}))))}),[P]),{fetchUrl:$,isLoading:y,graphData:w,liveData:C,error:F,warning:B,traces:S}},Lc=function(e){var t=e.data,n=qr().showInfoMessage,i=(0,r.useMemo)((function(){return JSON.stringify(t,null,2)}),[t]);return Bt("div",{className:"vm-json-view",children:[Bt("div",{className:"vm-json-view__copy",children:Bt(ei,{variant:"outlined",onClick:function(){navigator.clipboard.writeText(i),n({text:"Formatted JSON has been copied",type:"success"})},children:"Copy JSON"})}),Bt("pre",{className:"vm-json-view__code",children:Bt("code",{children:i})})]})},Pc=function(e){var t=e.yaxis,n=e.setYaxisLimits,i=e.toggleEnableLimits,o=Yr().isMobile,a=(0,r.useMemo)((function(){return Object.keys(t.limits.range)}),[t.limits.range]),u=(0,r.useCallback)(Oc()((function(e,r,i){var o=t.limits.range;o[r][i]=+e,o[r][0]===o[r][1]||o[r][0]>o[r][1]||n(o)}),500),[t.limits.range]),l=function(e,t){return function(n){u(n,e,t)}};return Bt("div",{className:fr()({"vm-axes-limits":!0,"vm-axes-limits_mobile":o}),children:[Bt(kc,{value:t.limits.enable,onChange:i,label:"Fix the limits for y-axis",fullWidth:o}),Bt("div",{className:"vm-axes-limits-list",children:a.map((function(e){return Bt("div",{className:"vm-axes-limits-list__inputs",children:[Bt(di,{label:"Min ".concat(e),type:"number",disabled:!t.limits.enable,value:t.limits.range[e][0],onChange:l(e,0)}),Bt(di,{label:"Max ".concat(e),type:"number",disabled:!t.limits.enable,value:t.limits.range[e][1],onChange:l(e,1)})]},e)}))})]})},Rc="Axes settings",zc=function(e){var t=e.yaxis,n=e.setYaxisLimits,i=e.toggleEnableLimits,o=(0,r.useRef)(null),a=m((0,r.useState)(!1),2),u=a[0],l=a[1],c=(0,r.useRef)(null);return Bt("div",{className:"vm-graph-settings",children:[Bt(oi,{title:Rc,children:Bt("div",{ref:c,children:Bt(ei,{variant:"text",startIcon:Bt(Nn,{}),onClick:function(){l((function(e){return!e}))}})})}),Bt(ti,{open:u,buttonRef:c,placement:"bottom-right",onClose:function(){l(!1)},title:Rc,children:Bt("div",{className:"vm-graph-settings-popper",ref:o,children:Bt("div",{className:"vm-graph-settings-popper__body",children:Bt(Pc,{yaxis:t,setYaxisLimits:n,toggleEnableLimits:i})})})})]})},jc=function(e){var t=e.containerStyles,n=void 0===t?{}:t,r=e.message,i=Lt().isDarkTheme;return Bt("div",{className:fr()({"vm-spinner":!0,"vm-spinner_dark":i}),style:n&&{},children:[Bt("div",{className:"half-circle-spinner",children:[Bt("div",{className:"circle circle-1"}),Bt("div",{className:"circle circle-2"})]}),r&&Bt("div",{className:"vm-spinner__message",children:r})]})},$c=function(){var e=Lt().serverUrl,t=m((0,r.useState)([]),2),n=t[0],i=t[1],o=function(){var t=Wi(Ui().mark((function t(){var n,r,o;return Ui().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}return t.abrupt("return");case 2:return n="".concat(e,"/api/v1/label/__name__/values"),t.prev=3,t.next=6,fetch(n);case 6:return r=t.sent,t.next=9,r.json();case 9:o=t.sent,r.ok&&i(o.data),t.next=16;break;case 13:t.prev=13,t.t0=t.catch(3),console.error(t.t0);case 16:case"end":return t.stop()}}),t,null,[[3,13]])})));return function(){return t.apply(this,arguments)}}();return(0,r.useEffect)((function(){o()}),[e]),{queryOptions:n}},Yc=function(e){var t=e.value;return Bt("div",{className:"vm-line-progress",children:[Bt("div",{className:"vm-line-progress-track",children:Bt("div",{className:"vm-line-progress-track__thumb",style:{width:"".concat(t,"%")}})}),Bt("span",{children:[t.toFixed(2),"%"]})]})},Hc=function e(t){var n=t.trace,i=t.totalMsec,o=Lt().isDarkTheme,a=Yr().isMobile,u=m((0,r.useState)({}),2),l=u[0],c=u[1],s=(0,r.useRef)(null),f=m((0,r.useState)(!1),2),d=f[0],h=f[1],p=m((0,r.useState)(!1),2),v=p[0],g=p[1];(0,r.useEffect)((function(){if(s.current){var e=s.current,t=s.current.children[0].getBoundingClientRect().height;h(t>e.clientHeight)}}),[n]);var y,_=n.children&&!!n.children.length,b=n.duration/i*100;return Bt("div",{className:fr()({"vm-nested-nav":!0,"vm-nested-nav_dark":o,"vm-nested-nav_mobile":a}),children:[Bt("div",{className:"vm-nested-nav-header",onClick:(y=n.idValue,function(){c((function(e){return at(at({},e),{},it({},y,!e[y]))}))}),children:[_&&Bt("div",{className:fr()({"vm-nested-nav-header__icon":!0,"vm-nested-nav-header__icon_open":l[n.idValue]}),children:Bt(Pn,{})}),Bt("div",{className:"vm-nested-nav-header__progress",children:Bt(Yc,{value:b})}),Bt("div",{className:fr()({"vm-nested-nav-header__message":!0,"vm-nested-nav-header__message_show-full":v}),ref:s,children:Bt("span",{children:n.message})}),Bt("div",{className:"vm-nested-nav-header-bottom",children:[Bt("div",{className:"vm-nested-nav-header-bottom__duration",children:"duration: ".concat(n.duration," ms")}),(d||v)&&Bt(ei,{variant:"text",size:"small",onClick:function(e){e.stopPropagation(),g((function(e){return!e}))},children:v?"Hide":"Show more"})]})]}),l[n.idValue]&&Bt("div",{children:_&&n.children.map((function(t){return Bt(e,{trace:t,totalMsec:i},t.duration)}))})]})},Vc=function(e){var t=e.editable,n=void 0!==t&&t,i=e.defaultTile,o=void 0===i?"JSON":i,a=e.displayTitle,u=void 0===a||a,l=e.defaultJson,c=void 0===l?"":l,s=e.resetValue,f=void 0===s?"":s,d=e.onClose,h=e.onUpload,p=qr().showInfoMessage,v=Yr().isMobile,g=m((0,r.useState)(c),2),y=g[0],_=g[1],b=m((0,r.useState)(o),2),D=b[0],w=b[1],x=m((0,r.useState)(""),2),k=x[0],C=x[1],E=m((0,r.useState)(""),2),A=E[0],S=E[1],N=(0,r.useMemo)((function(){try{var e=JSON.parse(y),t=e.trace||e;return t.duration_msec?(new Bc(t,""),""):ut.traceNotFound}catch(n){return n instanceof Error?n.message:"Unknown error"}}),[y]),M=function(){var e=Wi(Ui().mark((function e(){return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,navigator.clipboard.writeText(y);case 2:p({text:"Formatted JSON has been copied",type:"success"});case 3:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),F=function(){S(N),D.trim()||C(ut.emptyTitle),N||k||(h(y,D),d())};return Bt("div",{className:fr()({"vm-json-form":!0,"vm-json-form_one-field":!u,"vm-json-form_one-field_mobile":!u&&v,"vm-json-form_mobile":v}),children:[u&&Bt(di,{value:D,label:"Title",error:k,onEnter:F,onChange:function(e){w(e)}}),Bt(di,{value:y,label:"JSON",type:"textarea",error:A,autofocus:!0,onChange:function(e){S(""),_(e)},disabled:!n}),Bt("div",{className:"vm-json-form-footer",children:[Bt("div",{className:"vm-json-form-footer__controls",children:[Bt(ei,{variant:"outlined",startIcon:Bt(er,{}),onClick:M,children:"Copy JSON"}),f&&Bt(ei,{variant:"text",startIcon:Bt(Fn,{}),onClick:function(){_(f)},children:"Reset JSON"})]}),Bt("div",{className:"vm-json-form-footer__controls vm-json-form-footer__controls_right",children:[Bt(ei,{variant:"outlined",color:"error",onClick:d,children:"Cancel"}),Bt(ei,{variant:"contained",onClick:F,children:"apply"})]})]})]})},Uc=function(e){var t=e.traces,n=e.jsonEditor,i=void 0!==n&&n,o=e.onDeleteClick,a=Yr().isMobile,u=m((0,r.useState)(null),2),l=u[0],c=u[1],s=function(){c(null)};if(!t.length)return Bt(Vr,{variant:"info",children:"Please re-run the query to see results of the tracing"});var f=function(e){return function(){o(e)}};return Bt(Ot.HY,{children:[Bt("div",{className:"vm-tracings-view",children:t.map((function(e){return Bt("div",{className:"vm-tracings-view-trace vm-block vm-block_empty-padding",children:[Bt("div",{className:"vm-tracings-view-trace-header",children:[Bt("h3",{className:"vm-tracings-view-trace-header-title",children:["Trace for ",Bt("b",{className:"vm-tracings-view-trace-header-title__query",children:e.queryValue})]}),Bt(oi,{title:"Open JSON",children:Bt(ei,{variant:"text",startIcon:Bt(Wn,{}),onClick:(t=e,function(){c(t)})})}),Bt(oi,{title:"Remove trace",children:Bt(ei,{variant:"text",color:"error",startIcon:Bt(Qn,{}),onClick:f(e)})})]}),Bt("nav",{className:fr()({"vm-tracings-view-trace__nav":!0,"vm-tracings-view-trace__nav_mobile":a}),children:Bt(Hc,{trace:e,totalMsec:e.duration})})]},e.idValue);var t}))}),l&&Bt(ii,{title:l.queryValue,onClose:s,children:Bt(Vc,{editable:i,displayTitle:i,defaultTile:l.queryValue,defaultJson:l.JSON,resetValue:l.originalJSON,onClose:s,onUpload:function(e,t){if(i&&l)try{l.setTracing(JSON.parse(e)),l.setQuery(t),c(null)}catch(n){console.error(n)}}})})]})},qc=function(e,t){return(0,r.useMemo)((function(){var n={};e.forEach((function(e){return Object.entries(e.metric).forEach((function(e){return n[e[0]]?n[e[0]].options.add(e[1]):n[e[0]]={options:new Set([e[1]])}}))}));var r=Object.entries(n).map((function(e){return{key:e[0],variations:e[1].options.size}})).sort((function(e,t){return e.variations-t.variations}));return t?r.filter((function(e){return t.includes(e.key)})):r}),[e,t])},Wc=function(e){var t,n=e.checked,r=void 0!==n&&n,i=e.disabled,o=void 0!==i&&i,a=e.label,u=e.color,l=void 0===u?"secondary":u,c=e.onChange;return Bt("div",{className:fr()((it(t={"vm-checkbox":!0,"vm-checkbox_disabled":o,"vm-checkbox_active":r},"vm-checkbox_".concat(l,"_active"),r),it(t,"vm-checkbox_".concat(l),l),t)),onClick:function(){o||c(!r)},children:[Bt("div",{className:"vm-checkbox-track",children:Bt("div",{className:"vm-checkbox-track__thumb",children:Bt(Zn,{})})}),a&&Bt("span",{className:"vm-checkbox__label",children:a})]})},Qc="Table settings",Gc=function(e){var t=e.data,n=e.defaultColumns,i=void 0===n?[]:n,o=e.onChange,a=Yr().isMobile,u=Cr().tableCompact,l=Er(),c=qc(t),s=(0,r.useRef)(null),f=m((0,r.useState)(!1),2),d=f[0],h=f[1],p=(0,r.useMemo)((function(){return!c.length}),[c]),v=function(e){return function(){!function(e){o(i.includes(e)?i.filter((function(t){return t!==e})):[].concat(_(i),[e]))}(e)}};return(0,r.useEffect)((function(){var e=c.map((function(e){return e.key}));Ac(e,i)||o(e)}),[c]),Bt("div",{className:"vm-table-settings",children:[Bt(oi,{title:Qc,children:Bt("div",{ref:s,children:Bt(ei,{variant:"text",startIcon:Bt(Nn,{}),onClick:function(){h((function(e){return!e}))},disabled:p})})}),Bt(ti,{open:d,onClose:function(){h(!1)},placement:"bottom-right",buttonRef:s,title:Qc,children:Bt("div",{className:fr()({"vm-table-settings-popper":!0,"vm-table-settings-popper_mobile":a}),children:[Bt("div",{className:"vm-table-settings-popper-list vm-table-settings-popper-list_first",children:Bt(kc,{label:"Compact view",value:u,onChange:function(){l({type:"TOGGLE_TABLE_COMPACT"})}})}),Bt("div",{className:"vm-table-settings-popper-list",children:[Bt("div",{className:"vm-table-settings-popper-list-header",children:[Bt("h3",{className:"vm-table-settings-popper-list-header__title",children:"Display columns"}),Bt(oi,{title:"Reset to default",children:Bt(ei,{color:"primary",variant:"text",size:"small",onClick:function(){h(!1),o(c.map((function(e){return e.key})))},startIcon:Bt(Fn,{})})})]}),c.map((function(e){return Bt("div",{className:"vm-table-settings-popper-list__item",children:Bt(Wc,{checked:i.includes(e.key),onChange:v(e.key),label:e.key,disabled:u})},e.key)}))]})]})})]})};function Jc(e){return function(e,t){return Object.fromEntries(Object.entries(e).filter(t))}(e,(function(e){return!!e[1]}))}var Zc=["__name__"],Kc=function(e){var t=e.data,n=e.displayColumns,i=qr().showInfoMessage,o=Yr().isMobile,a=Cr().tableCompact,u=cr(document.body),l=(0,r.useRef)(null),c=m((0,r.useState)(0),2),s=c[0],f=c[1],d=m((0,r.useState)(0),2),h=d[0],p=d[1],v=m((0,r.useState)(""),2),g=v[0],y=v[1],_=m((0,r.useState)("asc"),2),b=_[0],D=_[1],w=a?qc([{group:0,metric:{Data:"Data"}}],["Data"]):qc(t,n),x=function(e){var t=e.__name__,n=dr(e,Zc);return t||Object.keys(n).length?"".concat(t," ").concat(JSON.stringify(n)):""},k=new Set(null===t||void 0===t?void 0:t.map((function(e){return e.group}))).size>1,C=(0,r.useMemo)((function(){var e=null===t||void 0===t?void 0:t.map((function(e){return{metadata:w.map((function(t){return a?pc(e,"",k):e.metric[t.key]||"-"})),value:e.value?e.value[1]:"-",values:e.values?e.values.map((function(e){var t=m(e,2),n=t[0],r=t[1];return"".concat(r," @").concat(n)})):[],copyValue:x(e.metric)}})),n="Value"===g,r=w.findIndex((function(e){return e.key===g}));return n||-1!==r?e.sort((function(e,t){var i=n?Number(e.value):e.metadata[r],o=n?Number(t.value):t.metadata[r];return("asc"===b?i<o:i>o)?-1:1})):e}),[w,t,g,b,a]),E=(0,r.useMemo)((function(){return C.some((function(e){return e.copyValue}))}),[C]),A=function(){var e=Wi(Ui().mark((function e(t){return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,navigator.clipboard.writeText(t);case 2:i({text:"Row has been copied",type:"success"});case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),S=function(e){return function(){!function(e){D((function(t){return"asc"===t&&g===e?"desc":"asc"})),y(e)}(e)}},N=function(){if(l.current){var e=l.current.getBoundingClientRect().top;p(e<0?window.scrollY-s:0)}};return(0,r.useEffect)((function(){return window.addEventListener("scroll",N),function(){window.removeEventListener("scroll",N)}}),[l,s,u]),(0,r.useEffect)((function(){if(l.current){var e=l.current.getBoundingClientRect().top;f(e+window.scrollY)}}),[l,u]),C.length?Bt("div",{className:fr()({"vm-table-view":!0,"vm-table-view_mobile":o}),children:Bt("table",{className:"vm-table",ref:l,children:[Bt("thead",{className:"vm-table-header",children:Bt("tr",{className:"vm-table__row vm-table__row_header",style:{transform:"translateY(".concat(h,"px)")},children:[w.map((function(e,t){return Bt("td",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:S(e.key),children:Bt("div",{className:"vm-table-cell__content",children:[e.key,Bt("div",{className:fr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":g===e.key,"vm-table__sort-icon_desc":"desc"===b&&g===e.key}),children:Bt(Rn,{})})]})},t)})),Bt("td",{className:"vm-table-cell vm-table-cell_header vm-table-cell_right vm-table-cell_sort",onClick:S("Value"),children:Bt("div",{className:"vm-table-cell__content",children:[Bt("div",{className:fr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":"Value"===g,"vm-table__sort-icon_desc":"desc"===b}),children:Bt(Rn,{})}),"Value"]})}),E&&Bt("td",{className:"vm-table-cell vm-table-cell_header"})]})}),Bt("tbody",{className:"vm-table-body",children:C.map((function(e,t){return Bt("tr",{className:"vm-table__row",children:[e.metadata.map((function(e,n){return Bt("td",{className:fr()({"vm-table-cell vm-table-cell_no-wrap":!0,"vm-table-cell_gray":C[t-1]&&C[t-1].metadata[n]===e}),children:e},n)})),Bt("td",{className:"vm-table-cell vm-table-cell_right vm-table-cell_no-wrap",children:e.values.length?e.values.map((function(e){return Bt("p",{children:e},e)})):e.value}),E&&Bt("td",{className:"vm-table-cell vm-table-cell_right",children:e.copyValue&&Bt("div",{className:"vm-table-cell__content",children:Bt(oi,{title:"Copy row",children:Bt(ei,{variant:"text",color:"gray",size:"small",startIcon:Bt(er,{}),onClick:(n=e.copyValue,function(){A(n)})})})})})]},t);var n}))})]})}):Bt(Vr,{variant:"warning",children:"No data to show"})},Xc=function(){var e=Cr(),t=e.displayType,n=e.isTracingEnabled,i=Cn().query,o=_n().period,a=bn(),u=Yr().isMobile;!function(){var e=Lt().tenantId,t=Cr().displayType,n=Cn().query,i=_n(),o=i.duration,a=i.relativeTime,u=i.period,l=u.date,c=u.step,s=Mr().customStep,f=m(nt(),2)[1],d=function(){var r={};n.forEach((function(n,i){var u,f="g".concat(i);r["".concat(f,".expr")]=n,r["".concat(f,".range_input")]=o,r["".concat(f,".end_input")]=l,r["".concat(f,".tab")]=(null===(u=gr.find((function(e){return e.value===t})))||void 0===u?void 0:u.prometheusCode)||0,r["".concat(f,".relative_time")]=a,r["".concat(f,".tenantID")]=e,c!==s&&s&&(r["".concat(f,".step_input")]=s)})),f(Jc(r))};(0,r.useEffect)(d,[e,t,n,o,a,l,c,s]),(0,r.useEffect)(d,[])}();var l=m((0,r.useState)(),2),c=l[0],s=l[1],f=m((0,r.useState)([]),2),d=f[0],h=f[1],p=m((0,r.useState)([]),2),v=p[0],g=p[1],y=m((0,r.useState)(!1),2),b=y[0],D=y[1],w=m((0,r.useState)(!i[0]),2),x=w[0],k=w[1],C=Mr(),E=C.customStep,A=C.yaxis,S=Fr(),N=$c().queryOptions,M=Ic({visible:!0,customStep:E,hideQuery:v,showAllSeries:b}),F=M.isLoading,O=M.liveData,T=M.graphData,B=M.error,I=M.warning,L=M.traces,P=function(e){S({type:"SET_YAXIS_LIMITS",payload:e})};return(0,r.useEffect)((function(){L&&h([].concat(_(d),_(L)))}),[L]),(0,r.useEffect)((function(){h([])}),[t]),(0,r.useEffect)((function(){D(!1)}),[i]),Bt("div",{className:fr()({"vm-custom-panel":!0,"vm-custom-panel_mobile":u}),children:[Bt(Sc,{error:x?"":B,queryOptions:N,onHideQuery:function(e){g(e)},onRunQuery:function(){k(!1)}}),n&&Bt("div",{className:"vm-custom-panel__trace",children:Bt(Uc,{traces:d,onDeleteClick:function(e){var t=d.filter((function(t){return t.idValue!==e.idValue}));h(_(t))}})}),F&&Bt(jc,{}),!x&&B&&Bt(Vr,{variant:"error",children:B}),I&&Bt(Vr,{variant:"warning",children:Bt("div",{className:fr()({"vm-custom-panel__warning":!0,"vm-custom-panel__warning_mobile":u}),children:[Bt("p",{children:I}),Bt(ei,{color:"warning",variant:"outlined",onClick:function(){D(!0)},children:"Show all"})]})}),Bt("div",{className:fr()({"vm-custom-panel-body":!0,"vm-custom-panel-body_mobile":u,"vm-block":!0,"vm-block_mobile":u}),children:[Bt("div",{className:"vm-custom-panel-body-header",children:[Bt(yr,{}),"chart"===t&&Bt(zc,{yaxis:A,setYaxisLimits:P,toggleEnableLimits:function(){S({type:"TOGGLE_ENABLE_YAXIS_LIMITS"})}}),"table"===t&&Bt(Gc,{data:O||[],defaultColumns:c,onChange:s})]}),T&&o&&"chart"===t&&Bt(Dc,{data:T,period:o,customStep:E,query:i,yaxis:A,setYaxisLimits:P,setPeriod:function(e){var t=e.from,n=e.to;a({type:"SET_PERIOD",payload:{from:t,to:n}})},height:u?.5*window.innerHeight:500}),O&&"code"===t&&Bt(Lc,{data:O}),O&&"table"===t&&Bt(Kc,{data:O,displayColumns:c})]})]})};function es(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var ts={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};var ns=/[&<>"']/,rs=new RegExp(ns.source,"g"),is=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,os=new RegExp(is.source,"g"),as={"&":"&","<":"<",">":">",'"':""","'":"'"},us=function(e){return as[e]};function ls(e,t){if(t){if(ns.test(e))return e.replace(rs,us)}else if(is.test(e))return e.replace(os,us);return e}var cs=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function ss(e){return e.replace(cs,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var fs=/(^|[^\[])\^/g;function ds(e,t){e="string"===typeof e?e:e.source,t=t||"";var n={replace:function(t,r){return r=(r=r.source||r).replace(fs,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n}var hs=/[^\w:]/g,ps=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function vs(e,t,n){if(e){var r;try{r=decodeURIComponent(ss(n)).replace(hs,"").toLowerCase()}catch(i){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!ps.test(n)&&(n=function(e,t){ms[" "+e]||(gs.test(e)?ms[" "+e]=e+"/":ms[" "+e]=xs(e,"/",!0));e=ms[" "+e];var n=-1===e.indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(ys,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(_s,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(i){return null}return n}var ms={},gs=/^[^:]+:\/*[^/]*$/,ys=/^([^:]+:)[\s\S]*$/,_s=/^([^:]+:\/*[^/]*)[\s\S]*$/;var bs={exec:function(){}};function Ds(e){for(var t,n,r=1;r<arguments.length;r++)for(n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}function ws(e,t){var n=e.replace(/\|/g,(function(e,t,n){for(var r=!1,i=t;--i>=0&&"\\"===n[i];)r=!r;return r?"|":" |"})).split(/ \|/),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(/\\\|/g,"|");return n}function xs(e,t,n){var r=e.length;if(0===r)return"";for(var i=0;i<r;){var o=e.charAt(r-i-1);if(o!==t||n){if(o===t||!n)break;i++}else i++}return e.slice(0,r-i)}function ks(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}function Cs(e,t){if(t<1)return"";for(var n="";t>1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}function Es(e,t,n,r){var i=t.href,o=t.title?ls(t.title):null,a=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){r.state.inLink=!0;var u={type:"link",raw:n,href:i,title:o,text:a,tokens:r.inlineTokens(a)};return r.state.inLink=!1,u}return{type:"image",raw:n,href:i,title:o,text:ls(a)}}var As=function(){function e(t){b(this,e),this.options=t||ts}return k(e,[{key:"space",value:function(e){var t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}},{key:"code",value:function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:xs(n,"\n")}}}},{key:"fences",value:function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:m(t,1)[0].length>=r.length?e.slice(r.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline._escapes,"$1"):t[2],text:r}}}},{key:"heading",value:function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var r=xs(n,"#");this.options.pedantic?n=r.trim():r&&!/ $/.test(r)||(n=r.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}},{key:"hr",value:function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}},{key:"blockquote",value:function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *>[ \t]?/gm,""),r=this.lexer.state.top;this.lexer.state.top=!0;var i=this.lexer.blockTokens(n);return this.lexer.state.top=r,{type:"blockquote",raw:t[0],tokens:i,text:n}}}},{key:"list",value:function(e){var t=this.rules.block.list.exec(e);if(t){var n,r,i,o,a,u,l,c,s,f,d,h,p=t[1].trim(),v=p.length>1,m={type:"list",raw:"",ordered:v,start:v?+p.slice(0,-1):"",loose:!1,items:[]};p=v?"\\d{1,9}\\".concat(p.slice(-1)):"\\".concat(p),this.options.pedantic&&(p=v?p:"[*+-]");for(var g=new RegExp("^( {0,3}".concat(p,")((?:[\t ][^\\n]*)?(?:\\n|$))"));e&&(h=!1,t=g.exec(e))&&!this.rules.block.hr.test(e);){if(n=t[0],e=e.substring(n.length),c=t[2].split("\n",1)[0].replace(/^\t+/,(function(e){return" ".repeat(3*e.length)})),s=e.split("\n",1)[0],this.options.pedantic?(o=2,d=c.trimLeft()):(o=(o=t[2].search(/[^ ]/))>4?1:o,d=c.slice(o),o+=t[1].length),u=!1,!c&&/^ *$/.test(s)&&(n+=s+"\n",e=e.substring(s.length+1),h=!0),!h)for(var y=new RegExp("^ {0,".concat(Math.min(3,o-1),"}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))")),_=new RegExp("^ {0,".concat(Math.min(3,o-1),"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)")),b=new RegExp("^ {0,".concat(Math.min(3,o-1),"}(?:```|~~~)")),D=new RegExp("^ {0,".concat(Math.min(3,o-1),"}#"));e&&(s=f=e.split("\n",1)[0],this.options.pedantic&&(s=s.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!b.test(s))&&!D.test(s)&&!y.test(s)&&!_.test(e);){if(s.search(/[^ ]/)>=o||!s.trim())d+="\n"+s.slice(o);else{if(u)break;if(c.search(/[^ ]/)>=4)break;if(b.test(c))break;if(D.test(c))break;if(_.test(c))break;d+="\n"+s}u||s.trim()||(u=!0),n+=f+"\n",e=e.substring(f.length+1),c=s.slice(o)}m.loose||(l?m.loose=!0:/\n *\n *$/.test(n)&&(l=!0)),this.options.gfm&&(r=/^\[[ xX]\] /.exec(d))&&(i="[ ] "!==r[0],d=d.replace(/^\[[ xX]\] +/,"")),m.items.push({type:"list_item",raw:n,task:!!r,checked:i,loose:!1,text:d}),m.raw+=n}m.items[m.items.length-1].raw=n.trimRight(),m.items[m.items.length-1].text=d.trimRight(),m.raw=m.raw.trimRight();var w=m.items.length;for(a=0;a<w;a++)if(this.lexer.state.top=!1,m.items[a].tokens=this.lexer.blockTokens(m.items[a].text,[]),!m.loose){var x=m.items[a].tokens.filter((function(e){return"space"===e.type})),k=x.length>0&&x.some((function(e){return/\n.*\n/.test(e.raw)}));m.loose=k}if(m.loose)for(a=0;a<w;a++)m.items[a].loose=!0;return m}}},{key:"html",value:function(e){var t=this.rules.block.html.exec(e);if(t){var n={type:"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:t[0]};if(this.options.sanitize){var r=this.options.sanitizer?this.options.sanitizer(t[0]):ls(t[0]);n.type="paragraph",n.text=r,n.tokens=this.lexer.inline(r)}return n}}},{key:"def",value:function(e){var t=this.rules.block.def.exec(e);if(t){var n=t[1].toLowerCase().replace(/\s+/g," "),r=t[2]?t[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline._escapes,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:r,title:i}}}},{key:"table",value:function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:ws(t[1]).map((function(e){return{text:e}})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,i,o,a,u=n.align.length;for(r=0;r<u;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(u=n.rows.length,r=0;r<u;r++)n.rows[r]=ws(n.rows[r],n.header.length).map((function(e){return{text:e}}));for(u=n.header.length,i=0;i<u;i++)n.header[i].tokens=this.lexer.inline(n.header[i].text);for(u=n.rows.length,i=0;i<u;i++)for(a=n.rows[i],o=0;o<a.length;o++)a[o].tokens=this.lexer.inline(a[o].text);return n}}}},{key:"lheading",value:function(e){var t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}},{key:"paragraph",value:function(e){var t=this.rules.block.paragraph.exec(e);if(t){var n="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}},{key:"text",value:function(e){var t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}},{key:"escape",value:function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:ls(t[1])}}},{key:"tag",value:function(e){var t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^<a /i.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):ls(t[0]):t[0]}}},{key:"link",value:function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^</.test(n)){if(!/>$/.test(n))return;var r=xs(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{var i=function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,i=0;i<n;i++)if("\\"===e[i])i++;else if(e[i]===t[0])r++;else if(e[i]===t[1]&&--r<0)return i;return-1}(t[2],"()");if(i>-1){var o=(0===t[0].indexOf("!")?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,o).trim(),t[3]=""}}var a=t[2],u="";if(this.options.pedantic){var l=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);l&&(a=l[1],u=l[3])}else u=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^</.test(a)&&(a=this.options.pedantic&&!/>$/.test(n)?a.slice(1):a.slice(1,-1)),Es(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:u?u.replace(this.rules.inline._escapes,"$1"):u},t[0],this.lexer)}}},{key:"reflink",value:function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])){var i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return Es(n,r,n[0],this.lexer)}}},{key:"emStrong",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=this.rules.inline.emStrong.lDelim.exec(e);if(r&&(!r[3]||!n.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])/))){var i=r[1]||r[2]||"";if(!i||i&&(""===n||this.rules.inline.punctuation.exec(n))){var o,a,u=r[0].length-1,l=u,c=0,s="*"===r[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(s.lastIndex=0,t=t.slice(-1*e.length+u);null!=(r=s.exec(t));)if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6])if(a=o.length,r[3]||r[4])l+=a;else if(!((r[5]||r[6])&&u%3)||(u+a)%3){if(!((l-=a)>0)){a=Math.min(a,a+l+c);var f=e.slice(0,u+r.index+(r[0].length-o.length)+a);if(Math.min(u,a)%2){var d=f.slice(1,-1);return{type:"em",raw:f,text:d,tokens:this.lexer.inlineTokens(d)}}var h=f.slice(2,-2);return{type:"strong",raw:f,text:h,tokens:this.lexer.inlineTokens(h)}}}else c+=a}}}},{key:"codespan",value:function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return r&&i&&(n=n.substring(1,n.length-1)),n=ls(n,!0),{type:"codespan",raw:t[0],text:n}}}},{key:"br",value:function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}},{key:"del",value:function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}},{key:"autolink",value:function(e,t){var n,r,i=this.rules.inline.autolink.exec(e);if(i)return r="@"===i[2]?"mailto:"+(n=ls(this.options.mangle?t(i[1]):i[1])):n=ls(i[1]),{type:"link",raw:i[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},{key:"url",value:function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,i;if("@"===n[2])i="mailto:"+(r=ls(this.options.mangle?t(n[0]):n[0]));else{var o;do{o=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(o!==n[0]);r=ls(n[0]),i="www."===n[1]?"http://"+n[0]:n[0]}return{type:"link",raw:n[0],text:r,href:i,tokens:[{type:"text",raw:r,text:r}]}}}},{key:"inlineText",value:function(e,t){var n,r=this.rules.inline.text.exec(e);if(r)return n=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):ls(r[0]):r[0]:ls(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:n}}}]),e}(),Ss={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:bs,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};Ss.def=ds(Ss.def).replace("label",Ss._label).replace("title",Ss._title).getRegex(),Ss.bullet=/(?:[*+-]|\d{1,9}[.)])/,Ss.listItemStart=ds(/^( *)(bull) */).replace("bull",Ss.bullet).getRegex(),Ss.list=ds(Ss.list).replace(/bull/g,Ss.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Ss.def.source+")").getRegex(),Ss._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ss._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,Ss.html=ds(Ss.html,"i").replace("comment",Ss._comment).replace("tag",Ss._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ss.paragraph=ds(Ss._paragraph).replace("hr",Ss.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ss._tag).getRegex(),Ss.blockquote=ds(Ss.blockquote).replace("paragraph",Ss.paragraph).getRegex(),Ss.normal=Ds({},Ss),Ss.gfm=Ds({},Ss.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),Ss.gfm.table=ds(Ss.gfm.table).replace("hr",Ss.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ss._tag).getRegex(),Ss.gfm.paragraph=ds(Ss._paragraph).replace("hr",Ss.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",Ss.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ss._tag).getRegex(),Ss.pedantic=Ds({},Ss.normal,{html:ds("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Ss._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:bs,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ds(Ss.normal._paragraph).replace("hr",Ss.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Ss.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var Ns={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:bs,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:bs,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};function Ms(e){return e.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201c").replace(/"/g,"\u201d").replace(/\.{3}/g,"\u2026")}function Fs(e){var t,n,r="",i=e.length;for(t=0;t<i;t++)n=e.charCodeAt(t),Math.random()>.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}Ns._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",Ns.punctuation=ds(Ns.punctuation).replace(/punctuation/g,Ns._punctuation).getRegex(),Ns.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,Ns.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,Ns._comment=ds(Ss._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),Ns.emStrong.lDelim=ds(Ns.emStrong.lDelim).replace(/punct/g,Ns._punctuation).getRegex(),Ns.emStrong.rDelimAst=ds(Ns.emStrong.rDelimAst,"g").replace(/punct/g,Ns._punctuation).getRegex(),Ns.emStrong.rDelimUnd=ds(Ns.emStrong.rDelimUnd,"g").replace(/punct/g,Ns._punctuation).getRegex(),Ns._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,Ns._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Ns._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,Ns.autolink=ds(Ns.autolink).replace("scheme",Ns._scheme).replace("email",Ns._email).getRegex(),Ns._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Ns.tag=ds(Ns.tag).replace("comment",Ns._comment).replace("attribute",Ns._attribute).getRegex(),Ns._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Ns._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Ns._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Ns.link=ds(Ns.link).replace("label",Ns._label).replace("href",Ns._href).replace("title",Ns._title).getRegex(),Ns.reflink=ds(Ns.reflink).replace("label",Ns._label).replace("ref",Ss._label).getRegex(),Ns.nolink=ds(Ns.nolink).replace("ref",Ss._label).getRegex(),Ns.reflinkSearch=ds(Ns.reflinkSearch,"g").replace("reflink",Ns.reflink).replace("nolink",Ns.nolink).getRegex(),Ns.normal=Ds({},Ns),Ns.pedantic=Ds({},Ns.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:ds(/^!?\[(label)\]\((.*?)\)/).replace("label",Ns._label).getRegex(),reflink:ds(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ns._label).getRegex()}),Ns.gfm=Ds({},Ns.normal,{escape:ds(Ns.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/}),Ns.gfm.url=ds(Ns.gfm.url,"i").replace("email",Ns.gfm._extended_email).getRegex(),Ns.breaks=Ds({},Ns.gfm,{br:ds(Ns.br).replace("{2,}","*").getRegex(),text:ds(Ns.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var Os=function(){function e(t){b(this,e),this.tokens=[],this.tokens.links=Object.create(null),this.options=t||ts,this.options.tokenizer=this.options.tokenizer||new As,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var n={block:Ss.normal,inline:Ns.normal};this.options.pedantic?(n.block=Ss.pedantic,n.inline=Ns.pedantic):this.options.gfm&&(n.block=Ss.gfm,this.options.breaks?n.inline=Ns.breaks:n.inline=Ns.gfm),this.tokenizer.rules=n}return k(e,[{key:"lex",value:function(e){var t;for(e=e.replace(/\r\n|\r/g,"\n"),this.blockTokens(e,this.tokens);t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens}},{key:"blockTokens",value:function(e){var t,n,r,i,o=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];e=this.options.pedantic?e.replace(/\t/g," ").replace(/^ +$/gm,""):e.replace(/^( *)(\t+)/gm,(function(e,t,n){return t+" ".repeat(n.length)}));for(var u=function(){if(o.options.extensions&&o.options.extensions.block&&o.options.extensions.block.some((function(n){return!!(t=n.call({lexer:o},e,a))&&(e=e.substring(t.raw.length),a.push(t),!0)})))return"continue";if(t=o.tokenizer.space(e))return e=e.substring(t.raw.length),1===t.raw.length&&a.length>0?a[a.length-1].raw+="\n":a.push(t),"continue";if(t=o.tokenizer.code(e))return e=e.substring(t.raw.length),!(n=a[a.length-1])||"paragraph"!==n.type&&"text"!==n.type?a.push(t):(n.raw+="\n"+t.raw,n.text+="\n"+t.text,o.inlineQueue[o.inlineQueue.length-1].src=n.text),"continue";if(t=o.tokenizer.fences(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.heading(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.hr(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.blockquote(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.list(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.html(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.def(e))return e=e.substring(t.raw.length),!(n=a[a.length-1])||"paragraph"!==n.type&&"text"!==n.type?o.tokens.links[t.tag]||(o.tokens.links[t.tag]={href:t.href,title:t.title}):(n.raw+="\n"+t.raw,n.text+="\n"+t.raw,o.inlineQueue[o.inlineQueue.length-1].src=n.text),"continue";if(t=o.tokenizer.table(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.lheading(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(r=e,o.options.extensions&&o.options.extensions.startBlock){var u,l=1/0,c=e.slice(1);o.options.extensions.startBlock.forEach((function(e){"number"===typeof(u=e.call({lexer:this},c))&&u>=0&&(l=Math.min(l,u))})),l<1/0&&l>=0&&(r=e.substring(0,l+1))}if(o.state.top&&(t=o.tokenizer.paragraph(r)))return n=a[a.length-1],i&&"paragraph"===n.type?(n.raw+="\n"+t.raw,n.text+="\n"+t.text,o.inlineQueue.pop(),o.inlineQueue[o.inlineQueue.length-1].src=n.text):a.push(t),i=r.length!==e.length,e=e.substring(t.raw.length),"continue";if(t=o.tokenizer.text(e))return e=e.substring(t.raw.length),(n=a[a.length-1])&&"text"===n.type?(n.raw+="\n"+t.raw,n.text+="\n"+t.text,o.inlineQueue.pop(),o.inlineQueue[o.inlineQueue.length-1].src=n.text):a.push(t),"continue";if(e){var s="Infinite loop on byte: "+e.charCodeAt(0);if(o.options.silent)return console.error(s),"break";throw new Error(s)}};e;){var l=u();if("continue"!==l&&"break"===l)break}return this.state.top=!0,a}},{key:"inline",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this.inlineQueue.push({src:e,tokens:t}),t}},{key:"inlineTokens",value:function(e){var t,n,r,i,o,a,u=this,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=e;if(this.tokens.links){var s=Object.keys(this.tokens.links);if(s.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(c));)s.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(c=c.slice(0,i.index)+"["+Cs("a",i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(c));)c=c.slice(0,i.index)+"["+Cs("a",i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.escapedEmSt.exec(c));)c=c.slice(0,i.index+i[0].length-2)+"++"+c.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(var f=function(){if(o||(a=""),o=!1,u.options.extensions&&u.options.extensions.inline&&u.options.extensions.inline.some((function(n){return!!(t=n.call({lexer:u},e,l))&&(e=e.substring(t.raw.length),l.push(t),!0)})))return"continue";if(t=u.tokenizer.escape(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.tag(e))return e=e.substring(t.raw.length),(n=l[l.length-1])&&"text"===t.type&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(t=u.tokenizer.link(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.reflink(e,u.tokens.links))return e=e.substring(t.raw.length),(n=l[l.length-1])&&"text"===t.type&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(t=u.tokenizer.emStrong(e,c,a))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.codespan(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.br(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.del(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.autolink(e,Fs))return e=e.substring(t.raw.length),l.push(t),"continue";if(!u.state.inLink&&(t=u.tokenizer.url(e,Fs)))return e=e.substring(t.raw.length),l.push(t),"continue";if(r=e,u.options.extensions&&u.options.extensions.startInline){var i,s=1/0,f=e.slice(1);u.options.extensions.startInline.forEach((function(e){"number"===typeof(i=e.call({lexer:this},f))&&i>=0&&(s=Math.min(s,i))})),s<1/0&&s>=0&&(r=e.substring(0,s+1))}if(t=u.tokenizer.inlineText(r,Ms))return e=e.substring(t.raw.length),"_"!==t.raw.slice(-1)&&(a=t.raw.slice(-1)),o=!0,(n=l[l.length-1])&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(e){var d="Infinite loop on byte: "+e.charCodeAt(0);if(u.options.silent)return console.error(d),"break";throw new Error(d)}};e;){var d=f();if("continue"!==d&&"break"===d)break}return l}}],[{key:"rules",get:function(){return{block:Ss,inline:Ns}}},{key:"lex",value:function(t,n){return new e(n).lex(t)}},{key:"lexInline",value:function(t,n){return new e(n).inlineTokens(t)}}]),e}(),Ts=function(){function e(t){b(this,e),this.options=t||ts}return k(e,[{key:"code",value:function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return e=e.replace(/\n$/,"")+"\n",r?'<pre><code class="'+this.options.langPrefix+ls(r)+'">'+(n?e:ls(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:ls(e,!0))+"</code></pre>\n"}},{key:"blockquote",value:function(e){return"<blockquote>\n".concat(e,"</blockquote>\n")}},{key:"html",value:function(e){return e}},{key:"heading",value:function(e,t,n,r){if(this.options.headerIds){var i=this.options.headerPrefix+r.slug(n);return"<h".concat(t,' id="').concat(i,'">').concat(e,"</h").concat(t,">\n")}return"<h".concat(t,">").concat(e,"</h").concat(t,">\n")}},{key:"hr",value:function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"}},{key:"list",value:function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"}},{key:"listitem",value:function(e){return"<li>".concat(e,"</li>\n")}},{key:"checkbox",value:function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "}},{key:"paragraph",value:function(e){return"<p>".concat(e,"</p>\n")}},{key:"table",value:function(e,t){return t&&(t="<tbody>".concat(t,"</tbody>")),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"}},{key:"tablerow",value:function(e){return"<tr>\n".concat(e,"</tr>\n")}},{key:"tablecell",value:function(e,t){var n=t.header?"th":"td";return(t.align?"<".concat(n,' align="').concat(t.align,'">'):"<".concat(n,">"))+e+"</".concat(n,">\n")}},{key:"strong",value:function(e){return"<strong>".concat(e,"</strong>")}},{key:"em",value:function(e){return"<em>".concat(e,"</em>")}},{key:"codespan",value:function(e){return"<code>".concat(e,"</code>")}},{key:"br",value:function(){return this.options.xhtml?"<br/>":"<br>"}},{key:"del",value:function(e){return"<del>".concat(e,"</del>")}},{key:"link",value:function(e,t,n){if(null===(e=vs(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+e+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"}},{key:"image",value:function(e,t,n){if(null===(e=vs(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'.concat(e,'" alt="').concat(n,'"');return t&&(r+=' title="'.concat(t,'"')),r+=this.options.xhtml?"/>":">"}},{key:"text",value:function(e){return e}}]),e}(),Bs=function(){function e(){b(this,e)}return k(e,[{key:"strong",value:function(e){return e}},{key:"em",value:function(e){return e}},{key:"codespan",value:function(e){return e}},{key:"del",value:function(e){return e}},{key:"html",value:function(e){return e}},{key:"text",value:function(e){return e}},{key:"link",value:function(e,t,n){return""+n}},{key:"image",value:function(e,t,n){return""+n}},{key:"br",value:function(){return""}}]),e}(),Is=function(){function e(){b(this,e),this.seen={}}return k(e,[{key:"serialize",value:function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}},{key:"getNextSafeSlug",value:function(e,t){var n=e,r=0;if(this.seen.hasOwnProperty(n)){r=this.seen[e];do{n=e+"-"+ ++r}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=r,this.seen[n]=0),n}},{key:"slug",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)}}]),e}(),Ls=function(){function e(t){b(this,e),this.options=t||ts,this.options.renderer=this.options.renderer||new Ts,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Bs,this.slugger=new Is}return k(e,[{key:"parse",value:function(e){var t,n,r,i,o,a,u,l,c,s,f,d,h,p,v,m,g,y,_,b=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],D="",w=e.length;for(t=0;t<w;t++)if(s=e[t],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[s.type])||!1===(_=this.options.extensions.renderers[s.type].call({parser:this},s))&&["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(s.type))switch(s.type){case"space":continue;case"hr":D+=this.renderer.hr();continue;case"heading":D+=this.renderer.heading(this.parseInline(s.tokens),s.depth,ss(this.parseInline(s.tokens,this.textRenderer)),this.slugger);continue;case"code":D+=this.renderer.code(s.text,s.lang,s.escaped);continue;case"table":for(l="",u="",i=s.header.length,n=0;n<i;n++)u+=this.renderer.tablecell(this.parseInline(s.header[n].tokens),{header:!0,align:s.align[n]});for(l+=this.renderer.tablerow(u),c="",i=s.rows.length,n=0;n<i;n++){for(u="",o=(a=s.rows[n]).length,r=0;r<o;r++)u+=this.renderer.tablecell(this.parseInline(a[r].tokens),{header:!1,align:s.align[r]});c+=this.renderer.tablerow(u)}D+=this.renderer.table(l,c);continue;case"blockquote":c=this.parse(s.tokens),D+=this.renderer.blockquote(c);continue;case"list":for(f=s.ordered,d=s.start,h=s.loose,i=s.items.length,c="",n=0;n<i;n++)m=(v=s.items[n]).checked,g=v.task,p="",v.task&&(y=this.renderer.checkbox(m),h?v.tokens.length>0&&"paragraph"===v.tokens[0].type?(v.tokens[0].text=y+" "+v.tokens[0].text,v.tokens[0].tokens&&v.tokens[0].tokens.length>0&&"text"===v.tokens[0].tokens[0].type&&(v.tokens[0].tokens[0].text=y+" "+v.tokens[0].tokens[0].text)):v.tokens.unshift({type:"text",text:y}):p+=y),p+=this.parse(v.tokens,h),c+=this.renderer.listitem(p,g,m);D+=this.renderer.list(c,f,d);continue;case"html":D+=this.renderer.html(s.text);continue;case"paragraph":D+=this.renderer.paragraph(this.parseInline(s.tokens));continue;case"text":for(c=s.tokens?this.parseInline(s.tokens):s.text;t+1<w&&"text"===e[t+1].type;)c+="\n"+((s=e[++t]).tokens?this.parseInline(s.tokens):s.text);D+=b?this.renderer.paragraph(c):c;continue;default:var x='Token with "'+s.type+'" type was not found.';if(this.options.silent)return void console.error(x);throw new Error(x)}else D+=_||"";return D}},{key:"parseInline",value:function(e,t){t=t||this.renderer;var n,r,i,o="",a=e.length;for(n=0;n<a;n++)if(r=e[n],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[r.type])||!1===(i=this.options.extensions.renderers[r.type].call({parser:this},r))&&["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type))switch(r.type){case"escape":case"text":o+=t.text(r.text);break;case"html":o+=t.html(r.text);break;case"link":o+=t.link(r.href,r.title,this.parseInline(r.tokens,t));break;case"image":o+=t.image(r.href,r.title,r.text);break;case"strong":o+=t.strong(this.parseInline(r.tokens,t));break;case"em":o+=t.em(this.parseInline(r.tokens,t));break;case"codespan":o+=t.codespan(r.text);break;case"br":o+=t.br();break;case"del":o+=t.del(this.parseInline(r.tokens,t));break;default:var u='Token with "'+r.type+'" type was not found.';if(this.options.silent)return void console.error(u);throw new Error(u)}else o+=i||"";return o}}],[{key:"parse",value:function(t,n){return new e(n).parse(t)}},{key:"parseInline",value:function(t,n){return new e(n).parseInline(t)}}]),e}();function Ps(e,t,n){if("undefined"===typeof e||null===e)throw new Error("marked(): input parameter is undefined or null");if("string"!==typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"===typeof t&&(n=t,t=null),ks(t=Ds({},Ps.defaults,t||{})),n){var r,i=t.highlight;try{r=Os.lex(e,t)}catch(c){return n(c)}var o=function(e){var o;if(!e)try{t.walkTokens&&Ps.walkTokens(r,t.walkTokens),o=Ls.parse(r,t)}catch(c){e=c}return t.highlight=i,e?n(e):n(null,o)};if(!i||i.length<3)return o();if(delete t.highlight,!r.length)return o();var a=0;return Ps.walkTokens(r,(function(e){"code"===e.type&&(a++,setTimeout((function(){i(e.text,e.lang,(function(t,n){if(t)return o(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),0===--a&&o()}))}),0))})),void(0===a&&o())}function u(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+ls(e.message+"",!0)+"</pre>";throw e}try{var l=Os.lex(e,t);if(t.walkTokens){if(t.async)return Promise.all(Ps.walkTokens(l,t.walkTokens)).then((function(){return Ls.parse(l,t)})).catch(u);Ps.walkTokens(l,t.walkTokens)}return Ls.parse(l,t)}catch(c){u(c)}}Ps.options=Ps.setOptions=function(e){var t;return Ds(Ps.defaults,e),t=Ps.defaults,ts=t,Ps},Ps.getDefaults=es,Ps.defaults=ts,Ps.use=function(){for(var e=Ps.defaults.extensions||{renderers:{},childTokens:{}},t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.forEach((function(t){var n=Ds({},t);if(n.async=Ps.defaults.async||n.async,t.extensions&&(t.extensions.forEach((function(t){if(!t.name)throw new Error("extension name required");if(t.renderer){var n=e.renderers[t.name];e.renderers[t.name]=n?function(){for(var e=arguments.length,r=new Array(e),i=0;i<e;i++)r[i]=arguments[i];var o=t.renderer.apply(this,r);return!1===o&&(o=n.apply(this,r)),o}:t.renderer}if(t.tokenizer){if(!t.level||"block"!==t.level&&"inline"!==t.level)throw new Error("extension level must be 'block' or 'inline'");e[t.level]?e[t.level].unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&("block"===t.level?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:"inline"===t.level&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}t.childTokens&&(e.childTokens[t.name]=t.childTokens)})),n.extensions=e),t.renderer){var r=Ps.defaults.renderer||new Ts,i=function(e){var n=r[e];r[e]=function(){for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];var u=t.renderer[e].apply(r,o);return!1===u&&(u=n.apply(r,o)),u}};for(var o in t.renderer)i(o);n.renderer=r}if(t.tokenizer){var a=Ps.defaults.tokenizer||new As,u=function(e){var n=a[e];a[e]=function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var u=t.tokenizer[e].apply(a,i);return!1===u&&(u=n.apply(a,i)),u}};for(var l in t.tokenizer)u(l);n.tokenizer=a}if(t.walkTokens){var c=Ps.defaults.walkTokens;n.walkTokens=function(e){var n=[];return n.push(t.walkTokens.call(this,e)),c&&(n=n.concat(c.call(this,e))),n}}Ps.setOptions(n)}))},Ps.walkTokens=function(e,t){var n,r=[],i=g(e);try{var o=function(){var e=n.value;switch(r=r.concat(t.call(Ps,e)),e.type){case"table":var i,o=g(e.header);try{for(o.s();!(i=o.n()).done;){var a=i.value;r=r.concat(Ps.walkTokens(a.tokens,t))}}catch(d){o.e(d)}finally{o.f()}var u,l=g(e.rows);try{for(l.s();!(u=l.n()).done;){var c,s=g(u.value);try{for(s.s();!(c=s.n()).done;){var f=c.value;r=r.concat(Ps.walkTokens(f.tokens,t))}}catch(d){s.e(d)}finally{s.f()}}}catch(d){l.e(d)}finally{l.f()}break;case"list":r=r.concat(Ps.walkTokens(e.items,t));break;default:Ps.defaults.extensions&&Ps.defaults.extensions.childTokens&&Ps.defaults.extensions.childTokens[e.type]?Ps.defaults.extensions.childTokens[e.type].forEach((function(n){r=r.concat(Ps.walkTokens(e[n],t))})):e.tokens&&(r=r.concat(Ps.walkTokens(e.tokens,t)))}};for(i.s();!(n=i.n()).done;)o()}catch(a){i.e(a)}finally{i.f()}return r},Ps.parseInline=function(e,t){if("undefined"===typeof e||null===e)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!==typeof e)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");ks(t=Ds({},Ps.defaults,t||{}));try{var n=Os.lexInline(e,t);return t.walkTokens&&Ps.walkTokens(n,t.walkTokens),Ls.parseInline(n,t)}catch(r){if(r.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+ls(r.message+"",!0)+"</pre>";throw r}},Ps.Parser=Ls,Ps.parser=Ls.parse,Ps.Renderer=Ts,Ps.TextRenderer=Bs,Ps.Lexer=Os,Ps.lexer=Os.lex,Ps.Tokenizer=As,Ps.Slugger=Is,Ps.parse=Ps;Ps.options,Ps.setOptions,Ps.use,Ps.walkTokens,Ps.parseInline,Ls.parse,Os.lex;var Rs=function(e){var t=e.title,n=e.description,i=e.unit,o=e.expr,a=e.showLegend,u=e.filename,l=e.alias,c=Yr().isMobile,s=_n().period,f=Mr().customStep,d=bn(),h=(0,r.useRef)(null),p=m((0,r.useState)(!1),2),v=p[0],g=p[1],y=m((0,r.useState)({limits:{enable:!1,range:{1:[0,0]}}}),2),_=y[0],b=y[1],D=(0,r.useMemo)((function(){return Array.isArray(o)&&o.every((function(e){return e}))}),[o]),w=Ic({predefinedQuery:D?o:[],display:"chart",visible:v,customStep:f}),x=w.isLoading,k=w.graphData,C=w.error,E=w.warning,A=function(e){var t=at({},_);t.limits.range=e,b(t)};return(0,r.useEffect)((function(){var e=new IntersectionObserver((function(e){e.forEach((function(e){return g(e.isIntersecting)}))}),{threshold:.1});return h.current&&e.observe(h.current),function(){h.current&&e.unobserve(h.current)}}),[h]),D?Bt("div",{className:"vm-predefined-panel",ref:h,children:[Bt("div",{className:"vm-predefined-panel-header",children:[Bt(oi,{title:Bt((function(){return Bt("div",{className:"vm-predefined-panel-header__description vm-default-styles",children:[n&&Bt(Ot.HY,{children:[Bt("div",{children:[Bt("span",{children:"Description:"}),Bt("div",{dangerouslySetInnerHTML:{__html:Ps.parse(n)}})]}),Bt("hr",{})]}),Bt("div",{children:[Bt("span",{children:"Queries:"}),Bt("div",{children:o.map((function(e,t){return Bt("div",{children:e},"".concat(t,"_").concat(e))}))})]})]})}),{}),children:Bt("div",{className:"vm-predefined-panel-header__info",children:Bt(On,{})})}),Bt("h3",{className:"vm-predefined-panel-header__title",children:t||""}),Bt(zc,{yaxis:_,setYaxisLimits:A,toggleEnableLimits:function(){var e=at({},_);e.limits.enable=!e.limits.enable,b(e)}})]}),Bt("div",{className:"vm-predefined-panel-body",children:[x&&Bt(jc,{}),C&&Bt(Vr,{variant:"error",children:C}),E&&Bt(Vr,{variant:"warning",children:E}),k&&Bt(Dc,{data:k,period:s,customStep:f,query:o,yaxis:_,unit:i,alias:l,showLegend:a,setYaxisLimits:A,setPeriod:function(e){var t=e.from,n=e.to;d({type:"SET_PERIOD",payload:{from:t,to:n}})},fullWidth:!1,height:c?.5*window.innerHeight:500})]})]}):Bt(Vr,{variant:"error",children:[Bt("code",{children:'"expr"'})," not found. Check the configuration file ",Bt("b",{children:u}),"."]})},zs=function(e){var t=e.index,n=e.title,i=e.panels,o=e.filename,a=cr(document.body),u=(0,r.useMemo)((function(){return a.width/12}),[a]),l=m((0,r.useState)(!t),2),c=l[0],s=l[1],f=m((0,r.useState)([]),2),d=f[0],h=f[1];(0,r.useEffect)((function(){h(i&&i.map((function(e){return e.width||12})))}),[i]);var p=m((0,r.useState)({start:0,target:0,enable:!1}),2),v=p[0],g=p[1],y=function(e){if(v.enable){var t=v.start,n=Math.ceil((t-e.clientX)/u);if(!(Math.abs(n)>=12)){var r=d.map((function(e,t){return e-(t===v.target?n:0)}));h(r)}}},_=function(){g(at(at({},v),{},{enable:!1}))},b=function(e){return function(t){!function(e,t){g({start:e.clientX,target:t,enable:!0})}(t,e)}};return(0,r.useEffect)((function(){return window.addEventListener("mousemove",y),window.addEventListener("mouseup",_),function(){window.removeEventListener("mousemove",y),window.removeEventListener("mouseup",_)}}),[v]),Bt("div",{className:"vm-predefined-dashboard",children:Bt(Ri,{defaultExpanded:c,onChange:function(e){return s(e)},title:Bt((function(){return Bt("div",{className:fr()({"vm-predefined-dashboard-header":!0,"vm-predefined-dashboard-header_open":c}),children:[(n||o)&&Bt("span",{className:"vm-predefined-dashboard-header__title",children:n||"".concat(t+1,". ").concat(o)}),i&&Bt("span",{className:"vm-predefined-dashboard-header__count",children:["(",i.length," panels)"]})]})}),{}),children:Bt("div",{className:"vm-predefined-dashboard-panels",children:Array.isArray(i)&&i.length?i.map((function(e,t){return Bt("div",{className:"vm-predefined-dashboard-panels-panel vm-block vm-block_empty-padding",style:{gridColumn:"span ".concat(d[t])},children:[Bt(Rs,{title:e.title,description:e.description,unit:e.unit,expr:e.expr,alias:e.alias,filename:o,showLegend:e.showLegend}),Bt("button",{className:"vm-predefined-dashboard-panels-panel__resizer",onMouseDown:b(t)})]},t)})):Bt("div",{className:"vm-predefined-dashboard-panels-panel__alert",children:Bt(Vr,{variant:"error",children:[Bt("code",{children:'"panels"'})," not found. Check the configuration file ",Bt("b",{children:o}),"."]})})})})})},js=function(){!function(){var e=_n(),t=e.duration,n=e.relativeTime,i=e.period.date,o=Mr().customStep,a=m(nt(),2)[1],u=function(){var e,r=Jc((it(e={},"g0.range_input",t),it(e,"g0.end_input",i),it(e,"g0.step_input",o),it(e,"g0.relative_time",n),e));a(r)};(0,r.useEffect)(u,[t,n,i,o]),(0,r.useEffect)(u,[])}();var e=Yr().isMobile,t=Jr(),n=t.dashboardsSettings,i=t.dashboardsLoading,o=t.dashboardsError,a=m((0,r.useState)(0),2),u=a[0],l=a[1],c=(0,r.useMemo)((function(){return n.map((function(e,t){return{label:e.title||"",value:t}}))}),[n]),s=(0,r.useMemo)((function(){return n[u]||{}}),[n,u]),f=(0,r.useMemo)((function(){return null===s||void 0===s?void 0:s.rows}),[s]),d=(0,r.useMemo)((function(){return s.title||s.filename||""}),[s]),h=(0,r.useMemo)((function(){return Array.isArray(f)&&!!f.length}),[f]),p=function(e){return function(){!function(e){l(e)}(e)}};return Bt("div",{className:"vm-predefined-panels",children:[i&&Bt(jc,{}),!n.length&&o&&Bt(Vr,{variant:"error",children:o}),!n.length&&Bt(Vr,{variant:"info",children:"Dashboards not found"}),c.length>1&&Bt("div",{className:fr()({"vm-predefined-panels-tabs":!0,"vm-predefined-panels-tabs_mobile":e}),children:c.map((function(e){return Bt("div",{className:fr()({"vm-predefined-panels-tabs__tab":!0,"vm-predefined-panels-tabs__tab_active":e.value==u}),onClick:p(e.value),children:e.label},e.value)}))}),Bt("div",{className:"vm-predefined-panels__dashboards",children:[h&&f.map((function(e,t){return Bt(zs,{index:t,filename:d,title:e.title,panels:e.panels},"".concat(u,"_").concat(t))})),!!n.length&&!h&&Bt(Vr,{variant:"error",children:[Bt("code",{children:'"rows"'})," not found. Check the configuration file ",Bt("b",{children:d}),"."]})]})]})},$s=function(e,t){var n=t.match?"&match[]="+encodeURIComponent(t.match):"",r=t.focusLabel?"&focusLabel="+encodeURIComponent(t.focusLabel):"";return"".concat(e,"/api/v1/status/tsdb?topN=").concat(t.topN,"&date=").concat(t.date).concat(n).concat(r)},Ys=function(){function e(){b(this,e),this.tsdbStatus=void 0,this.tabsNames=void 0,this.tsdbStatus=this.defaultTSDBStatus,this.tabsNames=["table","graph"]}return k(e,[{key:"tsdbStatusData",get:function(){return this.tsdbStatus},set:function(e){this.tsdbStatus=e}},{key:"defaultTSDBStatus",get:function(){return{totalSeries:0,totalLabelValuePairs:0,seriesCountByMetricName:[],seriesCountByLabelName:[],seriesCountByFocusLabelValue:[],seriesCountByLabelValuePair:[],labelValueCountByLabelName:[]}}},{key:"keys",value:function(e){var t=[];return e&&(t=t.concat("seriesCountByFocusLabelValue")),t=t.concat("seriesCountByMetricName","seriesCountByLabelName","seriesCountByLabelValuePair","labelValueCountByLabelName"),t}},{key:"defaultState",get:function(){var e=this;return this.keys("job").reduce((function(t,n){return at(at({},t),{},{tabs:at(at({},t.tabs),{},it({},n,e.tabsNames)),containerRefs:at(at({},t.containerRefs),{},it({},n,(0,r.useRef)(null))),defaultActiveTab:at(at({},t.defaultActiveTab),{},it({},n,0))})}),{tabs:{},containerRefs:{},defaultActiveTab:{}})}},{key:"sectionsTitles",value:function(e){return{seriesCountByMetricName:"Metric names with the highest number of series",seriesCountByLabelName:"Labels with the highest number of series",seriesCountByFocusLabelValue:'Values for "'.concat(e,'" label with the highest number of series'),seriesCountByLabelValuePair:"Label=value pairs with the highest number of series",labelValueCountByLabelName:"Labels with the highest number of unique values"}}},{key:"tablesHeaders",get:function(){return{seriesCountByMetricName:Hs,seriesCountByLabelName:Vs,seriesCountByFocusLabelValue:Us,seriesCountByLabelValuePair:qs,labelValueCountByLabelName:Ws}}},{key:"totalSeries",value:function(e){return"labelValueCountByLabelName"===e?-1:this.tsdbStatus.totalSeries}}]),e}(),Hs=[{id:"name",label:"Metric name"},{id:"value",label:"Number of series"},{id:"percentage",label:"Percent of series"},{id:"action",label:"Action"}],Vs=[{id:"name",label:"Label name"},{id:"value",label:"Number of series"},{id:"percentage",label:"Percent of series"},{id:"action",label:"Action"}],Us=[{id:"name",label:"Label value"},{id:"value",label:"Number of series"},{id:"percentage",label:"Percent of series"},{disablePadding:!1,id:"action",label:"Action",numeric:!1}],qs=[{id:"name",label:"Label=value pair"},{id:"value",label:"Number of series"},{id:"percentage",label:"Percent of series"},{id:"action",label:"Action"}],Ws=[{id:"name",label:"Label name"},{id:"value",label:"Number of unique values"},{id:"action",label:"Action"}],Qs={seriesCountByMetricName:function(e,t){return Gs("__name__",t)},seriesCountByLabelName:function(e,t){return"{".concat(t,'!=""}')},seriesCountByFocusLabelValue:function(e,t){return Gs(e,t)},seriesCountByLabelValuePair:function(e,t){var n=t.split("="),r=n[0],i=n.slice(1).join("=");return Gs(r,i)},labelValueCountByLabelName:function(e,t){return"{".concat(t,'!=""}')}},Gs=function(e,t){return e?"{"+e+"="+JSON.stringify(t)+"}":""},Js=function(e){var t=e.topN,n=e.error,i=e.query,o=e.onSetHistory,a=e.onRunQuery,u=e.onSetQuery,l=e.onTopNChange,c=e.onFocusLabelChange,s=e.totalSeries,f=e.totalLabelValuePairs,d=e.date,h=e.match,p=e.focusLabel,v=Cn().autocomplete,m=En(),g=Yr().isMobile,y=$c().queryOptions,_=(0,r.useMemo)((function(){return t<1?"Number must be bigger than zero":""}),[t]);return Bt("div",{className:fr()({"vm-cardinality-configurator":!0,"vm-block":!0,"vm-block_mobile":g}),children:[Bt("div",{className:"vm-cardinality-configurator-controls",children:[Bt("div",{className:"vm-cardinality-configurator-controls__query",children:Bt(xc,{value:i,autocomplete:v,options:y,error:n,onArrowUp:function(){o(-1)},onArrowDown:function(){o(1)},onEnter:a,onChange:u,label:"Time series selector"})}),Bt("div",{className:"vm-cardinality-configurator-controls__item",children:Bt(di,{label:"Number of entries per table",type:"number",value:t,error:_,onChange:l})}),Bt("div",{className:"vm-cardinality-configurator-controls__item",children:Bt(di,{label:"Focus label",type:"text",value:p||"",onChange:c,endIcon:Bt(oi,{title:Bt("div",{children:[Bt("p",{children:"To identify values with the highest number of series for the selected label."}),Bt("p",{children:"Adds a table showing the series with the highest number of series."})]}),children:Bt(On,{})})})})]}),Bt("div",{className:"vm-cardinality-configurator-additional",children:Bt(kc,{label:"Autocomplete",value:v,onChange:function(){m({type:"TOGGLE_AUTOCOMPLETE"})}})}),Bt("div",{className:fr()({"vm-cardinality-configurator-bottom":!0,"vm-cardinality-configurator-bottom_mobile":g}),children:[Bt("div",{className:"vm-cardinality-configurator-bottom__info",children:["Analyzed ",Bt("b",{children:s})," series with ",Bt("b",{children:f}),' "label=value" pairs at ',Bt("b",{children:d}),h&&Bt("span",{children:[" for series selector ",Bt("b",{children:h})]}),". Show top ",t," entries per table."]}),Bt("div",{className:"vm-cardinality-configurator-bottom__docs",children:[Bt("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/#cardinality-explorer",rel:"help noreferrer",children:[Bt(rr,{}),"Documentation"]}),Bt("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://victoriametrics.com/blog/cardinality-explorer/",rel:"help noreferrer",children:[Bt(or,{}),"Example of using"]})]}),Bt(ei,{startIcon:Bt(Hn,{}),onClick:a,fullWidth:!0,children:"Execute Query"})]})]})};function Zs(e){var t=e.order,n=e.orderBy,r=e.onRequestSort,i=e.headerCells;return Bt("thead",{className:"vm-table-header",children:Bt("tr",{className:"vm-table__row vm-table__row_header",children:i.map((function(e){return Bt("th",{className:fr()({"vm-table-cell vm-table-cell_header":!0,"vm-table-cell_sort":"action"!==e.id&&"percentage"!==e.id,"vm-table-cell_right":"action"===e.id}),onClick:(i=e.id,function(e){r(e,i)}),children:Bt("div",{className:"vm-table-cell__content",children:[e.label,"action"!==e.id&&"percentage"!==e.id&&Bt("div",{className:fr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":n===e.id,"vm-table__sort-icon_desc":"desc"===t&&n===e.id}),children:Bt(Rn,{})})]})},e.id);var i}))})})}function Ks(e,t,n){return t[n]<e[n]?-1:t[n]>e[n]?1:0}function Xs(e,t){return"desc"===e?function(e,n){return Ks(e,n,t)}:function(e,n){return-Ks(e,n,t)}}function ef(e,t){var n=e.map((function(e,t){return[e,t]}));return n.sort((function(e,n){var r=t(e[0],n[0]);return 0!==r?r:e[1]-n[1]})),n.map((function(e){return e[0]}))}var tf=function(e){var t=e.rows,n=e.headerCells,i=e.defaultSortColumn,o=e.tableCells,a=m((0,r.useState)("desc"),2),u=a[0],l=a[1],c=m((0,r.useState)(i),2),s=c[0],f=c[1],d=m((0,r.useState)([]),2),h=d[0],p=d[1],v=function(e){return function(){var t=h.indexOf(e),n=[];-1===t?n=n.concat(h,e):0===t?n=n.concat(h.slice(1)):t===h.length-1?n=n.concat(h.slice(0,-1)):t>0&&(n=n.concat(h.slice(0,t),h.slice(t+1))),p(n)}},g=ef(t,Xs(u,s));return Bt("table",{className:"vm-table",children:[Bt(Zs,{numSelected:h.length,order:u,orderBy:s,onSelectAllClick:function(e){if(e.target.checked){var n=t.map((function(e){return e.name}));p(n)}else p([])},onRequestSort:function(e,t){l(s===t&&"asc"===u?"desc":"asc"),f(t)},rowCount:t.length,headerCells:n}),Bt("tbody",{className:"vm-table-header",children:g.map((function(e){return Bt("tr",{className:fr()({"vm-table__row":!0,"vm-table__row_selected":(t=e.name,-1!==h.indexOf(t))}),onClick:v(e.name),children:o(e)},e.name);var t}))})]})},nf=function(e){var t=e.row,n=e.totalSeries,r=e.onActionClick,i=n>0?t.value/n*100:-1;return Bt(Ot.HY,{children:[Bt("td",{className:"vm-table-cell",children:t.name},t.name),Bt("td",{className:"vm-table-cell",children:t.value},t.value),i>0&&Bt("td",{className:"vm-table-cell",children:Bt(Yc,{value:i})},t.progressValue),Bt("td",{className:"vm-table-cell vm-table-cell_right",children:Bt("div",{className:"vm-table-cell__content",children:Bt(oi,{title:"Filter by ".concat(t.name),children:Bt(ei,{variant:"text",size:"small",onClick:function(){r(t.name)},children:Bt(Vn,{})})})})},"action")]})},rf=function(e){var t=e.data,n=e.container,i=e.configs,o=Lt().isDarkTheme,a=(0,r.useRef)(null),u=m((0,r.useState)(),2),l=u[0],c=u[1],s=cr(n),f=at(at({},i),{},{width:s.width||400});return(0,r.useEffect)((function(){if(a.current){var e=new Gl(f,t,a.current);return c(e),e.destroy}}),[a.current,s,o]),(0,r.useEffect)((function(){l&&l.setData(t)}),[t]),Bt("div",{style:{height:"100%"},children:Bt("div",{ref:a})})},of=function(e,t){return Math.round(e*(t=Math.pow(10,t)))/t},af=1,uf=function(e,t,n,r){return of(t+e*(n+r),6)},lf=function(e,t,n,r,i){var o=1-t,a=n===af?o/(e-1):2===n?o/e:3===n?o/(e+1):0;(isNaN(a)||a===1/0)&&(a=0);var u=n===af?0:2===n?a/2:3===n?a:0,l=t/e,c=of(l,6);if(null==r)for(var s=0;s<e;s++)i(s,uf(s,u,l,a),c);else i(r,uf(r,u,l,a),c)},cf=function(e,t,n,r,i,o){return e>=n&&e<=i&&t>=r&&t<=o};function sf(e,t,n,r,i){var o=this;o.x=e,o.y=t,o.w=n,o.h=r,o.l=i||0,o.o=[],o.q=null}var ff={split:function(){var e=this,t=e.x,n=e.y,r=e.w/2,i=e.h/2,o=e.l+1;e.q=[new sf(t+r,n,r,i,o),new sf(t,n,r,i,o),new sf(t,n+i,r,i,o),new sf(t+r,n+i,r,i,o)]},quads:function(e,t,n,r,i){var o=this,a=o.q,u=o.x+o.w/2,l=o.y+o.h/2,c=t<l,s=e<u,f=e+n>u,d=t+r>l;c&&f&&i(a[0]),s&&c&&i(a[1]),s&&d&&i(a[2]),f&&d&&i(a[3])},add:function(e){var t=this;if(null!=t.q)t.quads(e.x,e.y,e.w,e.h,(function(t){t.add(e)}));else{var n=t.o;if(n.push(e),n.length>10&&t.l<4){t.split();for(var r=function(){var e=n[i];t.quads(e.x,e.y,e.w,e.h,(function(t){t.add(e)}))},i=0;i<n.length;i++)r();t.o.length=0}}},get:function(e,t,n,r,i){for(var o=this,a=o.o,u=0;u<a.length;u++)i(a[u]);null!=o.q&&o.quads(e,t,n,r,(function(o){o.get(e,t,n,r,i)}))},clear:function(){this.o.length=0,this.q=null}};Object.assign(sf.prototype,ff),n.g.Quadtree=sf;var df,hf,pf,vf,mf,gf={height:500,width:500,padding:[null,0,null,0],axes:[{show:!1}],series:[{label:"",value:function(e,t){return t}},{label:" ",width:0,fill:"",values:function(e,t){var n=e.legend.idxs||[];if(null===e.data||0===n.length)return{Name:null,Value:null};var r=n[t]||0;return{Name:e.data[0][r],Value:e.data[t][r]}}}],plugins:[function(e){var t,n,r,i=e.ignore,o=void 0===i?[]:i,a=null!==(t=e.radius)&&void 0!==t?t:0;function u(){n=devicePixelRatio,r=Math.round(10*n)+"px Arial"}u(),window.addEventListener("dppxchange",u);var l,c,s=e.ori,f=e.dir,d=e.stacked,h=.9,p=af,v=af;function m(e,t){var n=Array.from({length:t},(function(){return{offs:Array(e).fill(0),size:Array(e).fill(0)}}));return lf(e,h,p,null,(function(e,r,i){lf(t,1,v,null,(function(t){n[t].offs[e]=r,n[t].size[e]=i}))})),n}var g,y=Gl.paths.bars({radius:a,disp:at({x0:{unit:2,values:function(e,t){return l[t].offs}},size:{unit:2,values:function(e,t){return l[t].size}}},e.disp),each:function(e,t,n,r,i,o,a){r-=e.bbox.left,i-=e.bbox.top,g.add({x:r,y:i,w:o,h:a,sidx:t,didx:n})}});function _(e,t){e.ctx.save(),e.ctx.font=r,e.ctx.fillStyle=Et("color-text"),Gl.orient(e,t,(function(n,r,i,o,a,u,c,d,h,p,v){var m=f*(0===s?1:-1),g=Math.round(l[t].size[0]*p);l[t].offs.forEach((function(t,n){if(null!==i[n]){var r=p*t,o=Math.round(d+(1===m?r:p-r-g)),u=Math.round(g),l=c(i[n],a,v,h),f=0===s?Math.round(o+u/2):Math.round(l),y=0===s?Math.round(l):Math.round(o+u/2);e.ctx.textAlign=0===s?"center":i[n]>=0?"left":"right",e.ctx.textBaseline=1===s?"middle":i[n]>=0?"bottom":"top",e.ctx.fillText(i[n],f,y)}}))})),e.ctx.restore()}function b(e,t,n){return[0,Gl.rangeNum(0,n,.05,!0)[1]]}return{hooks:{drawClear:function(t){var n;if((g=g||new sf(0,0,t.bbox.width,t.bbox.height)).clear(),t.series.forEach((function(e){e._paths=null})),l=d?[null].concat(m(t.data.length-1-o.length,t.data[0].length)):2===t.series.length?[null].concat(m(t.data[0].length,1)):[null].concat(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h,r=Array.from({length:t},(function(){return{offs:Array(e).fill(0),size:Array(e).fill(0)}}));return lf(e,n,p,null,(function(e,n,i){lf(t,1,v,null,(function(t,o,a){r[t].offs[e]=n+i*o,r[t].size[e]=i*a}))})),r}(t.data[0].length,t.data.length-1-o.length,1===t.data[0].length?1:h)),null!=(null===(n=e.disp)||void 0===n?void 0:n.fill)){c=[null];for(var r=1;r<t.data.length;r++)c.push({fill:e.disp.fill.values(t,r),stroke:e.disp.stroke.values(t,r)})}}},opts:function(e,t){var r,i={range:b,ori:0===s?1:0};Gl.assign(t,{select:{show:!1},cursor:{x:!1,y:!1,dataIdx:function(e,t){if(1===t){r=null;var i=e.cursor.left*n,o=e.cursor.top*n;g.get(i,o,1,1,(function(e){cf(i,o,e.x,e.y,e.x+e.w,e.y+e.h)&&(r=e)}))}return r&&t===r.sidx?r.didx:null},points:{bbox:function(e,t){var i=r&&t===r.sidx;return{left:i?r.x/n:-10,top:i?r.y/n:-10,width:i?r.w/n:0,height:i?r.h/n:0}}}},scales:{x:{time:!1,distr:2,ori:s,dir:f,range:function(e,t,n){t=0,n=Math.max(1,e.data[0].length-1);var r=0;lf(e.data[0].length,h,p,0,(function(e,t,n){r=t+n/2}));var i=n-t;if(.5===r)t-=i;else{var o=(1/(1-2*r)*i-i)/2;t-=o,n+=o}return[t,n]}},rend:i,size:i,mem:i,inter:i,toggle:i}}),1===s&&(t.padding=[0,null,0,null]),Gl.assign(t.axes[0],{splits:function(e){var t=f*(0===s?1:-1),n=e._data[0].slice();return 1===t?n:n.reverse()},values:function(e){return e.data[0]},gap:15,size:ec,stroke:Et("color-text"),font:"10px Arial",labelSize:20,grid:{show:!1},ticks:{show:!1},side:0===s?2:3}),t.series.forEach((function(e,t){t>0&&!o.includes(t)&&Gl.assign(e,{paths:y,points:{show:_}})}))}}}((df=[1],hf=0,pf=1,vf=0,mf=function(e,t){return{stroke:e,fill:t}}({unit:3,values:function(e){return e.data[1].map((function(e,t){return 0!==t?"#33BB55":"#F79420"}))}},{unit:3,values:function(e){return e.data[1].map((function(e,t){return 0!==t?"#33BB55":"#F79420"}))}}),{which:df,ori:hf,dir:pf,radius:vf,disp:mf}))]},yf=function(e){var t=e.rows,n=e.activeTab,i=e.onChange,o=e.tabs,a=e.chartContainer,u=e.totalSeries,l=e.tabId,c=e.onActionClick,s=e.sectionTitle,f=e.tableHeaderCells,d=Yr().isMobile,h=(0,r.useMemo)((function(){return o.map((function(e,t){return{value:String(t),label:e,icon:Bt(0===t?qn:Un,{})}}))}),[o]);return Bt("div",{className:fr()({"vm-metrics-content":!0,"vm-metrics-content_mobile":d,"vm-block":!0,"vm-block_mobile":d}),children:[Bt("div",{className:"vm-metrics-content-header vm-section-header",children:[Bt("h5",{className:fr()({"vm-section-header__title":!0,"vm-section-header__title_mobile":d}),children:s}),Bt("div",{className:"vm-section-header__tabs",children:Bt(mr,{activeItem:String(n),items:h,onChange:function(e){i(e,l)}})})]}),Bt("div",{ref:a,className:fr()({"vm-metrics-content__table":!0,"vm-metrics-content__table_mobile":d}),children:[0===n&&Bt(tf,{rows:t,headerCells:f,defaultSortColumn:"value",tableCells:function(e){return Bt(nf,{row:e,totalSeries:u,onActionClick:c})}}),1===n&&Bt(rf,{data:[t.map((function(e){return e.name})),t.map((function(e){return e.value})),t.map((function(e,t){return t%12==0?1:t%10==0?2:0}))],container:(null===a||void 0===a?void 0:a.current)||null,configs:gf})]})]})},_f=function(){var e=Yr().isMobile,t=Ir(),n=t.topN,i=t.match,o=t.date,a=t.focusLabel,u=Lr();!function(){var e=Ir(),t=e.topN,n=e.match,i=e.date,o=e.focusLabel,a=e.extraLabel,u=m(nt(),2)[1],l=function(){var e=Jc({topN:t,date:i,match:n,extraLabel:a,focusLabel:o});u(e)};(0,r.useEffect)(l,[t,n,i,o,a]),(0,r.useEffect)(l,[])}();var l=m((0,r.useState)(i||""),2),c=l[0],s=l[1],f=m((0,r.useState)(0),2),d=f[0],h=f[1],p=m((0,r.useState)([]),2),v=p[0],g=p[1],y=function(){var e=new Ys,t=Ir(),n=t.topN,i=t.extraLabel,o=t.match,a=t.date,u=t.runQuery,l=t.focusLabel,c=Lt().serverUrl,s=m((0,r.useState)(!1),2),f=s[0],d=s[1],h=m((0,r.useState)(),2),p=h[0],v=h[1],g=m((0,r.useState)(e.defaultTSDBStatus),2),y=g[0],_=g[1];(0,r.useEffect)((function(){p&&(_(e.defaultTSDBStatus),d(!1))}),[p]);var b=function(){var t=Wi(Ui().mark((function t(n){var r,i,o,a;return Ui().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c){t.next=2;break}return t.abrupt("return");case 2:return v(""),d(!0),_(e.defaultTSDBStatus),r=$s(c,n),t.prev=6,t.next=9,fetch(r);case 9:return i=t.sent,t.next=12,i.json();case 12:o=t.sent,i.ok?(a=o.data,_(at({},a)),d(!1)):(v(o.error),_(e.defaultTSDBStatus),d(!1)),t.next=20;break;case 16:t.prev=16,t.t0=t.catch(6),d(!1),t.t0 instanceof Error&&v("".concat(t.t0.name,": ").concat(t.t0.message));case 20:case"end":return t.stop()}}),t,null,[[6,16]])})));return function(e){return t.apply(this,arguments)}}();return(0,r.useEffect)((function(){b({topN:n,extraLabel:i,match:o,date:a,focusLabel:l})}),[c,u,a]),e.tsdbStatusData=y,{isLoading:f,appConfigurator:e,error:p}}(),b=y.isLoading,D=y.appConfigurator,w=y.error,x=m((0,r.useState)(D.defaultState.defaultActiveTab),2),k=x[0],C=x[1],E=D.tsdbStatusData,A=D.defaultState,S=D.tablesHeaders,N=function(e,t){C(at(at({},k),{},it({},t,+e)))};return Bt("div",{className:fr()({"vm-cardinality-panel":!0,"vm-cardinality-panel_mobile":e}),children:[b&&Bt(jc,{message:"Please wait while cardinality stats is calculated. \n This may take some time if the db contains big number of time series."}),Bt(Js,{error:"",query:c,topN:n,date:o,match:i,totalSeries:E.totalSeries,totalLabelValuePairs:E.totalLabelValuePairs,focusLabel:a,onRunQuery:function(){g((function(e){return[].concat(_(e),[c])})),h((function(e){return e+1})),u({type:"SET_MATCH",payload:c}),u({type:"RUN_QUERY"})},onSetQuery:s,onSetHistory:function(e){var t=d+e;t<0||t>=v.length||(h(t),s(v[t]))},onTopNChange:function(e){u({type:"SET_TOP_N",payload:+e})},onFocusLabelChange:function(e){u({type:"SET_FOCUS_LABEL",payload:e})}}),w&&Bt(Vr,{variant:"error",children:w}),D.keys(a).map((function(e){return Bt(yf,{sectionTitle:D.sectionsTitles(a)[e],activeTab:k[e],rows:E[e],onChange:N,onActionClick:(t=e,function(e){var n=Qs[t](a,e);s(n),g((function(e){return[].concat(_(e),[n])})),h((function(e){return e+1})),u({type:"SET_MATCH",payload:n});var r="";"labelValueCountByLabelName"!==t&&"seriesCountByLabelName"!=t||(r=e),u({type:"SET_FOCUS_LABEL",payload:r}),u({type:"RUN_QUERY"})}),tabs:A.tabs[e],chartContainer:A.containerRefs[e],totalSeries:D.totalSeries(e),tabId:e,tableHeaderCells:S[e]},e);var t}))]})},bf=function(e){var t=e.rows,n=e.columns,i=e.defaultOrderBy,o=m((0,r.useState)(i||"count"),2),a=o[0],u=o[1],l=m((0,r.useState)("desc"),2),c=l[0],s=l[1],f=(0,r.useMemo)((function(){return ef(t,Xs(c,a))}),[t,a,c]),d=function(e){return function(){var t;t=e,s((function(e){return"asc"===e&&a===t?"desc":"asc"})),u(t)}};return Bt("table",{className:"vm-table",children:[Bt("thead",{className:"vm-table-header",children:Bt("tr",{className:"vm-table__row vm-table__row_header",children:n.map((function(e){return Bt("th",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:d(e.key),children:Bt("div",{className:"vm-table-cell__content",children:[e.title||e.key,Bt("div",{className:fr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":a===e.key,"vm-table__sort-icon_desc":"desc"===c&&a===e.key}),children:Bt(Rn,{})})]})},e.key)}))})}),Bt("tbody",{className:"vm-table-body",children:f.map((function(e,t){return Bt("tr",{className:"vm-table__row",children:n.map((function(t){return Bt("td",{className:"vm-table-cell",children:e[t.key]||"-"},t.key)}))},t)}))})]})},Df=["table","JSON"].map((function(e,t){return{value:String(t),label:e,icon:Bt(0===t?qn:Wn,{})}})),wf=function(e){var t=e.rows,n=e.title,i=e.columns,o=e.defaultOrderBy,a=Yr().isMobile,u=m((0,r.useState)(0),2),l=u[0],c=u[1];return Bt("div",{className:fr()({"vm-top-queries-panel":!0,"vm-block":!0,"vm-block_mobile":a}),children:[Bt("div",{className:fr()({"vm-top-queries-panel-header":!0,"vm-section-header":!0,"vm-top-queries-panel-header_mobile":a}),children:[Bt("h5",{className:fr()({"vm-section-header__title":!0,"vm-section-header__title_mobile":a}),children:n}),Bt("div",{className:"vm-section-header__tabs",children:Bt(mr,{activeItem:String(l),items:Df,onChange:function(e){c(+e)}})})]}),Bt("div",{className:fr()({"vm-top-queries-panel__table":!0,"vm-top-queries-panel__table_mobile":a}),children:[0===l&&Bt(bf,{rows:t,columns:i,defaultOrderBy:o}),1===l&&Bt(Lc,{data:t})]})]})},xf=function(){var e=Yr().isMobile,t=function(){var e=Lt().serverUrl,t=jr(),n=t.topN,i=t.maxLifetime,o=t.runQuery,a=m((0,r.useState)(null),2),u=a[0],l=a[1],c=m((0,r.useState)(!1),2),s=c[0],f=c[1],d=m((0,r.useState)(),2),h=d[0],p=d[1],v=(0,r.useMemo)((function(){return function(e,t,n){return"".concat(e,"/api/v1/status/top_queries?topN=").concat(t||"","&maxLifetime=").concat(n||"")}(e,n,i)}),[e,n,i]),g=function(){var e=Wi(Ui().mark((function e(){var t,n;return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),e.prev=1,e.next=4,fetch(v);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,t.ok&&["topByAvgDuration","topByCount","topBySumDuration"].forEach((function(e){var t=n[e];Array.isArray(t)&&t.forEach((function(e){return e.timeRangeHours=+(e.timeRangeSeconds/3600).toFixed(2)}))})),l(t.ok?n:null),p(String(n.error||"")),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&"AbortError"!==e.t0.name&&p("".concat(e.t0.name,": ").concat(e.t0.message));case 16:f(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();return(0,r.useEffect)((function(){g()}),[o]),{data:u,error:h,loading:s}}(),n=t.data,i=t.error,a=t.loading,u=jr(),l=u.topN,c=u.maxLifetime,s=(0,r.useContext)(zr).dispatch;!function(){var e=jr(),t=e.topN,n=e.maxLifetime,i=m(nt(),2)[1],o=function(){var e=Jc({topN:String(t),maxLifetime:n});i(e)};(0,r.useEffect)(o,[t,n]),(0,r.useEffect)(o,[])}();var f=(0,r.useMemo)((function(){var e=c.trim().split(" ").reduce((function(e,t){var n=Jt(t);return n?at(at({},e),n):at({},e)}),{});return!!o().duration(e).asMilliseconds()}),[c]),d=(0,r.useMemo)((function(){return!!l&&l<1}),[l]),h=(0,r.useMemo)((function(){return d?"Number must be bigger than zero":""}),[d]),p=(0,r.useMemo)((function(){return f?"":"Invalid duration value"}),[f]),v=function(e){if(!n)return e;var t=n[e];return"number"===typeof t?Xl(t,t,t):t||e},g=function(){s({type:"SET_RUN_QUERY"})},y=function(e){"Enter"===e.key&&g()};return(0,r.useEffect)((function(){n&&(l||s({type:"SET_TOP_N",payload:+n.topN}),c||s({type:"SET_MAX_LIFE_TIME",payload:n.maxLifetime}))}),[n]),Bt("div",{className:fr()({"vm-top-queries":!0,"vm-top-queries_mobile":e}),children:[a&&Bt(jc,{containerStyles:{height:"500px"}}),Bt("div",{className:fr()({"vm-top-queries-controls":!0,"vm-block":!0,"vm-block_mobile":e}),children:[Bt("div",{className:"vm-top-queries-controls-fields",children:[Bt("div",{className:"vm-top-queries-controls-fields__item",children:Bt(di,{label:"Max lifetime",value:c,error:p,helperText:"For example ".concat("30ms, 15s, 3d4h, 1y2w"),onChange:function(e){s({type:"SET_MAX_LIFE_TIME",payload:e})},onKeyDown:y})}),Bt("div",{className:"vm-top-queries-controls-fields__item",children:Bt(di,{label:"Number of returned queries",type:"number",value:l||"",error:h,onChange:function(e){s({type:"SET_TOP_N",payload:+e})},onKeyDown:y})})]}),Bt("div",{className:fr()({"vm-top-queries-controls-bottom":!0,"vm-top-queries-controls-bottom_mobile":e}),children:[Bt("div",{className:"vm-top-queries-controls-bottom__info",children:["VictoriaMetrics tracks the last\xa0",Bt(oi,{title:"search.queryStats.lastQueriesCount",children:Bt("b",{children:v("search.queryStats.lastQueriesCount")})}),"\xa0queries with durations at least\xa0",Bt(oi,{title:"search.queryStats.minQueryDuration",children:Bt("b",{children:v("search.queryStats.minQueryDuration")})})]}),Bt("div",{className:"vm-top-queries-controls-bottom__button",children:Bt(ei,{startIcon:Bt(Hn,{}),onClick:g,children:"Execute"})})]})]}),i&&Bt(Vr,{variant:"error",children:i}),n&&Bt(Ot.HY,{children:Bt("div",{className:"vm-top-queries-panels",children:[Bt(wf,{rows:n.topByCount,title:"Most frequently executed queries",columns:[{key:"query"},{key:"timeRangeHours",title:"time range, hours"},{key:"count"}]}),Bt(wf,{rows:n.topByAvgDuration,title:"Most heavy queries",columns:[{key:"query"},{key:"avgDurationSeconds",title:"avg duration, seconds"},{key:"timeRangeHours",title:"time range, hours"},{key:"count"}],defaultOrderBy:"avgDurationSeconds"}),Bt(wf,{rows:n.topBySumDuration,title:"Queries with most summary time to execute",columns:[{key:"query"},{key:"sumDurationSeconds",title:"sum duration, seconds"},{key:"timeRangeHours",title:"time range, hours"},{key:"count"}],defaultOrderBy:"sumDurationSeconds"})]})})]})},kf={"color-primary":"#589DF6","color-secondary":"#316eca","color-error":"#e5534b","color-warning":"#c69026","color-info":"#539bf5","color-success":"#57ab5a","color-background-body":"#22272e","color-background-block":"#2d333b","color-background-tooltip":"rgba(22, 22, 22, 0.8)","color-text":"#cdd9e5","color-text-secondary":"#768390","color-text-disabled":"#636e7b","box-shadow":"rgba(0, 0, 0, 0.16) 1px 2px 6px","box-shadow-popper":"rgba(0, 0, 0, 0.2) 0px 2px 8px 0px","border-divider":"1px solid rgba(99, 110, 123, 0.5)","color-hover-black":"rgba(0, 0, 0, 0.12)"},Cf={"color-primary":"#3F51B5","color-secondary":"#E91E63","color-error":"#FD080E","color-warning":"#FF8308","color-info":"#03A9F4","color-success":"#4CAF50","color-background-body":"#FEFEFF","color-background-block":"#FFFFFF","color-background-tooltip":"rgba(97,97,97, 0.92)","color-text":"#110f0f","color-text-secondary":"#706F6F","color-text-disabled":"#A09F9F","box-shadow":"rgba(0, 0, 0, 0.08) 1px 2px 6px","box-shadow-popper":"rgba(0, 0, 0, 0.1) 0px 2px 8px 0px","border-divider":"1px solid rgba(0, 0, 0, 0.15)","color-hover-black":"rgba(0, 0, 0, 0.06)"},Ef=function(){var e=m((0,r.useState)(St()),2),t=e[0],n=e[1],i=function(e){n(e.matches)};return(0,r.useEffect)((function(){var e=window.matchMedia("(prefers-color-scheme: dark)");return e.addEventListener("change",i),function(){return e.removeEventListener("change",i)}}),[]),t},Af=["primary","secondary","error","warning","info","success"],Sf=function(e){var t,n=e.onLoaded,i=pt(),o=ht().palette,a=void 0===o?{}:o,u=Lt().theme,l=Ef(),c=Pt(),s=cr(document.body),f=m((0,r.useState)((it(t={},lt.dark,kf),it(t,lt.light,Cf),it(t,lt.system,St()?kf:Cf),t)),2),d=f[0],h=f[1],p=function(){var e=window,t=e.innerWidth,n=e.innerHeight,r=document.documentElement,i=r.clientWidth,o=r.clientHeight;At("scrollbar-width","".concat(t-i,"px")),At("scrollbar-height","".concat(n-o,"px")),At("vh","".concat(.01*n,"px"))},v=function(){Af.forEach((function(e,t){var r=function(e){var t=e.replace("#","").trim();if(3===t.length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6!==t.length)throw new Error("Invalid HEX color.");return(299*parseInt(t.slice(0,2),16)+587*parseInt(t.slice(2,4),16)+114*parseInt(t.slice(4,6),16))/1e3>=128?"#000000":"#FFFFFF"}(Et("color-".concat(e)));At("".concat(e,"-text"),r),t===Af.length-1&&(c({type:"SET_DARK_THEME"}),n(!0))}))},g=function(){var e=kt("THEME")||lt.system,t=d[e];Object.entries(t).forEach((function(e){var t=m(e,2),n=t[0],r=t[1];At(n,r)})),v(),i&&(Af.forEach((function(e){var t=a[e];t&&At("color-".concat(e),t)})),v())};return(0,r.useEffect)((function(){p(),g()}),[d]),(0,r.useEffect)(p,[s]),(0,r.useEffect)((function(){var e=St()?kf:Cf;d[lt.system]!==e?h((function(t){return at(at({},t),{},it({},lt.system,e))})):g()}),[u,l]),(0,r.useEffect)((function(){i&&c({type:"SET_THEME",payload:lt.light})}),[]),null},Nf=function(e){var t=m((0,r.useState)([]),2),n=t[0],i=t[1],o=m((0,r.useState)(!1),2),a=o[0],u=o[1],l=function(e){e.preventDefault(),e.stopPropagation(),"dragenter"===e.type||"dragover"===e.type?u(!0):"dragleave"===e.type&&u(!1)},c=function(e){var t;e.preventDefault(),e.stopPropagation(),u(!1),null!==e&&void 0!==e&&null!==(t=e.dataTransfer)&&void 0!==t&&t.files&&e.dataTransfer.files[0]&&function(e){var t=Array.from(e||[]);i(t)}(e.dataTransfer.files)},s=function(e){var t,n=null===(t=e.clipboardData)||void 0===t?void 0:t.items;if(n){var r=Array.from(n).filter((function(e){return"application/json"===e.type})).map((function(e){return e.getAsFile()})).filter((function(e){return null!==e}));i(r)}};return(0,r.useEffect)((function(){return null===e||void 0===e||e.addEventListener("dragenter",l),null===e||void 0===e||e.addEventListener("dragleave",l),null===e||void 0===e||e.addEventListener("dragover",l),null===e||void 0===e||e.addEventListener("drop",c),null===e||void 0===e||e.addEventListener("paste",s),function(){null===e||void 0===e||e.removeEventListener("dragenter",l),null===e||void 0===e||e.removeEventListener("dragleave",l),null===e||void 0===e||e.removeEventListener("dragover",l),null===e||void 0===e||e.removeEventListener("drop",c),null===e||void 0===e||e.removeEventListener("paste",s)}}),[e]),{files:n,dragging:a}},Mf=function(e){var t=e.onOpenModal,n=e.onChange;return Bt("div",{className:"vm-trace-page-controls",children:[Bt(ei,{variant:"outlined",onClick:t,children:"Paste JSON"}),Bt(oi,{title:"The file must contain tracing information in JSON format",children:Bt(ei,{children:["Upload Files",Bt("input",{id:"json",type:"file",accept:"application/json",multiple:!0,title:" ",onChange:n})]})})]})},Ff=function(){var e=m((0,r.useState)(!1),2),t=e[0],n=e[1],i=m((0,r.useState)([]),2),o=i[0],a=i[1],u=m((0,r.useState)([]),2),l=u[0],c=u[1],s=(0,r.useMemo)((function(){return!!o.length}),[o]),f=m(nt(),2)[1],d=function(){n(!0)},h=function(){n(!1)},p=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";c((function(n){return[{filename:t,text:": ".concat(e.message)}].concat(_(n))}))},v=function(e,t){try{var n=JSON.parse(e),r=n.trace||n;if(!r.duration_msec)return void p(new Error(ut.traceNotFound),t);var i=new Bc(r,t);a((function(e){return[i].concat(_(e))}))}catch(o){o instanceof Error&&p(o,t)}},g=function(e){e.map((function(e){var t=new FileReader,n=(null===e||void 0===e?void 0:e.name)||"";t.onload=function(e){var t,r=String(null===(t=e.target)||void 0===t?void 0:t.result);v(r,n)},t.readAsText(e)}))},y=function(e){c([]);var t=Array.from(e.target.files||[]);g(t),e.target.value=""},b=function(e){return function(){!function(e){c((function(t){return t.filter((function(t,n){return n!==e}))}))}(e)}};(0,r.useEffect)((function(){f({})}),[]);var D=Nf(document.body),w=D.files,x=D.dragging;return(0,r.useEffect)((function(){g(w)}),[w]),Bt("div",{className:"vm-trace-page",children:[Bt("div",{className:"vm-trace-page-header",children:[Bt("div",{className:"vm-trace-page-header-errors",children:l.map((function(e,t){return Bt("div",{className:"vm-trace-page-header-errors-item",children:[Bt(Vr,{variant:"error",children:[Bt("b",{className:"vm-trace-page-header-errors-item__filename",children:e.filename}),Bt("span",{children:e.text})]}),Bt(ei,{className:"vm-trace-page-header-errors-item__close",startIcon:Bt(Mn,{}),variant:"text",color:"error",onClick:b(t)})]},"".concat(e,"_").concat(t))}))}),Bt("div",{children:s&&Bt(Mf,{onOpenModal:d,onChange:y})})]}),s&&Bt("div",{children:Bt(Uc,{jsonEditor:!0,traces:o,onDeleteClick:function(e){var t=o.filter((function(t){return t.idValue!==e.idValue}));a(_(t))}})}),!s&&Bt("div",{className:"vm-trace-page-preview",children:[Bt("p",{className:"vm-trace-page-preview__text",children:["Please, upload file with JSON response content.","\n","The file must contain tracing information in JSON format.","\n","In order to use tracing please refer to the doc:\xa0",Bt("a",{className:"vm-link vm-link_colored",href:"https://docs.victoriametrics.com/#query-tracing",target:"_blank",rel:"help noreferrer",children:"https://docs.victoriametrics.com/#query-tracing"}),"\n","Tracing graph will be displayed after file upload.","\n","Attach files by dragging & dropping, selecting or pasting them."]}),Bt(Mf,{onOpenModal:d,onChange:y})]}),t&&Bt(ii,{title:"Paste JSON",onClose:h,children:Bt(Vc,{editable:!0,displayTitle:!0,defaultTile:"JSON ".concat(o.length+1),onClose:h,onUpload:v})}),x&&Bt("div",{className:"vm-trace-page__dropzone"})]})},Of=function(e){var t=Lt().serverUrl,n=_n().period,i=m((0,r.useState)([]),2),o=i[0],a=i[1],u=m((0,r.useState)(!1),2),l=u[0],c=u[1],s=m((0,r.useState)(),2),f=s[0],d=s[1],h=(0,r.useMemo)((function(){return function(e,t,n){var r="{job=".concat(JSON.stringify(n),"}");return"".concat(e,"/api/v1/label/instance/values?match[]=").concat(encodeURIComponent(r),"&start=").concat(t.start,"&end=").concat(t.end)}(t,n,e)}),[t,n,e]);return(0,r.useEffect)((function(){if(e){var t=function(){var e=Wi(Ui().mark((function e(){var t,n,r;return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c(!0),e.prev=1,e.next=4,fetch(h);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],a(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?d(void 0):d("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&d("".concat(e.t0.name,": ").concat(e.t0.message));case 16:c(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[h]),{instances:o,isLoading:l,error:f}},Tf=function(e,t){var n=Lt().serverUrl,i=_n().period,o=m((0,r.useState)([]),2),a=o[0],u=o[1],l=m((0,r.useState)(!1),2),c=l[0],s=l[1],f=m((0,r.useState)(),2),d=f[0],h=f[1],p=(0,r.useMemo)((function(){return function(e,t,n,r){var i=Object.entries({job:n,instance:r}).filter((function(e){return e[1]})).map((function(e){var t=m(e,2),n=t[0],r=t[1];return"".concat(n,"=").concat(JSON.stringify(r))})).join(","),o="{".concat(i,"}");return"".concat(e,"/api/v1/label/__name__/values?match[]=").concat(encodeURIComponent(o),"&start=").concat(t.start,"&end=").concat(t.end)}(n,i,e,t)}),[n,i,e,t]);return(0,r.useEffect)((function(){if(e){var t=function(){var e=Wi(Ui().mark((function e(){var t,n,r;return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s(!0),e.prev=1,e.next=4,fetch(p);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],u(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?h(void 0):h("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&h("".concat(e.t0.name,": ").concat(e.t0.message));case 16:s(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[p]),{names:a,isLoading:c,error:d}},Bf=function(e){var t=e.name,n=e.job,i=e.instance,o=e.rateEnabled,a=e.isBucket,u=e.height,l=Yr().isMobile,c=Mr(),s=c.customStep,f=c.yaxis,d=_n().period,h=Fr(),p=bn(),v=m((0,r.useState)(!1),2),g=v[0],y=v[1],_=(0,r.useMemo)((function(){var e=Object.entries({job:n,instance:i}).filter((function(e){return e[1]})).map((function(e){var t=m(e,2),n=t[0],r=t[1];return"".concat(n,"=").concat(JSON.stringify(r))}));e.push("__name__=".concat(JSON.stringify(t))),"node_cpu_seconds_total"==t&&e.push('mode!="idle"');var r="{".concat(e.join(","),"}");if(a)return i?'\nlabel_map(\n histogram_quantiles("__name__", 0.5, 0.95, 0.99, sum(rate('.concat(r,')) by (vmrange, le)),\n "__name__",\n "0.5", "q50",\n "0.95", "q95",\n "0.99", "q99",\n)'):"\nwith (q = histogram_quantile(0.95, sum(rate(".concat(r,')) by (instance, vmrange, le))) (\n alias(min(q), "q95min"),\n alias(max(q), "q95max"),\n alias(avg(q), "q95avg"),\n)');var u=o?"rollup_rate(".concat(r,")"):"rollup(".concat(r,")");return"\nwith (q = ".concat(u,') (\n alias(min(label_match(q, "rollup", "min")), "min"),\n alias(max(label_match(q, "rollup", "max")), "max"),\n alias(avg(label_match(q, "rollup", "avg")), "avg"),\n)')}),[t,n,i,o,a]),b=Ic({predefinedQuery:[_],visible:!0,customStep:s,showAllSeries:g}),D=b.isLoading,w=b.graphData,x=b.error,k=b.warning;return Bt("div",{className:fr()({"vm-explore-metrics-graph":!0,"vm-explore-metrics-graph_mobile":l}),children:[D&&Bt(jc,{}),x&&Bt(Vr,{variant:"error",children:x}),k&&Bt(Vr,{variant:"warning",children:Bt("div",{className:"vm-explore-metrics-graph__warning",children:[Bt("p",{children:k}),Bt(ei,{color:"warning",variant:"outlined",onClick:function(){y(!0)},children:"Show all"})]})}),w&&d&&Bt(Dc,{data:w,period:d,customStep:s,query:[_],yaxis:f,setYaxisLimits:function(e){h({type:"SET_YAXIS_LIMITS",payload:e})},setPeriod:function(e){var t=e.from,n=e.to;p({type:"SET_PERIOD",payload:{from:t,to:n}})},showLegend:!1,height:u})]})},If=function(e){var t=e.name,n=e.index,i=e.length,o=e.isBucket,a=e.rateEnabled,u=e.onChangeRate,l=e.onRemoveItem,c=e.onChangeOrder,s=Yr().isMobile,f=m((0,r.useState)(!1),2),d=f[0],h=f[1],p=function(){l(t)},v=function(){c(t,n,n+1)},g=function(){c(t,n,n-1)};return Bt("div",s?{className:"vm-explore-metrics-item-header vm-explore-metrics-item-header_mobile",children:[Bt("div",{className:"vm-explore-metrics-item-header__name",children:t}),Bt(ei,{variant:"text",size:"small",startIcon:Bt(ur,{}),onClick:function(){h(!0)}}),d&&Bt(ii,{title:t,onClose:function(){h(!1)},children:Bt("div",{className:"vm-explore-metrics-item-header-modal",children:[Bt("div",{className:"vm-explore-metrics-item-header-modal-order",children:[Bt(ei,{startIcon:Bt(Jn,{}),variant:"outlined",onClick:g,disabled:0===n}),Bt("p",{children:["position:",Bt("span",{className:"vm-explore-metrics-item-header-modal-order__index",children:["#",n+1]})]}),Bt(ei,{endIcon:Bt(Gn,{}),variant:"outlined",onClick:v,disabled:n===i-1})]}),!o&&Bt("div",{className:"vm-explore-metrics-item-header-modal__rate",children:[Bt(kc,{label:Bt("span",{children:["enable ",Bt("code",{children:"rate()"})]}),value:a,onChange:u,fullWidth:!0}),Bt("p",{children:"calculates the average per-second speed of metrics change"})]}),Bt(ei,{startIcon:Bt(Mn,{}),color:"error",variant:"outlined",onClick:p,fullWidth:!0,children:"Remove graph"})]})})]}:{className:"vm-explore-metrics-item-header",children:[Bt("div",{className:"vm-explore-metrics-item-header-order",children:[Bt(oi,{title:"move graph up",children:Bt(ei,{className:"vm-explore-metrics-item-header-order__up",startIcon:Bt(Pn,{}),variant:"text",color:"gray",size:"small",onClick:g})}),Bt("div",{className:"vm-explore-metrics-item-header__index",children:["#",n+1]}),Bt(oi,{title:"move graph down",children:Bt(ei,{className:"vm-explore-metrics-item-header-order__down",startIcon:Bt(Pn,{}),variant:"text",color:"gray",size:"small",onClick:v})})]}),Bt("div",{className:"vm-explore-metrics-item-header__name",children:t}),!o&&Bt("div",{className:"vm-explore-metrics-item-header__rate",children:Bt(oi,{title:"calculates the average per-second speed of metric's change",children:Bt(kc,{label:Bt("span",{children:["enable ",Bt("code",{children:"rate()"})]}),value:a,onChange:u})})}),Bt("div",{className:"vm-explore-metrics-item-header__close",children:Bt(oi,{title:"close graph",children:Bt(ei,{startIcon:Bt(Mn,{}),variant:"text",color:"gray",size:"small",onClick:p})})})]})},Lf=function(e){var t=e.name,n=e.job,i=e.instance,o=e.index,a=e.length,u=e.size,l=e.onRemoveItem,c=e.onChangeOrder,s=(0,r.useMemo)((function(){return/_sum?|_total?|_count?/.test(t)}),[t]),f=(0,r.useMemo)((function(){return/_bucket?/.test(t)}),[t]),d=m((0,r.useState)(s),2),h=d[0],p=d[1],v=cr(document.body),g=(0,r.useMemo)(u.height,[u,v]);return(0,r.useEffect)((function(){p(s)}),[n]),Bt("div",{className:"vm-explore-metrics-item vm-block vm-block_empty-padding",children:[Bt(If,{name:t,index:o,length:a,isBucket:f,rateEnabled:h,size:u.id,onChangeRate:p,onRemoveItem:l,onChangeOrder:c}),Bt(Bf,{name:t,job:n,instance:i,rateEnabled:h,isBucket:f,height:g},"".concat(t,"_").concat(n,"_").concat(i,"_").concat(h))]})},Pf=function(e){var t=e.values,n=e.onRemoveItem,r=Yr().isMobile;return r?Bt("span",{className:"vm-select-input-content__counter",children:["selected ",t.length]}):Bt(Ot.HY,{children:t.map((function(e){return Bt("div",{className:"vm-select-input-content__selected",children:[Bt("span",{children:e}),Bt("div",{onClick:(t=e,function(e){n(t),e.stopPropagation()}),children:Bt(Mn,{})})]},e);var t}))})},Rf=function(e){var t=e.value,n=e.list,i=e.label,o=e.placeholder,a=e.noOptionsText,u=e.clearable,l=void 0!==u&&u,c=e.searchable,s=void 0!==c&&c,f=e.autofocus,d=e.onChange,h=Lt().isDarkTheme,p=Yr().isMobile,v=m((0,r.useState)(""),2),g=v[0],y=v[1],_=(0,r.useRef)(null),b=m((0,r.useState)(!1),2),D=b[0],w=b[1],x=(0,r.useRef)(null),k=Array.isArray(t),C=Array.isArray(t)?t:void 0,E=p&&k&&!(null===C||void 0===C||!C.length),A=(0,r.useMemo)((function(){return D?g:Array.isArray(t)?"":t}),[t,g,D,k]),S=(0,r.useMemo)((function(){return D?g||"(.+)":""}),[g,D]),N=function(){x.current&&x.current.blur()},M=function(e){d(e),k||(w(!1),N()),k&&x.current&&x.current.focus()},F=function(e){x.current!==e.target&&w(!1)};return(0,r.useEffect)((function(){y(""),D&&x.current&&x.current.focus(),D||N()}),[D,x]),(0,r.useEffect)((function(){f&&x.current&&!p&&x.current.focus()}),[f,x]),(0,r.useEffect)((function(){return window.addEventListener("keyup",F),function(){window.removeEventListener("keyup",F)}}),[]),Bt("div",{className:fr()({"vm-select":!0,"vm-select_dark":h}),children:[Bt("div",{className:"vm-select-input",onClick:function(e){e.target instanceof HTMLInputElement||w((function(e){return!e}))},ref:_,children:[Bt("div",{className:"vm-select-input-content",children:[!(null===C||void 0===C||!C.length)&&Bt(Pf,{values:C,onRemoveItem:M}),!E&&Bt("input",{value:A,type:"text",placeholder:o,onInput:function(e){y(e.target.value)},onFocus:function(){w(!0)},ref:x,readOnly:p||!s})]}),i&&Bt("span",{className:"vm-text-field__label",children:i}),l&&t&&Bt("div",{className:"vm-select-input__icon",onClick:function(e){return function(t){M(e),t.stopPropagation()}}(""),children:Bt(Mn,{})}),Bt("div",{className:fr()({"vm-select-input__icon":!0,"vm-select-input__icon_open":D}),children:Bt(Rn,{})})]}),Bt(wc,{label:i,value:S,options:n,anchor:_,selected:C,maxWords:10,minLength:0,fullWidth:!0,noOptionsText:a,onSelect:M,onOpenAutocomplete:w})]})},zf=Dt.map((function(e){return e.id})),jf=function(e){var t=e.jobs,n=e.instances,i=e.names,o=e.job,a=e.instance,u=e.size,l=e.selectedMetrics,c=e.onChangeJob,s=e.onChangeInstance,f=e.onToggleMetric,d=e.onChangeSize,h=(0,r.useMemo)((function(){return o?"":"No instances. Please select job"}),[o]),p=(0,r.useMemo)((function(){return o?"":"No metric names. Please select job"}),[o]),v=Yr().isMobile;return Bt("div",{className:fr()({"vm-explore-metrics-header":!0,"vm-explore-metrics-header_mobile":v,"vm-block":!0,"vm-block_mobile":v}),children:[Bt("div",{className:"vm-explore-metrics-header__job",children:Bt(Rf,{value:o,list:t,label:"Job",placeholder:"Please select job",onChange:c,autofocus:!o,searchable:!0})}),Bt("div",{className:"vm-explore-metrics-header__instance",children:Bt(Rf,{value:a,list:n,label:"Instance",placeholder:"Please select instance",onChange:s,noOptionsText:h,clearable:!0,searchable:!0})}),Bt("div",{className:"vm-explore-metrics-header__size",children:Bt(Rf,{label:"Size graphs",value:u,list:zf,onChange:d})}),Bt("div",{className:"vm-explore-metrics-header-metrics",children:Bt(Rf,{label:"Metrics",value:l,list:i,placeholder:"Search metric name",onChange:f,noOptionsText:p,clearable:!0,searchable:!0})})]})},$f=wt("job",""),Yf=wt("instance",""),Hf=wt("metrics",""),Vf=wt("size",""),Uf=Dt.find((function(e){return Vf?e.id===Vf:e.isDefault}))||Dt[0],qf=function(){var e=m((0,r.useState)($f),2),t=e[0],n=e[1],i=m((0,r.useState)(Yf),2),o=i[0],a=i[1],u=m((0,r.useState)(Hf?Hf.split("&"):[]),2),l=u[0],c=u[1],s=m((0,r.useState)(Uf),2),f=s[0],d=s[1];!function(e){var t=e.job,n=e.instance,i=e.metrics,o=e.size,a=_n(),u=a.duration,l=a.relativeTime,c=a.period.date,s=Mr().customStep,f=m(nt(),2)[1],d=function(){var e,r=Jc((it(e={},"g0.range_input",u),it(e,"g0.end_input",c),it(e,"g0.step_input",s),it(e,"g0.relative_time",l),it(e,"size",o),it(e,"job",t),it(e,"instance",n),it(e,"metrics",i),e));f(r)};(0,r.useEffect)(d,[u,l,c,s,t,n,i,o]),(0,r.useEffect)(d,[])}({job:t,instance:o,metrics:l.join("&"),size:f.id});var h=function(){var e=Lt().serverUrl,t=_n().period,n=m((0,r.useState)([]),2),i=n[0],o=n[1],a=m((0,r.useState)(!1),2),u=a[0],l=a[1],c=m((0,r.useState)(),2),s=c[0],f=c[1],d=(0,r.useMemo)((function(){return function(e,t){return"".concat(e,"/api/v1/label/job/values?start=").concat(t.start,"&end=").concat(t.end)}(e,t)}),[e,t]);return(0,r.useEffect)((function(){var e=function(){var e=Wi(Ui().mark((function e(){var t,n,r;return Ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),e.prev=1,e.next=4,fetch(d);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],o(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?f(void 0):f("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&f("".concat(e.t0.name,": ").concat(e.t0.message));case 16:l(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();e().catch(console.error)}),[d]),{jobs:i,isLoading:u,error:s}}(),p=h.jobs,v=h.isLoading,g=h.error,y=Of(t),b=y.instances,D=y.isLoading,w=y.error,x=Tf(t,o),k=x.names,C=x.isLoading,E=x.error,A=(0,r.useMemo)((function(){return v||D||C}),[v,D,C]),S=(0,r.useMemo)((function(){return g||w||E}),[g,w,E]),N=function(e){c(e?function(t){return t.includes(e)?t.filter((function(t){return t!==e})):[].concat(_(t),[e])}:[])},M=function(e,t,n){var r=n>l.length-1;n<0||r||c((function(e){var r=_(e),i=m(r.splice(t,1),1)[0];return r.splice(n,0,i),r}))};return(0,r.useEffect)((function(){o&&b.length&&!b.includes(o)&&a("")}),[b,o]),Bt("div",{className:"vm-explore-metrics",children:[Bt(jf,{jobs:p,instances:b,names:k,job:t,size:f.id,instance:o,selectedMetrics:l,onChangeJob:n,onChangeSize:function(e){var t=Dt.find((function(t){return t.id===e}));t&&d(t)},onChangeInstance:a,onToggleMetric:N}),A&&Bt(jc,{}),S&&Bt(Vr,{variant:"error",children:S}),!t&&Bt(Vr,{variant:"info",children:"Please select job to see list of metric names."}),t&&!l.length&&Bt(Vr,{variant:"info",children:"Please select metric names to see the graphs."}),Bt("div",{className:"vm-explore-metrics-body",children:l.map((function(e,n){return Bt(Lf,{name:e,job:t,instance:o,index:n,length:l.length,size:f,onRemoveItem:N,onChangeOrder:M},e)}))})]})},Wf=function(){var t=qr().showInfoMessage,n=function(e){return function(){var n;n=e,navigator.clipboard.writeText("<".concat(n,"/>")),t({text:"<".concat(n,"/> has been copied"),type:"success"})}};return Bt("div",{className:"vm-preview-icons",children:Object.entries(e).map((function(e){var t=m(e,2),r=t[0],i=t[1];return Bt("div",{className:"vm-preview-icons-item",onClick:n(r),children:[Bt("div",{className:"vm-preview-icons-item__svg",children:i()}),Bt("div",{className:"vm-preview-icons-item__name",children:"<".concat(r,"/>")})]},r)}))})},Qf=function(){var e=m((0,r.useState)(!1),2),t=e[0],n=e[1];return Bt(Ot.HY,{children:Bt(Ze,{children:Bt(Zr,{children:Bt(Ot.HY,{children:[Bt(Sf,{onLoaded:n}),t&&Bt(He,{children:Bt($e,{path:"/",element:Bt(no,{}),children:[Bt($e,{path:dt.home,element:Bt(Xc,{})}),Bt($e,{path:dt.metrics,element:Bt(qf,{})}),Bt($e,{path:dt.cardinality,element:Bt(_f,{})}),Bt($e,{path:dt.topQueries,element:Bt(xf,{})}),Bt($e,{path:dt.trace,element:Bt(Ff,{})}),Bt($e,{path:dt.dashboards,element:Bt(js,{})}),Bt($e,{path:dt.icons,element:Bt(Wf,{})})]})})]})})})})},Gf=function(e){e&&n.e(27).then(n.bind(n,27)).then((function(t){var n=t.getCLS,r=t.getFID,i=t.getFCP,o=t.getLCP,a=t.getTTFB;n(e),r(e),i(e),o(e),a(e)}))},Jf=document.getElementById("root");Jf&&(0,r.render)(Bt(Qf,{}),Jf),Gf()}()}(); \ No newline at end of file diff --git a/app/vmselect/vmui/static/js/main.d5e360af.js.LICENSE.txt b/app/vmselect/vmui/static/js/main.1be8603e.js.LICENSE.txt similarity index 100% rename from app/vmselect/vmui/static/js/main.d5e360af.js.LICENSE.txt rename to app/vmselect/vmui/static/js/main.1be8603e.js.LICENSE.txt diff --git a/app/vmselect/vmui/static/js/main.d5e360af.js b/app/vmselect/vmui/static/js/main.d5e360af.js deleted file mode 100644 index 287ef7b05b..0000000000 --- a/app/vmselect/vmui/static/js/main.d5e360af.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.d5e360af.js.LICENSE.txt */ -!function(){var e={680:function(e,t,n){"use strict";var r=n(476),i=n(962),o=i(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"===typeof n&&o(e,".prototype.")>-1?i(n):n}},962:function(e,t,n){"use strict";var r=n(199),i=n(476),o=i("%Function.prototype.apply%"),a=i("%Function.prototype.call%"),u=i("%Reflect.apply%",!0)||r.call(a,o),l=i("%Object.getOwnPropertyDescriptor%",!0),c=i("%Object.defineProperty%",!0),s=i("%Math.max%");if(c)try{c({},"a",{value:1})}catch(d){c=null}e.exports=function(e){var t=u(r,a,arguments);if(l&&c){var n=l(t,"length");n.configurable&&c(t,"length",{value:1+s(0,e.length-(arguments.length-1))})}return t};var f=function(){return u(r,o,arguments)};c?c(e.exports,"apply",{value:f}):e.exports.apply=f},123:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var a=i.apply(null,n);a&&e.push(a)}}else if("object"===o){if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]")){e.push(n.toString());continue}for(var u in n)r.call(n,u)&&n[u]&&e.push(u)}}}return e.join(" ")}e.exports?(i.default=i,e.exports=i):void 0===(n=function(){return i}.apply(t,[]))||(e.exports=n)}()},658:function(e){e.exports=function(){"use strict";var e=1e3,t=6e4,n=36e5,r="millisecond",i="second",o="minute",a="hour",u="day",l="week",c="month",s="quarter",f="year",d="date",h="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},g=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},y={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(i,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(r,c),o=n-i<0,a=t.clone().add(r+(o?-1:1),c);return+(-(r+(n-i)/(o?i-a:a-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:c,y:f,w:l,d:u,D:d,h:a,m:o,s:i,ms:r,Q:s}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},_="en",b={};b[_]=m;var D=function(e){return e instanceof C},w=function e(t,n,r){var i;if(!t)return _;if("string"==typeof t){var o=t.toLowerCase();b[o]&&(i=o),n&&(b[o]=n,i=o);var a=t.split("-");if(!i&&a.length>1)return e(a[0])}else{var u=t.name;b[u]=t,i=u}return!r&&i&&(_=i),i||!r&&_},x=function(e,t){if(D(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new C(n)},k=y;k.l=w,k.i=D,k.w=function(e,t){return x(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var C=function(){function m(e){this.$L=w(e.locale,null,!0),this.parse(e)}var g=m.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(k.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(p);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return k},g.isValid=function(){return!(this.$d.toString()===h)},g.isSame=function(e,t){var n=x(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return x(e)<this.startOf(t)},g.isBefore=function(e,t){return this.endOf(t)<x(e)},g.$g=function(e,t,n){return k.u(e)?this[t]:this.set(n,e)},g.unix=function(){return Math.floor(this.valueOf()/1e3)},g.valueOf=function(){return this.$d.getTime()},g.startOf=function(e,t){var n=this,r=!!k.u(t)||t,s=k.p(e),h=function(e,t){var i=k.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return r?i:i.endOf(u)},p=function(e,t){return k.w(n.toDate()[e].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},v=this.$W,m=this.$M,g=this.$D,y="set"+(this.$u?"UTC":"");switch(s){case f:return r?h(1,0):h(31,11);case c:return r?h(1,m):h(0,m+1);case l:var _=this.$locale().weekStart||0,b=(v<_?v+7:v)-_;return h(r?g-b:g+(6-b),m);case u:case d:return p(y+"Hours",0);case a:return p(y+"Minutes",1);case o:return p(y+"Seconds",2);case i:return p(y+"Milliseconds",3);default:return this.clone()}},g.endOf=function(e){return this.startOf(e,!1)},g.$set=function(e,t){var n,l=k.p(e),s="set"+(this.$u?"UTC":""),h=(n={},n[u]=s+"Date",n[d]=s+"Date",n[c]=s+"Month",n[f]=s+"FullYear",n[a]=s+"Hours",n[o]=s+"Minutes",n[i]=s+"Seconds",n[r]=s+"Milliseconds",n)[l],p=l===u?this.$D+(t-this.$W):t;if(l===c||l===f){var v=this.clone().set(d,1);v.$d[h](p),v.init(),this.$d=v.set(d,Math.min(this.$D,v.daysInMonth())).$d}else h&&this.$d[h](p);return this.init(),this},g.set=function(e,t){return this.clone().$set(e,t)},g.get=function(e){return this[k.p(e)]()},g.add=function(r,s){var d,h=this;r=Number(r);var p=k.p(s),v=function(e){var t=x(h);return k.w(t.date(t.date()+Math.round(e*r)),h)};if(p===c)return this.set(c,this.$M+r);if(p===f)return this.set(f,this.$y+r);if(p===u)return v(1);if(p===l)return v(7);var m=(d={},d[o]=t,d[a]=n,d[i]=e,d)[p]||1,g=this.$d.getTime()+r*m;return k.w(g,this)},g.subtract=function(e,t){return this.add(-1*e,t)},g.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||h;var r=e||"YYYY-MM-DDTHH:mm:ssZ",i=k.z(this),o=this.$H,a=this.$m,u=this.$M,l=n.weekdays,c=n.months,s=function(e,n,i,o){return e&&(e[n]||e(t,r))||i[n].slice(0,o)},f=function(e){return k.s(o%12||12,e,"0")},d=n.meridiem||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r},p={YY:String(this.$y).slice(-2),YYYY:this.$y,M:u+1,MM:k.s(u+1,2,"0"),MMM:s(n.monthsShort,u,c,3),MMMM:s(c,u),D:this.$D,DD:k.s(this.$D,2,"0"),d:String(this.$W),dd:s(n.weekdaysMin,this.$W,l,2),ddd:s(n.weekdaysShort,this.$W,l,3),dddd:l[this.$W],H:String(o),HH:k.s(o,2,"0"),h:f(1),hh:f(2),a:d(o,a,!0),A:d(o,a,!1),m:String(a),mm:k.s(a,2,"0"),s:String(this.$s),ss:k.s(this.$s,2,"0"),SSS:k.s(this.$ms,3,"0"),Z:i};return r.replace(v,(function(e,t){return t||p[e]||i.replace(":","")}))},g.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},g.diff=function(r,d,h){var p,v=k.p(d),m=x(r),g=(m.utcOffset()-this.utcOffset())*t,y=this-m,_=k.m(this,m);return _=(p={},p[f]=_/12,p[c]=_,p[s]=_/3,p[l]=(y-g)/6048e5,p[u]=(y-g)/864e5,p[a]=y/n,p[o]=y/t,p[i]=y/e,p)[v]||y,h?_:k.a(_)},g.daysInMonth=function(){return this.endOf(c).$D},g.$locale=function(){return b[this.$L]},g.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=w(e,t,!0);return r&&(n.$L=r),n},g.clone=function(){return k.w(this.$d,this)},g.toDate=function(){return new Date(this.valueOf())},g.toJSON=function(){return this.isValid()?this.toISOString():null},g.toISOString=function(){return this.$d.toISOString()},g.toString=function(){return this.$d.toUTCString()},m}(),A=C.prototype;return x.prototype=A,[["$ms",r],["$s",i],["$m",o],["$H",a],["$W",u],["$M",c],["$y",f],["$D",d]].forEach((function(e){A[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),x.extend=function(e,t){return e.$i||(e(t,C,x),e.$i=!0),x},x.locale=w,x.isDayjs=D,x.unix=function(e){return x(1e3*e)},x.en=b[_],x.Ls=b,x.p={},x}()},446:function(e){e.exports=function(){"use strict";var e,t,n=1e3,r=6e4,i=36e5,o=864e5,a=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,l=2592e6,c=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,s={years:u,months:l,days:o,hours:i,minutes:r,seconds:n,milliseconds:1,weeks:6048e5},f=function(e){return e instanceof y},d=function(e,t,n){return new y(e,n,t.$l)},h=function(e){return t.p(e)+"s"},p=function(e){return e<0},v=function(e){return p(e)?Math.ceil(e):Math.floor(e)},m=function(e){return Math.abs(e)},g=function(e,t){return e?p(e)?{negative:!0,format:""+m(e)+t}:{negative:!1,format:""+e+t}:{negative:!1,format:""}},y=function(){function p(e,t,n){var r=this;if(this.$d={},this.$l=n,void 0===e&&(this.$ms=0,this.parseFromMilliseconds()),t)return d(e*s[h(t)],this);if("number"==typeof e)return this.$ms=e,this.parseFromMilliseconds(),this;if("object"==typeof e)return Object.keys(e).forEach((function(t){r.$d[h(t)]=e[t]})),this.calMilliseconds(),this;if("string"==typeof e){var i=e.match(c);if(i){var o=i.slice(2).map((function(e){return null!=e?Number(e):0}));return this.$d.years=o[0],this.$d.months=o[1],this.$d.weeks=o[2],this.$d.days=o[3],this.$d.hours=o[4],this.$d.minutes=o[5],this.$d.seconds=o[6],this.calMilliseconds(),this}}return this}var m=p.prototype;return m.calMilliseconds=function(){var e=this;this.$ms=Object.keys(this.$d).reduce((function(t,n){return t+(e.$d[n]||0)*s[n]}),0)},m.parseFromMilliseconds=function(){var e=this.$ms;this.$d.years=v(e/u),e%=u,this.$d.months=v(e/l),e%=l,this.$d.days=v(e/o),e%=o,this.$d.hours=v(e/i),e%=i,this.$d.minutes=v(e/r),e%=r,this.$d.seconds=v(e/n),e%=n,this.$d.milliseconds=e},m.toISOString=function(){var e=g(this.$d.years,"Y"),t=g(this.$d.months,"M"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var r=g(n,"D"),i=g(this.$d.hours,"H"),o=g(this.$d.minutes,"M"),a=this.$d.seconds||0;this.$d.milliseconds&&(a+=this.$d.milliseconds/1e3);var u=g(a,"S"),l=e.negative||t.negative||r.negative||i.negative||o.negative||u.negative,c=i.format||o.format||u.format?"T":"",s=(l?"-":"")+"P"+e.format+t.format+r.format+c+i.format+o.format+u.format;return"P"===s||"-P"===s?"P0D":s},m.toJSON=function(){return this.toISOString()},m.format=function(e){var n=e||"YYYY-MM-DDTHH:mm:ss",r={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return n.replace(a,(function(e,t){return t||String(r[e])}))},m.as=function(e){return this.$ms/s[h(e)]},m.get=function(e){var t=this.$ms,n=h(e);return"milliseconds"===n?t%=1e3:t="weeks"===n?v(t/s[n]):this.$d[n],0===t?0:t},m.add=function(e,t,n){var r;return r=t?e*s[h(t)]:f(e)?e.$ms:d(e,this).$ms,d(this.$ms+r*(n?-1:1),this)},m.subtract=function(e,t){return this.add(e,t,!0)},m.locale=function(e){var t=this.clone();return t.$l=e,t},m.clone=function(){return d(this.$ms,this)},m.humanize=function(t){return e().add(this.$ms,"ms").locale(this.$l).fromNow(!t)},m.milliseconds=function(){return this.get("milliseconds")},m.asMilliseconds=function(){return this.as("milliseconds")},m.seconds=function(){return this.get("seconds")},m.asSeconds=function(){return this.as("seconds")},m.minutes=function(){return this.get("minutes")},m.asMinutes=function(){return this.as("minutes")},m.hours=function(){return this.get("hours")},m.asHours=function(){return this.as("hours")},m.days=function(){return this.get("days")},m.asDays=function(){return this.as("days")},m.weeks=function(){return this.get("weeks")},m.asWeeks=function(){return this.as("weeks")},m.months=function(){return this.get("months")},m.asMonths=function(){return this.as("months")},m.years=function(){return this.get("years")},m.asYears=function(){return this.as("years")},p}();return function(n,r,i){e=i,t=i().$utils(),i.duration=function(e,t){var n=i.locale();return d(e,{$l:n},t)},i.isDuration=f;var o=r.prototype.add,a=r.prototype.subtract;r.prototype.add=function(e,t){return f(e)&&(e=e.asMilliseconds()),o.bind(this)(e,t)},r.prototype.subtract=function(e,t){return f(e)&&(e=e.asMilliseconds()),a.bind(this)(e,t)}}}()},443:function(e){e.exports=function(){"use strict";var e={year:0,month:1,day:2,hour:3,minute:4,second:5},t={};return function(n,r,i){var o,a=function(e,n,r){void 0===r&&(r={});var i=new Date(e),o=function(e,n){void 0===n&&(n={});var r=n.timeZoneName||"short",i=e+"|"+r,o=t[i];return o||(o=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:r}),t[i]=o),o}(n,r);return o.formatToParts(i)},u=function(t,n){for(var r=a(t,n),o=[],u=0;u<r.length;u+=1){var l=r[u],c=l.type,s=l.value,f=e[c];f>=0&&(o[f]=parseInt(s,10))}var d=o[3],h=24===d?0:d,p=o[0]+"-"+o[1]+"-"+o[2]+" "+h+":"+o[4]+":"+o[5]+":000",v=+t;return(i.utc(p).valueOf()-(v-=v%1e3))/6e4},l=r.prototype;l.tz=function(e,t){void 0===e&&(e=o);var n=this.utcOffset(),r=this.toDate(),a=r.toLocaleString("en-US",{timeZone:e}),u=Math.round((r-new Date(a))/1e3/60),l=i(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(r.getTimezoneOffset()/15)-u,!0);if(t){var c=l.utcOffset();l=l.add(n-c,"minute")}return l.$x.$timezone=e,l},l.offsetName=function(e){var t=this.$x.$timezone||i.tz.guess(),n=a(this.valueOf(),t,{timeZoneName:e}).find((function(e){return"timezonename"===e.type.toLowerCase()}));return n&&n.value};var c=l.startOf;l.startOf=function(e,t){if(!this.$x||!this.$x.$timezone)return c.call(this,e,t);var n=i(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return c.call(n,e,t).tz(this.$x.$timezone,!0)},i.tz=function(e,t,n){var r=n&&t,a=n||t||o,l=u(+i(),a);if("string"!=typeof e)return i(e).tz(a);var c=function(e,t,n){var r=e-60*t*1e3,i=u(r,n);if(t===i)return[r,t];var o=u(r-=60*(i-t)*1e3,n);return i===o?[r,i]:[e-60*Math.min(i,o)*1e3,Math.max(i,o)]}(i.utc(e,r).valueOf(),l,a),s=c[0],f=c[1],d=i(s).utcOffset(f);return d.$x.$timezone=a,d},i.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},i.tz.setDefault=function(e){o=e}}}()},635:function(e){e.exports=function(){"use strict";var e="minute",t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(r,i,o){var a=i.prototype;o.utc=function(e){return new i({date:e,utc:!0,args:arguments})},a.utc=function(t){var n=o(this.toDate(),{locale:this.$L,utc:!0});return t?n.add(this.utcOffset(),e):n},a.local=function(){return o(this.toDate(),{locale:this.$L,utc:!1})};var u=a.parse;a.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),u.call(this,e)};var l=a.init;a.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else l.call(this)};var c=a.utcOffset;a.utcOffset=function(r,i){var o=this.$utils().u;if(o(r))return this.$u?0:o(this.$offset)?c.call(this):this.$offset;if("string"==typeof r&&(r=function(e){void 0===e&&(e="");var r=e.match(t);if(!r)return null;var i=(""+r[0]).match(n)||["-",0,0],o=i[0],a=60*+i[1]+ +i[2];return 0===a?0:"+"===o?a:-a}(r),null===r))return this;var a=Math.abs(r)<=16?60*r:r,u=this;if(i)return u.$offset=a,u.$u=0===r,u;if(0!==r){var l=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(u=this.local().add(a+l,e)).$offset=a,u.$x.$localOffset=l}else u=this.utc();return u};var s=a.format;a.format=function(e){var t=e||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return s.call(this,t)},a.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},a.isUTC=function(){return!!this.$u},a.toISOString=function(){return this.toDate().toISOString()},a.toString=function(){return this.toDate().toUTCString()};var f=a.toDate;a.toDate=function(e){return"s"===e&&this.$offset?o(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():f.call(this)};var d=a.diff;a.diff=function(e,t,n){if(e&&this.$u===e.$u)return d.call(this,e,t,n);var r=this.local(),i=o(e).local();return d.call(r,i,t,n)}}}()},781:function(e){"use strict";var t="Function.prototype.bind called on incompatible ",n=Array.prototype.slice,r=Object.prototype.toString,i="[object Function]";e.exports=function(e){var o=this;if("function"!==typeof o||r.call(o)!==i)throw new TypeError(t+o);for(var a,u=n.call(arguments,1),l=function(){if(this instanceof a){var t=o.apply(this,u.concat(n.call(arguments)));return Object(t)===t?t:this}return o.apply(e,u.concat(n.call(arguments)))},c=Math.max(0,o.length-u.length),s=[],f=0;f<c;f++)s.push("$"+f);if(a=Function("binder","return function ("+s.join(",")+"){ return binder.apply(this,arguments); }")(l),o.prototype){var d=function(){};d.prototype=o.prototype,a.prototype=new d,d.prototype=null}return a}},199:function(e,t,n){"use strict";var r=n(781);e.exports=Function.prototype.bind||r},476:function(e,t,n){"use strict";var r,i=SyntaxError,o=Function,a=TypeError,u=function(e){try{return o('"use strict"; return ('+e+").constructor;")()}catch(t){}},l=Object.getOwnPropertyDescriptor;if(l)try{l({},"")}catch(N){l=null}var c=function(){throw new a},s=l?function(){try{return c}catch(e){try{return l(arguments,"callee").get}catch(t){return c}}}():c,f=n(520)(),d=Object.getPrototypeOf||function(e){return e.__proto__},h={},p="undefined"===typeof Uint8Array?r:d(Uint8Array),v={"%AggregateError%":"undefined"===typeof AggregateError?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"===typeof ArrayBuffer?r:ArrayBuffer,"%ArrayIteratorPrototype%":f?d([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":h,"%AsyncGenerator%":h,"%AsyncGeneratorFunction%":h,"%AsyncIteratorPrototype%":h,"%Atomics%":"undefined"===typeof Atomics?r:Atomics,"%BigInt%":"undefined"===typeof BigInt?r:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"===typeof DataView?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"===typeof Float32Array?r:Float32Array,"%Float64Array%":"undefined"===typeof Float64Array?r:Float64Array,"%FinalizationRegistry%":"undefined"===typeof FinalizationRegistry?r:FinalizationRegistry,"%Function%":o,"%GeneratorFunction%":h,"%Int8Array%":"undefined"===typeof Int8Array?r:Int8Array,"%Int16Array%":"undefined"===typeof Int16Array?r:Int16Array,"%Int32Array%":"undefined"===typeof Int32Array?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":f?d(d([][Symbol.iterator]())):r,"%JSON%":"object"===typeof JSON?JSON:r,"%Map%":"undefined"===typeof Map?r:Map,"%MapIteratorPrototype%":"undefined"!==typeof Map&&f?d((new Map)[Symbol.iterator]()):r,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"===typeof Promise?r:Promise,"%Proxy%":"undefined"===typeof Proxy?r:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"===typeof Reflect?r:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"===typeof Set?r:Set,"%SetIteratorPrototype%":"undefined"!==typeof Set&&f?d((new Set)[Symbol.iterator]()):r,"%SharedArrayBuffer%":"undefined"===typeof SharedArrayBuffer?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":f?d(""[Symbol.iterator]()):r,"%Symbol%":f?Symbol:r,"%SyntaxError%":i,"%ThrowTypeError%":s,"%TypedArray%":p,"%TypeError%":a,"%Uint8Array%":"undefined"===typeof Uint8Array?r:Uint8Array,"%Uint8ClampedArray%":"undefined"===typeof Uint8ClampedArray?r:Uint8ClampedArray,"%Uint16Array%":"undefined"===typeof Uint16Array?r:Uint16Array,"%Uint32Array%":"undefined"===typeof Uint32Array?r:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"===typeof WeakMap?r:WeakMap,"%WeakRef%":"undefined"===typeof WeakRef?r:WeakRef,"%WeakSet%":"undefined"===typeof WeakSet?r:WeakSet},m=function e(t){var n;if("%AsyncFunction%"===t)n=u("async function () {}");else if("%GeneratorFunction%"===t)n=u("function* () {}");else if("%AsyncGeneratorFunction%"===t)n=u("async function* () {}");else if("%AsyncGenerator%"===t){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if("%AsyncIteratorPrototype%"===t){var i=e("%AsyncGenerator%");i&&(n=d(i.prototype))}return v[t]=n,n},g={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},y=n(199),_=n(838),b=y.call(Function.call,Array.prototype.concat),D=y.call(Function.apply,Array.prototype.splice),w=y.call(Function.call,String.prototype.replace),x=y.call(Function.call,String.prototype.slice),k=y.call(Function.call,RegExp.prototype.exec),C=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,A=/\\(\\)?/g,E=function(e){var t=x(e,0,1),n=x(e,-1);if("%"===t&&"%"!==n)throw new i("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new i("invalid intrinsic syntax, expected opening `%`");var r=[];return w(e,C,(function(e,t,n,i){r[r.length]=n?w(i,A,"$1"):t||e})),r},S=function(e,t){var n,r=e;if(_(g,r)&&(r="%"+(n=g[r])[0]+"%"),_(v,r)){var o=v[r];if(o===h&&(o=m(r)),"undefined"===typeof o&&!t)throw new a("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:n,name:r,value:o}}throw new i("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!==typeof e||0===e.length)throw new a("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!==typeof t)throw new a('"allowMissing" argument must be a boolean');if(null===k(/^%?[^%]*%?$/,e))throw new i("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=E(e),r=n.length>0?n[0]:"",o=S("%"+r+"%",t),u=o.name,c=o.value,s=!1,f=o.alias;f&&(r=f[0],D(n,b([0,1],f)));for(var d=1,h=!0;d<n.length;d+=1){var p=n[d],m=x(p,0,1),g=x(p,-1);if(('"'===m||"'"===m||"`"===m||'"'===g||"'"===g||"`"===g)&&m!==g)throw new i("property names with quotes must have matching quotes");if("constructor"!==p&&h||(s=!0),_(v,u="%"+(r+="."+p)+"%"))c=v[u];else if(null!=c){if(!(p in c)){if(!t)throw new a("base intrinsic for "+e+" exists, but the property is not available.");return}if(l&&d+1>=n.length){var y=l(c,p);c=(h=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:c[p]}else h=_(c,p),c=c[p];h&&!s&&(v[u]=c)}}return c}},520:function(e,t,n){"use strict";var r="undefined"!==typeof Symbol&&Symbol,i=n(541);e.exports=function(){return"function"===typeof r&&("function"===typeof Symbol&&("symbol"===typeof r("foo")&&("symbol"===typeof Symbol("bar")&&i())))}},541:function(e){"use strict";e.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"===typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"===typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},838:function(e,t,n){"use strict";var r=n(199);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},936:function(e,t,n){var r=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,a=/^0o[0-7]+$/i,u=parseInt,l="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,c="object"==typeof self&&self&&self.Object===Object&&self,s=l||c||Function("return this")(),f=Object.prototype.toString,d=Math.max,h=Math.min,p=function(){return s.Date.now()};function v(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function m(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==f.call(e)}(e))return NaN;if(v(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=v(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(r,"");var n=o.test(e);return n||a.test(e)?u(e.slice(2),n?2:8):i.test(e)?NaN:+e}e.exports=function(e,t,n){var r,i,o,a,u,l,c=0,s=!1,f=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var n=r,o=i;return r=i=void 0,c=t,a=e.apply(o,n)}function _(e){return c=e,u=setTimeout(D,t),s?y(e):a}function b(e){var n=e-l;return void 0===l||n>=t||n<0||f&&e-c>=o}function D(){var e=p();if(b(e))return w(e);u=setTimeout(D,function(e){var n=t-(e-l);return f?h(n,o-(e-c)):n}(e))}function w(e){return u=void 0,g&&r?y(e):(r=i=void 0,a)}function x(){var e=p(),n=b(e);if(r=arguments,i=this,l=e,n){if(void 0===u)return _(l);if(f)return u=setTimeout(D,t),y(l)}return void 0===u&&(u=setTimeout(D,t)),a}return t=m(t)||0,v(n)&&(s=!!n.leading,o=(f="maxWait"in n)?d(m(n.maxWait)||0,t):o,g="trailing"in n?!!n.trailing:g),x.cancel=function(){void 0!==u&&clearTimeout(u),c=0,r=l=i=u=void 0},x.flush=function(){return void 0===u?a:w(p())},x}},7:function(e,t,n){var r="__lodash_hash_undefined__",i="[object Function]",o="[object GeneratorFunction]",a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/,l=/^\./,c=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,s=/\\(\\)?/g,f=/^\[object .+?Constructor\]$/,d="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,h="object"==typeof self&&self&&self.Object===Object&&self,p=d||h||Function("return this")();var v=Array.prototype,m=Function.prototype,g=Object.prototype,y=p["__core-js_shared__"],_=function(){var e=/[^.]+$/.exec(y&&y.keys&&y.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),b=m.toString,D=g.hasOwnProperty,w=g.toString,x=RegExp("^"+b.call(D).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),k=p.Symbol,C=v.splice,A=P(p,"Map"),E=P(Object,"create"),S=k?k.prototype:void 0,N=S?S.toString:void 0;function F(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function M(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function T(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function O(e,t){for(var n,r,i=e.length;i--;)if((n=e[i][0])===(r=t)||n!==n&&r!==r)return i;return-1}function B(e,t){var n;t=function(e,t){if($(e))return!1;var n=typeof e;if("number"==n||"symbol"==n||"boolean"==n||null==e||U(e))return!0;return u.test(e)||!a.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:$(n=t)?n:R(n);for(var r=0,i=t.length;null!=e&&r<i;)e=e[z(t[r++])];return r&&r==i?e:void 0}function L(e){if(!H(e)||(t=e,_&&_ in t))return!1;var t,n=function(e){var t=H(e)?w.call(e):"";return t==i||t==o}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(n){}return t}(e)?x:f;return n.test(function(e){if(null!=e){try{return b.call(e)}catch(t){}try{return e+""}catch(t){}}return""}(e))}function I(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function P(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return L(n)?n:void 0}F.prototype.clear=function(){this.__data__=E?E(null):{}},F.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},F.prototype.get=function(e){var t=this.__data__;if(E){var n=t[e];return n===r?void 0:n}return D.call(t,e)?t[e]:void 0},F.prototype.has=function(e){var t=this.__data__;return E?void 0!==t[e]:D.call(t,e)},F.prototype.set=function(e,t){return this.__data__[e]=E&&void 0===t?r:t,this},M.prototype.clear=function(){this.__data__=[]},M.prototype.delete=function(e){var t=this.__data__,n=O(t,e);return!(n<0)&&(n==t.length-1?t.pop():C.call(t,n,1),!0)},M.prototype.get=function(e){var t=this.__data__,n=O(t,e);return n<0?void 0:t[n][1]},M.prototype.has=function(e){return O(this.__data__,e)>-1},M.prototype.set=function(e,t){var n=this.__data__,r=O(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},T.prototype.clear=function(){this.__data__={hash:new F,map:new(A||M),string:new F}},T.prototype.delete=function(e){return I(this,e).delete(e)},T.prototype.get=function(e){return I(this,e).get(e)},T.prototype.has=function(e){return I(this,e).has(e)},T.prototype.set=function(e,t){return I(this,e).set(e,t),this};var R=j((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(U(e))return N?N.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(t);var n=[];return l.test(e)&&n.push(""),e.replace(c,(function(e,t,r,i){n.push(r?i.replace(s,"$1"):t||e)})),n}));function z(e){if("string"==typeof e||U(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function j(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function n(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a),a};return n.cache=new(j.Cache||T),n}j.Cache=T;var $=Array.isArray;function H(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function U(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==w.call(e)}e.exports=function(e,t,n){var r=null==e?void 0:B(e,t);return void 0===r?n:r}},61:function(e,t,n){var r="Expected a function",i=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,u=/^0o[0-7]+$/i,l=parseInt,c="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,s="object"==typeof self&&self&&self.Object===Object&&self,f=c||s||Function("return this")(),d=Object.prototype.toString,h=Math.max,p=Math.min,v=function(){return f.Date.now()};function m(e,t,n){var i,o,a,u,l,c,s=0,f=!1,d=!1,m=!0;if("function"!=typeof e)throw new TypeError(r);function _(t){var n=i,r=o;return i=o=void 0,s=t,u=e.apply(r,n)}function b(e){return s=e,l=setTimeout(w,t),f?_(e):u}function D(e){var n=e-c;return void 0===c||n>=t||n<0||d&&e-s>=a}function w(){var e=v();if(D(e))return x(e);l=setTimeout(w,function(e){var n=t-(e-c);return d?p(n,a-(e-s)):n}(e))}function x(e){return l=void 0,m&&i?_(e):(i=o=void 0,u)}function k(){var e=v(),n=D(e);if(i=arguments,o=this,c=e,n){if(void 0===l)return b(c);if(d)return l=setTimeout(w,t),_(c)}return void 0===l&&(l=setTimeout(w,t)),u}return t=y(t)||0,g(n)&&(f=!!n.leading,a=(d="maxWait"in n)?h(y(n.maxWait)||0,t):a,m="trailing"in n?!!n.trailing:m),k.cancel=function(){void 0!==l&&clearTimeout(l),s=0,i=c=o=l=void 0},k.flush=function(){return void 0===l?u:x(v())},k}function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function y(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==d.call(e)}(e))return NaN;if(g(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var n=a.test(e);return n||u.test(e)?l(e.slice(2),n?2:8):o.test(e)?NaN:+e}e.exports=function(e,t,n){var i=!0,o=!0;if("function"!=typeof e)throw new TypeError(r);return g(n)&&(i="leading"in n?!!n.leading:i,o="trailing"in n?!!n.trailing:o),m(e,t,{leading:i,maxWait:t,trailing:o})}},154:function(e,t,n){var r="function"===typeof Map&&Map.prototype,i=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,o=r&&i&&"function"===typeof i.get?i.get:null,a=r&&Map.prototype.forEach,u="function"===typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&u?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=u&&l&&"function"===typeof l.get?l.get:null,s=u&&Set.prototype.forEach,f="function"===typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,d="function"===typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,h="function"===typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,p=Boolean.prototype.valueOf,v=Object.prototype.toString,m=Function.prototype.toString,g=String.prototype.match,y=String.prototype.slice,_=String.prototype.replace,b=String.prototype.toUpperCase,D=String.prototype.toLowerCase,w=RegExp.prototype.test,x=Array.prototype.concat,k=Array.prototype.join,C=Array.prototype.slice,A=Math.floor,E="function"===typeof BigInt?BigInt.prototype.valueOf:null,S=Object.getOwnPropertySymbols,N="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?Symbol.prototype.toString:null,F="function"===typeof Symbol&&"object"===typeof Symbol.iterator,M="function"===typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===F||"symbol")?Symbol.toStringTag:null,T=Object.prototype.propertyIsEnumerable,O=("function"===typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function B(e,t){if(e===1/0||e===-1/0||e!==e||e&&e>-1e3&&e<1e3||w.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"===typeof e){var r=e<0?-A(-e):A(e);if(r!==e){var i=String(r),o=y.call(t,i.length+1);return _.call(i,n,"$&_")+"."+_.call(_.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return _.call(t,n,"$&_")}var L=n(654),I=L.custom,P=H(I)?I:null;function R(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function z(e){return _.call(String(e),/"/g,""")}function j(e){return"[object Array]"===V(e)&&(!M||!("object"===typeof e&&M in e))}function $(e){return"[object RegExp]"===V(e)&&(!M||!("object"===typeof e&&M in e))}function H(e){if(F)return e&&"object"===typeof e&&e instanceof Symbol;if("symbol"===typeof e)return!0;if(!e||"object"!==typeof e||!N)return!1;try{return N.call(e),!0}catch(t){}return!1}e.exports=function e(t,n,r,i){var u=n||{};if(Y(u,"quoteStyle")&&"single"!==u.quoteStyle&&"double"!==u.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Y(u,"maxStringLength")&&("number"===typeof u.maxStringLength?u.maxStringLength<0&&u.maxStringLength!==1/0:null!==u.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!Y(u,"customInspect")||u.customInspect;if("boolean"!==typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Y(u,"indent")&&null!==u.indent&&"\t"!==u.indent&&!(parseInt(u.indent,10)===u.indent&&u.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(Y(u,"numericSeparator")&&"boolean"!==typeof u.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var v=u.numericSeparator;if("undefined"===typeof t)return"undefined";if(null===t)return"null";if("boolean"===typeof t)return t?"true":"false";if("string"===typeof t)return W(t,u);if("number"===typeof t){if(0===t)return 1/0/t>0?"0":"-0";var b=String(t);return v?B(t,b):b}if("bigint"===typeof t){var w=String(t)+"n";return v?B(t,w):w}var A="undefined"===typeof u.depth?5:u.depth;if("undefined"===typeof r&&(r=0),r>=A&&A>0&&"object"===typeof t)return j(t)?"[Array]":"[Object]";var S=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"===typeof e.indent&&e.indent>0))return null;n=k.call(Array(e.indent+1)," ")}return{base:n,prev:k.call(Array(t+1),n)}}(u,r);if("undefined"===typeof i)i=[];else if(q(i,t)>=0)return"[Circular]";function I(t,n,o){if(n&&(i=C.call(i)).push(n),o){var a={depth:u.depth};return Y(u,"quoteStyle")&&(a.quoteStyle=u.quoteStyle),e(t,a,r+1,i)}return e(t,u,r+1,i)}if("function"===typeof t&&!$(t)){var U=function(e){if(e.name)return e.name;var t=g.call(m.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),Q=X(t,I);return"[Function"+(U?": "+U:" (anonymous)")+"]"+(Q.length>0?" { "+k.call(Q,", ")+" }":"")}if(H(t)){var ee=F?_.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(t);return"object"!==typeof t||F?ee:G(ee)}if(function(e){if(!e||"object"!==typeof e)return!1;if("undefined"!==typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"===typeof e.nodeName&&"function"===typeof e.getAttribute}(t)){for(var te="<"+D.call(String(t.nodeName)),ne=t.attributes||[],re=0;re<ne.length;re++)te+=" "+ne[re].name+"="+R(z(ne[re].value),"double",u);return te+=">",t.childNodes&&t.childNodes.length&&(te+="..."),te+="</"+D.call(String(t.nodeName))+">"}if(j(t)){if(0===t.length)return"[]";var ie=X(t,I);return S&&!function(e){for(var t=0;t<e.length;t++)if(q(e[t],"\n")>=0)return!1;return!0}(ie)?"["+K(ie,S)+"]":"[ "+k.call(ie,", ")+" ]"}if(function(e){return"[object Error]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t)){var oe=X(t,I);return"cause"in Error.prototype||!("cause"in t)||T.call(t,"cause")?0===oe.length?"["+String(t)+"]":"{ ["+String(t)+"] "+k.call(oe,", ")+" }":"{ ["+String(t)+"] "+k.call(x.call("[cause]: "+I(t.cause),oe),", ")+" }"}if("object"===typeof t&&l){if(P&&"function"===typeof t[P]&&L)return L(t,{depth:A-r});if("symbol"!==l&&"function"===typeof t.inspect)return t.inspect()}if(function(e){if(!o||!e||"object"!==typeof e)return!1;try{o.call(e);try{c.call(e)}catch(te){return!0}return e instanceof Map}catch(t){}return!1}(t)){var ae=[];return a&&a.call(t,(function(e,n){ae.push(I(n,t,!0)+" => "+I(e,t))})),Z("Map",o.call(t),ae,S)}if(function(e){if(!c||!e||"object"!==typeof e)return!1;try{c.call(e);try{o.call(e)}catch(t){return!0}return e instanceof Set}catch(n){}return!1}(t)){var ue=[];return s&&s.call(t,(function(e){ue.push(I(e,t))})),Z("Set",c.call(t),ue,S)}if(function(e){if(!f||!e||"object"!==typeof e)return!1;try{f.call(e,f);try{d.call(e,d)}catch(te){return!0}return e instanceof WeakMap}catch(t){}return!1}(t))return J("WeakMap");if(function(e){if(!d||!e||"object"!==typeof e)return!1;try{d.call(e,d);try{f.call(e,f)}catch(te){return!0}return e instanceof WeakSet}catch(t){}return!1}(t))return J("WeakSet");if(function(e){if(!h||!e||"object"!==typeof e)return!1;try{return h.call(e),!0}catch(t){}return!1}(t))return J("WeakRef");if(function(e){return"[object Number]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t))return G(I(Number(t)));if(function(e){if(!e||"object"!==typeof e||!E)return!1;try{return E.call(e),!0}catch(t){}return!1}(t))return G(I(E.call(t)));if(function(e){return"[object Boolean]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t))return G(p.call(t));if(function(e){return"[object String]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t))return G(I(String(t)));if(!function(e){return"[object Date]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t)&&!$(t)){var le=X(t,I),ce=O?O(t)===Object.prototype:t instanceof Object||t.constructor===Object,se=t instanceof Object?"":"null prototype",fe=!ce&&M&&Object(t)===t&&M in t?y.call(V(t),8,-1):se?"Object":"",de=(ce||"function"!==typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(fe||se?"["+k.call(x.call([],fe||[],se||[]),": ")+"] ":"");return 0===le.length?de+"{}":S?de+"{"+K(le,S)+"}":de+"{ "+k.call(le,", ")+" }"}return String(t)};var U=Object.prototype.hasOwnProperty||function(e){return e in this};function Y(e,t){return U.call(e,t)}function V(e){return v.call(e)}function q(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function W(e,t){if(e.length>t.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return W(y.call(e,0,t.maxStringLength),t)+r}return R(_.call(_.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,Q),"single",t)}function Q(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+b.call(t.toString(16))}function G(e){return"Object("+e+")"}function J(e){return e+" { ? }"}function Z(e,t,n,r){return e+" ("+t+") {"+(r?K(n,r):k.call(n,", "))+"}"}function K(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+k.call(e,","+n)+"\n"+t.prev}function X(e,t){var n=j(e),r=[];if(n){r.length=e.length;for(var i=0;i<e.length;i++)r[i]=Y(e,i)?t(e[i],e):""}var o,a="function"===typeof S?S(e):[];if(F){o={};for(var u=0;u<a.length;u++)o["$"+a[u]]=a[u]}for(var l in e)Y(e,l)&&(n&&String(Number(l))===l&&l<e.length||F&&o["$"+l]instanceof Symbol||(w.call(/[^\w$]/,l)?r.push(t(l,e)+": "+t(e[l],e)):r.push(l+": "+t(e[l],e))));if("function"===typeof S)for(var c=0;c<a.length;c++)T.call(e,a[c])&&r.push("["+t(a[c])+"]: "+t(e[a[c]],e));return r}},609:function(e){"use strict";var t=String.prototype.replace,n=/%20/g,r="RFC1738",i="RFC3986";e.exports={default:i,formatters:{RFC1738:function(e){return t.call(e,n,"+")},RFC3986:function(e){return String(e)}},RFC1738:r,RFC3986:i}},776:function(e,t,n){"use strict";var r=n(816),i=n(668),o=n(609);e.exports={formats:o,parse:i,stringify:r}},668:function(e,t,n){"use strict";var r=n(837),i=Object.prototype.hasOwnProperty,o=Array.isArray,a={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:r.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},u=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"===typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,n,r){if(e){var o=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/g,u=n.depth>0&&/(\[[^[\]]*])/.exec(o),c=u?o.slice(0,u.index):o,s=[];if(c){if(!n.plainObjects&&i.call(Object.prototype,c)&&!n.allowPrototypes)return;s.push(c)}for(var f=0;n.depth>0&&null!==(u=a.exec(o))&&f<n.depth;){if(f+=1,!n.plainObjects&&i.call(Object.prototype,u[1].slice(1,-1))&&!n.allowPrototypes)return;s.push(u[1])}return u&&s.push("["+o.slice(u.index)+"]"),function(e,t,n,r){for(var i=r?t:l(t,n),o=e.length-1;o>=0;--o){var a,u=e[o];if("[]"===u&&n.parseArrays)a=[].concat(i);else{a=n.plainObjects?Object.create(null):{};var c="["===u.charAt(0)&&"]"===u.charAt(u.length-1)?u.slice(1,-1):u,s=parseInt(c,10);n.parseArrays||""!==c?!isNaN(s)&&u!==c&&String(s)===c&&s>=0&&n.parseArrays&&s<=n.arrayLimit?(a=[])[s]=i:"__proto__"!==c&&(a[c]=i):a={0:i}}i=a}return i}(s,t,n,r)}};e.exports=function(e,t){var n=function(e){if(!e)return a;if(null!==e.decoder&&void 0!==e.decoder&&"function"!==typeof e.decoder)throw new TypeError("Decoder has to be a function.");if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t="undefined"===typeof e.charset?a.charset:e.charset;return{allowDots:"undefined"===typeof e.allowDots?a.allowDots:!!e.allowDots,allowPrototypes:"boolean"===typeof e.allowPrototypes?e.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"===typeof e.allowSparse?e.allowSparse:a.allowSparse,arrayLimit:"number"===typeof e.arrayLimit?e.arrayLimit:a.arrayLimit,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:a.charsetSentinel,comma:"boolean"===typeof e.comma?e.comma:a.comma,decoder:"function"===typeof e.decoder?e.decoder:a.decoder,delimiter:"string"===typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:a.delimiter,depth:"number"===typeof e.depth||!1===e.depth?+e.depth:a.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"===typeof e.interpretNumericEntities?e.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"===typeof e.parameterLimit?e.parameterLimit:a.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"===typeof e.plainObjects?e.plainObjects:a.plainObjects,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:a.strictNullHandling}}(t);if(""===e||null===e||"undefined"===typeof e)return n.plainObjects?Object.create(null):{};for(var s="string"===typeof e?function(e,t){var n,c={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,f=t.parameterLimit===1/0?void 0:t.parameterLimit,d=s.split(t.delimiter,f),h=-1,p=t.charset;if(t.charsetSentinel)for(n=0;n<d.length;++n)0===d[n].indexOf("utf8=")&&("utf8=%E2%9C%93"===d[n]?p="utf-8":"utf8=%26%2310003%3B"===d[n]&&(p="iso-8859-1"),h=n,n=d.length);for(n=0;n<d.length;++n)if(n!==h){var v,m,g=d[n],y=g.indexOf("]="),_=-1===y?g.indexOf("="):y+1;-1===_?(v=t.decoder(g,a.decoder,p,"key"),m=t.strictNullHandling?null:""):(v=t.decoder(g.slice(0,_),a.decoder,p,"key"),m=r.maybeMap(l(g.slice(_+1),t),(function(e){return t.decoder(e,a.decoder,p,"value")}))),m&&t.interpretNumericEntities&&"iso-8859-1"===p&&(m=u(m)),g.indexOf("[]=")>-1&&(m=o(m)?[m]:m),i.call(c,v)?c[v]=r.combine(c[v],m):c[v]=m}return c}(e,n):e,f=n.plainObjects?Object.create(null):{},d=Object.keys(s),h=0;h<d.length;++h){var p=d[h],v=c(p,s[p],n,"string"===typeof e);f=r.merge(f,v,n)}return!0===n.allowSparse?f:r.compact(f)}},816:function(e,t,n){"use strict";var r=n(170),i=n(837),o=n(609),a=Object.prototype.hasOwnProperty,u={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},l=Array.isArray,c=String.prototype.split,s=Array.prototype.push,f=function(e,t){s.apply(e,l(t)?t:[t])},d=Date.prototype.toISOString,h=o.default,p={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:i.encode,encodeValuesOnly:!1,format:h,formatter:o.formatters[h],indices:!1,serializeDate:function(e){return d.call(e)},skipNulls:!1,strictNullHandling:!1},v={},m=function e(t,n,o,a,u,s,d,h,m,g,y,_,b,D,w,x){for(var k,C=t,A=x,E=0,S=!1;void 0!==(A=A.get(v))&&!S;){var N=A.get(t);if(E+=1,"undefined"!==typeof N){if(N===E)throw new RangeError("Cyclic object value");S=!0}"undefined"===typeof A.get(v)&&(E=0)}if("function"===typeof h?C=h(n,C):C instanceof Date?C=y(C):"comma"===o&&l(C)&&(C=i.maybeMap(C,(function(e){return e instanceof Date?y(e):e}))),null===C){if(u)return d&&!D?d(n,p.encoder,w,"key",_):n;C=""}if("string"===typeof(k=C)||"number"===typeof k||"boolean"===typeof k||"symbol"===typeof k||"bigint"===typeof k||i.isBuffer(C)){if(d){var F=D?n:d(n,p.encoder,w,"key",_);if("comma"===o&&D){for(var M=c.call(String(C),","),T="",O=0;O<M.length;++O)T+=(0===O?"":",")+b(d(M[O],p.encoder,w,"value",_));return[b(F)+(a&&l(C)&&1===M.length?"[]":"")+"="+T]}return[b(F)+"="+b(d(C,p.encoder,w,"value",_))]}return[b(n)+"="+b(String(C))]}var B,L=[];if("undefined"===typeof C)return L;if("comma"===o&&l(C))B=[{value:C.length>0?C.join(",")||null:void 0}];else if(l(h))B=h;else{var I=Object.keys(C);B=m?I.sort(m):I}for(var P=a&&l(C)&&1===C.length?n+"[]":n,R=0;R<B.length;++R){var z=B[R],j="object"===typeof z&&"undefined"!==typeof z.value?z.value:C[z];if(!s||null!==j){var $=l(C)?"function"===typeof o?o(P,z):P:P+(g?"."+z:"["+z+"]");x.set(t,E);var H=r();H.set(v,x),f(L,e(j,$,o,a,u,s,d,h,m,g,y,_,b,D,w,H))}}return L};e.exports=function(e,t){var n,i=e,c=function(e){if(!e)return p;if(null!==e.encoder&&"undefined"!==typeof e.encoder&&"function"!==typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||p.charset;if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var n=o.default;if("undefined"!==typeof e.format){if(!a.call(o.formatters,e.format))throw new TypeError("Unknown format option provided.");n=e.format}var r=o.formatters[n],i=p.filter;return("function"===typeof e.filter||l(e.filter))&&(i=e.filter),{addQueryPrefix:"boolean"===typeof e.addQueryPrefix?e.addQueryPrefix:p.addQueryPrefix,allowDots:"undefined"===typeof e.allowDots?p.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:p.charsetSentinel,delimiter:"undefined"===typeof e.delimiter?p.delimiter:e.delimiter,encode:"boolean"===typeof e.encode?e.encode:p.encode,encoder:"function"===typeof e.encoder?e.encoder:p.encoder,encodeValuesOnly:"boolean"===typeof e.encodeValuesOnly?e.encodeValuesOnly:p.encodeValuesOnly,filter:i,format:n,formatter:r,serializeDate:"function"===typeof e.serializeDate?e.serializeDate:p.serializeDate,skipNulls:"boolean"===typeof e.skipNulls?e.skipNulls:p.skipNulls,sort:"function"===typeof e.sort?e.sort:null,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:p.strictNullHandling}}(t);"function"===typeof c.filter?i=(0,c.filter)("",i):l(c.filter)&&(n=c.filter);var s,d=[];if("object"!==typeof i||null===i)return"";s=t&&t.arrayFormat in u?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var h=u[s];if(t&&"commaRoundTrip"in t&&"boolean"!==typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var v="comma"===h&&t&&t.commaRoundTrip;n||(n=Object.keys(i)),c.sort&&n.sort(c.sort);for(var g=r(),y=0;y<n.length;++y){var _=n[y];c.skipNulls&&null===i[_]||f(d,m(i[_],_,h,v,c.strictNullHandling,c.skipNulls,c.encode?c.encoder:null,c.filter,c.sort,c.allowDots,c.serializeDate,c.format,c.formatter,c.encodeValuesOnly,c.charset,g))}var b=d.join(c.delimiter),D=!0===c.addQueryPrefix?"?":"";return c.charsetSentinel&&("iso-8859-1"===c.charset?D+="utf8=%26%2310003%3B&":D+="utf8=%E2%9C%93&"),b.length>0?D+b:""}},837:function(e,t,n){"use strict";var r=n(609),i=Object.prototype.hasOwnProperty,o=Array.isArray,a=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),u=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},r=0;r<e.length;++r)"undefined"!==typeof e[r]&&(n[r]=e[r]);return n};e.exports={arrayToObject:u,assign:function(e,t){return Object.keys(t).reduce((function(e,n){return e[n]=t[n],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],n=[],r=0;r<t.length;++r)for(var i=t[r],a=i.obj[i.prop],u=Object.keys(a),l=0;l<u.length;++l){var c=u[l],s=a[c];"object"===typeof s&&null!==s&&-1===n.indexOf(s)&&(t.push({obj:a,prop:c}),n.push(s))}return function(e){for(;e.length>1;){var t=e.pop(),n=t.obj[t.prop];if(o(n)){for(var r=[],i=0;i<n.length;++i)"undefined"!==typeof n[i]&&r.push(n[i]);t.obj[t.prop]=r}}}(t),e},decode:function(e,t,n){var r=e.replace(/\+/g," ");if("iso-8859-1"===n)return r.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(r)}catch(i){return r}},encode:function(e,t,n,i,o){if(0===e.length)return e;var u=e;if("symbol"===typeof e?u=Symbol.prototype.toString.call(e):"string"!==typeof e&&(u=String(e)),"iso-8859-1"===n)return escape(u).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var l="",c=0;c<u.length;++c){var s=u.charCodeAt(c);45===s||46===s||95===s||126===s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||o===r.RFC1738&&(40===s||41===s)?l+=u.charAt(c):s<128?l+=a[s]:s<2048?l+=a[192|s>>6]+a[128|63&s]:s<55296||s>=57344?l+=a[224|s>>12]+a[128|s>>6&63]+a[128|63&s]:(c+=1,s=65536+((1023&s)<<10|1023&u.charCodeAt(c)),l+=a[240|s>>18]+a[128|s>>12&63]+a[128|s>>6&63]+a[128|63&s])}return l},isBuffer:function(e){return!(!e||"object"!==typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(o(e)){for(var n=[],r=0;r<e.length;r+=1)n.push(t(e[r]));return n}return t(e)},merge:function e(t,n,r){if(!n)return t;if("object"!==typeof n){if(o(t))t.push(n);else{if(!t||"object"!==typeof t)return[t,n];(r&&(r.plainObjects||r.allowPrototypes)||!i.call(Object.prototype,n))&&(t[n]=!0)}return t}if(!t||"object"!==typeof t)return[t].concat(n);var a=t;return o(t)&&!o(n)&&(a=u(t,r)),o(t)&&o(n)?(n.forEach((function(n,o){if(i.call(t,o)){var a=t[o];a&&"object"===typeof a&&n&&"object"===typeof n?t[o]=e(a,n,r):t.push(n)}else t[o]=n})),t):Object.keys(n).reduce((function(t,o){var a=n[o];return i.call(t,o)?t[o]=e(t[o],a,r):t[o]=a,t}),a)}}},170:function(e,t,n){"use strict";var r=n(476),i=n(680),o=n(154),a=r("%TypeError%"),u=r("%WeakMap%",!0),l=r("%Map%",!0),c=i("WeakMap.prototype.get",!0),s=i("WeakMap.prototype.set",!0),f=i("WeakMap.prototype.has",!0),d=i("Map.prototype.get",!0),h=i("Map.prototype.set",!0),p=i("Map.prototype.has",!0),v=function(e,t){for(var n,r=e;null!==(n=r.next);r=n)if(n.key===t)return r.next=n.next,n.next=e.next,e.next=n,n};e.exports=function(){var e,t,n,r={assert:function(e){if(!r.has(e))throw new a("Side channel does not contain "+o(e))},get:function(r){if(u&&r&&("object"===typeof r||"function"===typeof r)){if(e)return c(e,r)}else if(l){if(t)return d(t,r)}else if(n)return function(e,t){var n=v(e,t);return n&&n.value}(n,r)},has:function(r){if(u&&r&&("object"===typeof r||"function"===typeof r)){if(e)return f(e,r)}else if(l){if(t)return p(t,r)}else if(n)return function(e,t){return!!v(e,t)}(n,r);return!1},set:function(r,i){u&&r&&("object"===typeof r||"function"===typeof r)?(e||(e=new u),s(e,r,i)):l?(t||(t=new l),h(t,r,i)):(n||(n={key:{},next:null}),function(e,t,n){var r=v(e,t);r?r.value=n:e.next={key:t,next:e.next,value:n}}(n,r,i))}};return r}},654:function(){}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.m=e,n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))},n.u=function(e){return"static/js/"+e+".c1ccfd29.chunk.js"},n.miniCssF=function(e){},n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={},t="vmui:";n.l=function(r,i,o,a){if(e[r])e[r].push(i);else{var u,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),s=0;s<c.length;s++){var f=c[s];if(f.getAttribute("src")==r||f.getAttribute("data-webpack")==t+o){u=f;break}}u||(l=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,n.nc&&u.setAttribute("nonce",n.nc),u.setAttribute("data-webpack",t+o),u.src=r),e[r]=[i];var d=function(t,n){u.onerror=u.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],u.parentNode&&u.parentNode.removeChild(u),i&&i.forEach((function(e){return e(n)})),t)return t(n)},h=setTimeout(d.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=d.bind(null,u.onerror),u.onload=d.bind(null,u.onload),l&&document.head.appendChild(u)}}}(),n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="./",function(){var e={179:0};n.f.j=function(t,r){var i=n.o(e,t)?e[t]:void 0;if(0!==i)if(i)r.push(i[2]);else{var o=new Promise((function(n,r){i=e[t]=[n,r]}));r.push(i[2]=o);var a=n.p+n.u(t),u=new Error;n.l(a,(function(r){if(n.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",u.name="ChunkLoadError",u.type=o,u.request=a,i[1](u)}}),"chunk-"+t,t)}};var t=function(t,r){var i,o,a=r[0],u=r[1],l=r[2],c=0;if(a.some((function(t){return 0!==e[t]}))){for(i in u)n.o(u,i)&&(n.m[i]=u[i]);if(l)l(n)}for(t&&t(r);c<a.length;c++)o=a[c],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self.webpackChunkvmui=self.webpackChunkvmui||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),function(){"use strict";var e={};n.r(e),n.d(e,{Children:function(){return Se},Component:function(){return y},Fragment:function(){return g},PureComponent:function(){return we},StrictMode:function(){return st},Suspense:function(){return Oe},SuspenseList:function(){return Ie},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:function(){return tt},cloneElement:function(){return ot},createContext:function(){return j},createElement:function(){return p},createFactory:function(){return rt},createPortal:function(){return je},createRef:function(){return m},default:function(){return gt},findDOMNode:function(){return ut},flushSync:function(){return ct},forwardRef:function(){return Ae},hydrate:function(){return qe},isValidElement:function(){return it},lazy:function(){return Le},memo:function(){return xe},render:function(){return Ve},startTransition:function(){return ft},unmountComponentAtNode:function(){return at},unstable_batchedUpdates:function(){return lt},useCallback:function(){return ue},useContext:function(){return le},useDebugValue:function(){return ce},useDeferredValue:function(){return dt},useEffect:function(){return ne},useErrorBoundary:function(){return se},useId:function(){return fe},useImperativeHandle:function(){return oe},useInsertionEffect:function(){return pt},useLayoutEffect:function(){return re},useMemo:function(){return ae},useReducer:function(){return te},useRef:function(){return ie},useState:function(){return ee},useSyncExternalStore:function(){return vt},useTransition:function(){return ht},version:function(){return nt}});var t={};n.r(t),n.d(t,{AlarmIcon:function(){return Zi},ArrowDownIcon:function(){return Wi},ArrowDropDownIcon:function(){return Qi},CalendarIcon:function(){return Ji},ChartIcon:function(){return to},ClockIcon:function(){return Gi},CloseIcon:function(){return ji},CodeIcon:function(){return ro},CopyIcon:function(){return so},DeleteIcon:function(){return io},DoneIcon:function(){return uo},DragIcon:function(){return fo},ErrorIcon:function(){return Yi},InfoIcon:function(){return Hi},IssueIcon:function(){return vo},KeyboardIcon:function(){return Ki},LogoFullIcon:function(){return Pi},LogoIcon:function(){return Ri},MinusIcon:function(){return ao},MoreIcon:function(){return yo},PlayCircleOutlineIcon:function(){return eo},PlayIcon:function(){return Xi},PlusIcon:function(){return oo},QuestionIcon:function(){return mo},RefreshIcon:function(){return qi},RestartIcon:function(){return $i},SettingsIcon:function(){return zi},StorageIcon:function(){return go},SuccessIcon:function(){return Vi},TableIcon:function(){return no},TimelineIcon:function(){return ho},TuneIcon:function(){return _o},VisibilityIcon:function(){return lo},VisibilityOffIcon:function(){return co},WarningIcon:function(){return Ui},WikiIcon:function(){return po}});var r,i,o,a,u,l,c={},s=[],f=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function d(e,t){for(var n in t)e[n]=t[n];return e}function h(e){var t=e.parentNode;t&&t.removeChild(e)}function p(e,t,n){var i,o,a,u={};for(a in t)"key"==a?i=t[a]:"ref"==a?o=t[a]:u[a]=t[a];if(arguments.length>2&&(u.children=arguments.length>3?r.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===u[a]&&(u[a]=e.defaultProps[a]);return v(e,u,i,o,null)}function v(e,t,n,r,a){var u={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==a?++o:a};return null==a&&null!=i.vnode&&i.vnode(u),u}function m(){return{current:null}}function g(e){return e.children}function y(e,t){this.props=e,this.context=t}function _(e,t){if(null==t)return e.__?_(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?_(e):null}function b(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return b(e)}}function D(e){(!e.__d&&(e.__d=!0)&&a.push(e)&&!w.__r++||u!==i.debounceRendering)&&((u=i.debounceRendering)||setTimeout)(w)}function w(){for(var e;w.__r=a.length;)e=a.sort((function(e,t){return e.__v.__b-t.__v.__b})),a=[],e.some((function(e){var t,n,r,i,o,a;e.__d&&(o=(i=(t=e).__v).__e,(a=t.__P)&&(n=[],(r=d({},i)).__v=i.__v+1,M(a,i,r,t.__n,void 0!==a.ownerSVGElement,null!=i.__h?[o]:null,n,null==o?_(i):o,i.__h),T(n,i),i.__e!=o&&b(i)))}))}function x(e,t,n,r,i,o,a,u,l,f){var d,h,p,m,y,b,D,w=r&&r.__k||s,x=w.length;for(n.__k=[],d=0;d<t.length;d++)if(null!=(m=n.__k[d]=null==(m=t[d])||"boolean"==typeof m?null:"string"==typeof m||"number"==typeof m||"bigint"==typeof m?v(null,m,null,null,m):Array.isArray(m)?v(g,{children:m},null,null,null):m.__b>0?v(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)){if(m.__=n,m.__b=n.__b+1,null===(p=w[d])||p&&m.key==p.key&&m.type===p.type)w[d]=void 0;else for(h=0;h<x;h++){if((p=w[h])&&m.key==p.key&&m.type===p.type){w[h]=void 0;break}p=null}M(e,m,p=p||c,i,o,a,u,l,f),y=m.__e,(h=m.ref)&&p.ref!=h&&(D||(D=[]),p.ref&&D.push(p.ref,null,m),D.push(h,m.__c||y,m)),null!=y?(null==b&&(b=y),"function"==typeof m.type&&m.__k===p.__k?m.__d=l=k(m,l,e):l=A(e,m,p,w,y,l),"function"==typeof n.type&&(n.__d=l)):l&&p.__e==l&&l.parentNode!=e&&(l=_(p))}for(n.__e=b,d=x;d--;)null!=w[d]&&L(w[d],w[d]);if(D)for(d=0;d<D.length;d++)B(D[d],D[++d],D[++d])}function k(e,t,n){for(var r,i=e.__k,o=0;i&&o<i.length;o++)(r=i[o])&&(r.__=e,t="function"==typeof r.type?k(r,t,n):A(n,r,r,i,r.__e,t));return t}function C(e,t){return t=t||[],null==e||"boolean"==typeof e||(Array.isArray(e)?e.some((function(e){C(e,t)})):t.push(e)),t}function A(e,t,n,r,i,o){var a,u,l;if(void 0!==t.__d)a=t.__d,t.__d=void 0;else if(null==n||i!=o||null==i.parentNode)e:if(null==o||o.parentNode!==e)e.appendChild(i),a=null;else{for(u=o,l=0;(u=u.nextSibling)&&l<r.length;l+=1)if(u==i)break e;e.insertBefore(i,o),a=o}return void 0!==a?a:i.nextSibling}function E(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||f.test(t)?n:n+"px"}function S(e,t,n,r,i){var o;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||E(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||E(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])o=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?r||e.addEventListener(t,o?F:N,o):e.removeEventListener(t,o?F:N,o);else if("dangerouslySetInnerHTML"!==t){if(i)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&-1==t.indexOf("-")?e.removeAttribute(t):e.setAttribute(t,n))}}function N(e){this.l[e.type+!1](i.event?i.event(e):e)}function F(e){this.l[e.type+!0](i.event?i.event(e):e)}function M(e,t,n,r,o,a,u,l,c){var s,f,h,p,v,m,_,b,D,w,k,C,A,E,S,N=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(c=n.__h,l=t.__e=n.__e,t.__h=null,a=[l]),(s=i.__b)&&s(t);try{e:if("function"==typeof N){if(b=t.props,D=(s=N.contextType)&&r[s.__c],w=s?D?D.props.value:s.__:r,n.__c?_=(f=t.__c=n.__c).__=f.__E:("prototype"in N&&N.prototype.render?t.__c=f=new N(b,w):(t.__c=f=new y(b,w),f.constructor=N,f.render=I),D&&D.sub(f),f.props=b,f.state||(f.state={}),f.context=w,f.__n=r,h=f.__d=!0,f.__h=[],f._sb=[]),null==f.__s&&(f.__s=f.state),null!=N.getDerivedStateFromProps&&(f.__s==f.state&&(f.__s=d({},f.__s)),d(f.__s,N.getDerivedStateFromProps(b,f.__s))),p=f.props,v=f.state,h)null==N.getDerivedStateFromProps&&null!=f.componentWillMount&&f.componentWillMount(),null!=f.componentDidMount&&f.__h.push(f.componentDidMount);else{if(null==N.getDerivedStateFromProps&&b!==p&&null!=f.componentWillReceiveProps&&f.componentWillReceiveProps(b,w),!f.__e&&null!=f.shouldComponentUpdate&&!1===f.shouldComponentUpdate(b,f.__s,w)||t.__v===n.__v){for(f.props=b,f.state=f.__s,t.__v!==n.__v&&(f.__d=!1),f.__v=t,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),k=0;k<f._sb.length;k++)f.__h.push(f._sb[k]);f._sb=[],f.__h.length&&u.push(f);break e}null!=f.componentWillUpdate&&f.componentWillUpdate(b,f.__s,w),null!=f.componentDidUpdate&&f.__h.push((function(){f.componentDidUpdate(p,v,m)}))}if(f.context=w,f.props=b,f.__v=t,f.__P=e,C=i.__r,A=0,"prototype"in N&&N.prototype.render){for(f.state=f.__s,f.__d=!1,C&&C(t),s=f.render(f.props,f.state,f.context),E=0;E<f._sb.length;E++)f.__h.push(f._sb[E]);f._sb=[]}else do{f.__d=!1,C&&C(t),s=f.render(f.props,f.state,f.context),f.state=f.__s}while(f.__d&&++A<25);f.state=f.__s,null!=f.getChildContext&&(r=d(d({},r),f.getChildContext())),h||null==f.getSnapshotBeforeUpdate||(m=f.getSnapshotBeforeUpdate(p,v)),S=null!=s&&s.type===g&&null==s.key?s.props.children:s,x(e,Array.isArray(S)?S:[S],t,n,r,o,a,u,l,c),f.base=t.__e,t.__h=null,f.__h.length&&u.push(f),_&&(f.__E=f.__=null),f.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=O(n.__e,t,n,r,o,a,u,c);(s=i.diffed)&&s(t)}catch(e){t.__v=null,(c||null!=a)&&(t.__e=l,t.__h=!!c,a[a.indexOf(l)]=null),i.__e(e,t,n)}}function T(e,t){i.__c&&i.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){i.__e(e,t.__v)}}))}function O(e,t,n,i,o,a,u,l){var s,f,d,p=n.props,v=t.props,m=t.type,g=0;if("svg"===m&&(o=!0),null!=a)for(;g<a.length;g++)if((s=a[g])&&"setAttribute"in s==!!m&&(m?s.localName===m:3===s.nodeType)){e=s,a[g]=null;break}if(null==e){if(null===m)return document.createTextNode(v);e=o?document.createElementNS("http://www.w3.org/2000/svg",m):document.createElement(m,v.is&&v),a=null,l=!1}if(null===m)p===v||l&&e.data===v||(e.data=v);else{if(a=a&&r.call(e.childNodes),f=(p=n.props||c).dangerouslySetInnerHTML,d=v.dangerouslySetInnerHTML,!l){if(null!=a)for(p={},g=0;g<e.attributes.length;g++)p[e.attributes[g].name]=e.attributes[g].value;(d||f)&&(d&&(f&&d.__html==f.__html||d.__html===e.innerHTML)||(e.innerHTML=d&&d.__html||""))}if(function(e,t,n,r,i){var o;for(o in n)"children"===o||"key"===o||o in t||S(e,o,null,n[o],r);for(o in t)i&&"function"!=typeof t[o]||"children"===o||"key"===o||"value"===o||"checked"===o||n[o]===t[o]||S(e,o,t[o],n[o],r)}(e,v,p,o,l),d)t.__k=[];else if(g=t.props.children,x(e,Array.isArray(g)?g:[g],t,n,i,o&&"foreignObject"!==m,a,u,a?a[0]:n.__k&&_(n,0),l),null!=a)for(g=a.length;g--;)null!=a[g]&&h(a[g]);l||("value"in v&&void 0!==(g=v.value)&&(g!==e.value||"progress"===m&&!g||"option"===m&&g!==p.value)&&S(e,"value",g,p.value,!1),"checked"in v&&void 0!==(g=v.checked)&&g!==e.checked&&S(e,"checked",g,p.checked,!1))}return e}function B(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){i.__e(e,n)}}function L(e,t,n){var r,o;if(i.unmount&&i.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||B(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){i.__e(e,t)}r.base=r.__P=null,e.__c=void 0}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&L(r[o],t,n||"function"!=typeof e.type);n||null==e.__e||h(e.__e),e.__=e.__e=e.__d=void 0}function I(e,t,n){return this.constructor(e,n)}function P(e,t,n){var o,a,u;i.__&&i.__(e,t),a=(o="function"==typeof n)?null:n&&n.__k||t.__k,u=[],M(t,e=(!o&&n||t).__k=p(g,null,[e]),a||c,c,void 0!==t.ownerSVGElement,!o&&n?[n]:a?null:t.firstChild?r.call(t.childNodes):null,u,!o&&n?n:a?a.__e:t.firstChild,o),T(u,e)}function R(e,t){P(e,t,R)}function z(e,t,n){var i,o,a,u=d({},e.props);for(a in t)"key"==a?i=t[a]:"ref"==a?o=t[a]:u[a]=t[a];return arguments.length>2&&(u.children=arguments.length>3?r.call(arguments,2):n),v(e.type,u,i||e.key,o||e.ref,null)}function j(e,t){var n={__c:t="__cC"+l++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var n,r;return this.getChildContext||(n=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some(D)},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n}r=s.slice,i={__e:function(e,t,n,r){for(var i,o,a;t=t.__;)if((i=t.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(e)),a=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e,r||{}),a=i.__d),a)return i.__E=i}catch(t){e=t}throw e}},o=0,y.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),"function"==typeof e&&(e=e(d({},n),this.props)),e&&d(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),D(this))},y.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),D(this))},y.prototype.render=g,a=[],w.__r=0,l=0;var $,H,U,Y,V=0,q=[],W=[],Q=i.__b,G=i.__r,J=i.diffed,Z=i.__c,K=i.unmount;function X(e,t){i.__h&&i.__h(H,e,V||t),V=0;var n=H.__H||(H.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({__V:W}),n.__[e]}function ee(e){return V=1,te(ye,e)}function te(e,t,n){var r=X($++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):ye(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=H,!H.u)){H.u=!0;var i=H.shouldComponentUpdate;H.shouldComponentUpdate=function(e,t,n){if(!r.__c.__H)return!0;var o=r.__c.__H.__.filter((function(e){return e.__c}));if(o.every((function(e){return!e.__N})))return!i||i.call(this,e,t,n);var a=!1;return o.forEach((function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(a=!0)}})),!(!a&&r.__c.props===e)&&(!i||i.call(this,e,t,n))}}return r.__N||r.__}function ne(e,t){var n=X($++,3);!i.__s&&ge(n.__H,t)&&(n.__=e,n.i=t,H.__H.__h.push(n))}function re(e,t){var n=X($++,4);!i.__s&&ge(n.__H,t)&&(n.__=e,n.i=t,H.__h.push(n))}function ie(e){return V=5,ae((function(){return{current:e}}),[])}function oe(e,t,n){V=6,re((function(){return"function"==typeof e?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0}),null==n?n:n.concat(e))}function ae(e,t){var n=X($++,7);return ge(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}function ue(e,t){return V=8,ae((function(){return e}),t)}function le(e){var t=H.context[e.__c],n=X($++,9);return n.c=e,t?(null==n.__&&(n.__=!0,t.sub(H)),t.props.value):e.__}function ce(e,t){i.useDebugValue&&i.useDebugValue(t?t(e):e)}function se(e){var t=X($++,10),n=ee();return t.__=e,H.componentDidCatch||(H.componentDidCatch=function(e,r){t.__&&t.__(e,r),n[1](e)}),[n[0],function(){n[1](void 0)}]}function fe(){var e=X($++,11);if(!e.__){for(var t=H.__v;null!==t&&!t.__m&&null!==t.__;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function de(){for(var e;e=q.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ve),e.__H.__h.forEach(me),e.__H.__h=[]}catch(l){e.__H.__h=[],i.__e(l,e.__v)}}i.__b=function(e){H=null,Q&&Q(e)},i.__r=function(e){G&&G(e),$=0;var t=(H=e.__c).__H;t&&(U===H?(t.__h=[],H.__h=[],t.__.forEach((function(e){e.__N&&(e.__=e.__N),e.__V=W,e.__N=e.i=void 0}))):(t.__h.forEach(ve),t.__h.forEach(me),t.__h=[])),U=H},i.diffed=function(e){J&&J(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==q.push(t)&&Y===i.requestAnimationFrame||((Y=i.requestAnimationFrame)||pe)(de)),t.__H.__.forEach((function(e){e.i&&(e.__H=e.i),e.__V!==W&&(e.__=e.__V),e.i=void 0,e.__V=W}))),U=H=null},i.__c=function(e,t){t.some((function(e){try{e.__h.forEach(ve),e.__h=e.__h.filter((function(e){return!e.__||me(e)}))}catch(o){t.some((function(e){e.__h&&(e.__h=[])})),t=[],i.__e(o,e.__v)}})),Z&&Z(e,t)},i.unmount=function(e){K&&K(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{ve(e)}catch(e){t=e}})),n.__H=void 0,t&&i.__e(t,n.__v))};var he="function"==typeof requestAnimationFrame;function pe(e){var t,n=function(){clearTimeout(r),he&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);he&&(t=requestAnimationFrame(n))}function ve(e){var t=H,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),H=t}function me(e){var t=H;e.__c=e.__(),H=t}function ge(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function ye(e,t){return"function"==typeof t?t(e):t}function _e(e,t){for(var n in t)e[n]=t[n];return e}function be(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}function De(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}function we(e){this.props=e}function xe(e,t){function n(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:be(this.props,e)}function r(t){return this.shouldComponentUpdate=n,p(e,t)}return r.displayName="Memo("+(e.displayName||e.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r}(we.prototype=new y).isPureReactComponent=!0,we.prototype.shouldComponentUpdate=function(e,t){return be(this.props,e)||be(this.state,t)};var ke=i.__b;i.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),ke&&ke(e)};var Ce="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Ae(e){function t(t){var n=_e({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=Ce,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Ee=function(e,t){return null==e?null:C(C(e).map(t))},Se={map:Ee,forEach:Ee,count:function(e){return e?C(e).length:0},only:function(e){var t=C(e);if(1!==t.length)throw"Children.only";return t[0]},toArray:C},Ne=i.__e;i.__e=function(e,t,n,r){if(e.then)for(var i,o=t;o=o.__;)if((i=o.__c)&&i.__c)return null==t.__e&&(t.__e=n.__e,t.__k=n.__k),i.__c(e,t);Ne(e,t,n,r)};var Fe=i.unmount;function Me(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach((function(e){"function"==typeof e.__c&&e.__c()})),e.__c.__H=null),null!=(e=_e({},e)).__c&&(e.__c.__P===n&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map((function(e){return Me(e,t,n)}))),e}function Te(e,t,n){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map((function(e){return Te(e,t,n)})),e.__c&&e.__c.__P===t&&(e.__e&&n.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=n)),e}function Oe(){this.__u=0,this.t=null,this.__b=null}function Be(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function Le(e){var t,n,r;function i(i){if(t||(t=e()).then((function(e){n=e.default||e}),(function(e){r=e})),r)throw r;if(!n)throw t;return p(n,i)}return i.displayName="Lazy",i.__f=!0,i}function Ie(){this.u=null,this.o=null}i.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&!0===e.__h&&(e.type=null),Fe&&Fe(e)},(Oe.prototype=new y).__c=function(e,t){var n=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(n);var i=Be(r.__v),o=!1,a=function(){o||(o=!0,n.__R=null,i?i(u):u())};n.__R=a;var u=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=Te(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},l=!0===t.__h;r.__u++||l||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(a,a)},Oe.prototype.componentWillUnmount=function(){this.t=[]},Oe.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=Me(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&p(g,null,e.fallback);return i&&(i.__h=null),[p(g,null,t.__a?null:e.children),i]};var Pe=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.u=n=n[2]}};function Re(e){return this.getChildContext=function(){return e.context},e.children}function ze(e){var t=this,n=e.i;t.componentWillUnmount=function(){P(null,t.l),t.l=null,t.i=null},t.i&&t.i!==n&&t.componentWillUnmount(),e.__v?(t.l||(t.i=n,t.l={nodeType:1,parentNode:n,childNodes:[],appendChild:function(e){this.childNodes.push(e),t.i.appendChild(e)},insertBefore:function(e,n){this.childNodes.push(e),t.i.appendChild(e)},removeChild:function(e){this.childNodes.splice(this.childNodes.indexOf(e)>>>1,1),t.i.removeChild(e)}}),P(p(Re,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function je(e,t){var n=p(ze,{__v:e,i:t});return n.containerInfo=t,n}(Ie.prototype=new y).__a=function(e){var t=this,n=Be(t.__v),r=t.o.get(e);return r[0]++,function(i){var o=function(){t.props.revealOrder?(r.push(i),Pe(t,e,r)):i()};n?n(o):o()}},Ie.prototype.render=function(e){this.u=null,this.o=new Map;var t=C(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},Ie.prototype.componentDidUpdate=Ie.prototype.componentDidMount=function(){var e=this;this.o.forEach((function(t,n){Pe(e,n,t)}))};var $e="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,He=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Ue="undefined"!=typeof document,Ye=function(e){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(e)};function Ve(e,t,n){return null==t.__k&&(t.textContent=""),P(e,t),"function"==typeof n&&n(),e?e.__c:null}function qe(e,t,n){return R(e,t),"function"==typeof n&&n(),e?e.__c:null}y.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach((function(e){Object.defineProperty(y.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})}));var We=i.event;function Qe(){}function Ge(){return this.cancelBubble}function Je(){return this.defaultPrevented}i.event=function(e){return We&&(e=We(e)),e.persist=Qe,e.isPropagationStopped=Ge,e.isDefaultPrevented=Je,e.nativeEvent=e};var Ze,Ke={configurable:!0,get:function(){return this.class}},Xe=i.vnode;i.vnode=function(e){var t=e.type,n=e.props,r=n;if("string"==typeof t){var i=-1===t.indexOf("-");for(var o in r={},n){var a=n[o];Ue&&"children"===o&&"noscript"===t||"value"===o&&"defaultValue"in n&&null==a||("defaultValue"===o&&"value"in n&&null==n.value?o="value":"download"===o&&!0===a?a="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+t)&&!Ye(n.type)?o="oninput":/^onfocus$/i.test(o)?o="onfocusin":/^onblur$/i.test(o)?o="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(o)?o=o.toLowerCase():i&&He.test(o)?o=o.replace(/[A-Z0-9]/g,"-$&").toLowerCase():null===a&&(a=void 0),/^oninput$/i.test(o)&&(o=o.toLowerCase(),r[o]&&(o="oninputCapture")),r[o]=a)}"select"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=C(n.children).forEach((function(e){e.props.selected=-1!=r.value.indexOf(e.props.value)}))),"select"==t&&null!=r.defaultValue&&(r.value=C(n.children).forEach((function(e){e.props.selected=r.multiple?-1!=r.defaultValue.indexOf(e.props.value):r.defaultValue==e.props.value}))),e.props=r,n.class!=n.className&&(Ke.enumerable="className"in n,null!=n.className&&(r.class=n.className),Object.defineProperty(r,"className",Ke))}e.$$typeof=$e,Xe&&Xe(e)};var et=i.__r;i.__r=function(e){et&&et(e),Ze=e.__c};var tt={ReactCurrentDispatcher:{current:{readContext:function(e){return Ze.__n[e.__c].props.value}}}},nt="17.0.2";function rt(e){return p.bind(null,e)}function it(e){return!!e&&e.$$typeof===$e}function ot(e){return it(e)?z.apply(null,arguments):e}function at(e){return!!e.__k&&(P(null,e),!0)}function ut(e){return e&&(e.base||1===e.nodeType&&e)||null}var lt=function(e,t){return e(t)},ct=function(e,t){return e(t)},st=g;function ft(e){e()}function dt(e){return e}function ht(){return[!1,ft]}var pt=re;function vt(e,t){var n=t(),r=ee({h:{__:n,v:t}}),i=r[0].h,o=r[1];return re((function(){i.__=n,i.v=t,De(i.__,t())||o({h:i})}),[e,n,t]),ne((function(){return De(i.__,i.v())||o({h:i}),e((function(){De(i.__,i.v())||o({h:i})}))}),[e]),n}var mt,gt={useState:ee,useId:fe,useReducer:te,useEffect:ne,useLayoutEffect:re,useInsertionEffect:pt,useTransition:ht,useDeferredValue:dt,useSyncExternalStore:vt,startTransition:ft,useRef:ie,useImperativeHandle:oe,useMemo:ae,useCallback:ue,useContext:le,useDebugValue:ce,version:"17.0.2",Children:Se,render:Ve,hydrate:qe,unmountComponentAtNode:at,createPortal:je,createElement:p,createContext:j,createFactory:rt,cloneElement:ot,createRef:m,Fragment:g,isValidElement:it,findDOMNode:ut,Component:y,PureComponent:we,memo:xe,forwardRef:Ae,flushSync:ct,unstable_batchedUpdates:lt,StrictMode:st,Suspense:Oe,SuspenseList:Ie,lazy:Le,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:tt},yt=n(658),_t=n.n(yt),bt=n(443),Dt=n.n(bt),wt=n(446),xt=n.n(wt),kt=n(635),Ct=n.n(kt);function At(e){if(Array.isArray(e))return e}function Et(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function St(e,t){if(e){if("string"===typeof e)return Et(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Et(e,t):void 0}}function Nt(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ft(e,t){return At(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(s){c=!0,i=s}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return u}}(e,t)||St(e,t)||Nt()}function Mt(e,t){var n="undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=St(e))||t&&e&&"number"===typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}function Tt(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Ot(e){return function(e){if(Array.isArray(e))return Et(e)}(e)||Tt(e)||St(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Bt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Lt(e){return Lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Lt(e)}function It(e){var t=function(e,t){if("object"!==Lt(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==Lt(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Lt(t)?t:String(t)}function Pt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,It(r.key),r)}}function Rt(e,t,n){return t&&Pt(e.prototype,t),n&&Pt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function zt(e,t){return zt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},zt(e,t)}function jt(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&zt(e,t)}function $t(e){return $t=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},$t(e)}function Ht(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(s){return!1}}function Ut(e,t){if(t&&("object"===Lt(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function Yt(e){var t=Ht();return function(){var n,r=$t(e);if(t){var i=$t(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return Ut(this,n)}}function Vt(e,t,n){return Ht()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&zt(i,n.prototype),i},Vt.apply(null,arguments)}function qt(e){var t="function"===typeof Map?new Map:void 0;return function(e){if(null===e||!function(e){return-1!==Function.toString.call(e).indexOf("[native code]")}(e))return e;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return Vt(e,arguments,$t(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),zt(n,e)},qt(e)}function Wt(){return Wt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Wt.apply(this,arguments)}_t().extend(Dt()),_t().extend(xt()),_t().extend(Ct()),function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"}(mt||(mt={}));var Qt,Gt="popstate";function Jt(e,t){if(!1===e||null===e||"undefined"===typeof e)throw new Error(t)}function Zt(e,t){if(!e){"undefined"!==typeof console&&console.warn(t);try{throw new Error(t)}catch(s){}}}function Kt(e,t){return{usr:e.state,key:e.key,idx:t}}function Xt(e,t,n,r){return void 0===n&&(n=null),Wt({pathname:"string"===typeof e?e:e.pathname,search:"",hash:""},"string"===typeof t?tn(t):t,{state:n,key:t&&t.key||r||Math.random().toString(36).substr(2,8)})}function en(e){var t=e.pathname,n=void 0===t?"/":t,r=e.search,i=void 0===r?"":r,o=e.hash,a=void 0===o?"":o;return i&&"?"!==i&&(n+="?"===i.charAt(0)?i:"?"+i),a&&"#"!==a&&(n+="#"===a.charAt(0)?a:"#"+a),n}function tn(e){var t={};if(e){var n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));var r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function nn(e,t,n,r){void 0===r&&(r={});var i=r,o=i.window,a=void 0===o?document.defaultView:o,u=i.v5Compat,l=void 0!==u&&u,c=a.history,s=mt.Pop,f=null,d=h();function h(){return(c.state||{idx:null}).idx}function p(){var e=mt.Pop,t=h();if(null!=t){var n=t-d;s=e,d=t,f&&f({action:s,location:m.location,delta:n})}else Zt(!1,"You are trying to block a POP navigation to a location that was not created by @remix-run/router. The block will fail silently in production, but in general you should do all navigation with the router (instead of using window.history.pushState directly) to avoid this situation.")}function v(e){var t="null"!==a.location.origin?a.location.origin:a.location.href,n="string"===typeof e?e:en(e);return Jt(t,"No window.location.(origin|href) available to create URL for href: "+n),new URL(n,t)}null==d&&(d=0,c.replaceState(Wt({},c.state,{idx:d}),""));var m={get action(){return s},get location(){return e(a,c)},listen:function(e){if(f)throw new Error("A history only accepts one active listener");return a.addEventListener(Gt,p),f=e,function(){a.removeEventListener(Gt,p),f=null}},createHref:function(e){return t(a,e)},createURL:v,encodeLocation:function(e){var t=v(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){s=mt.Push;var r=Xt(m.location,e,t);n&&n(r,e);var i=Kt(r,d=h()+1),o=m.createHref(r);try{c.pushState(i,"",o)}catch(u){a.location.assign(o)}l&&f&&f({action:s,location:m.location,delta:1})},replace:function(e,t){s=mt.Replace;var r=Xt(m.location,e,t);n&&n(r,e);var i=Kt(r,d=h()),o=m.createHref(r);c.replaceState(i,"",o),l&&f&&f({action:s,location:m.location,delta:0})},go:function(e){return c.go(e)}};return m}function rn(e,t,n){void 0===n&&(n="/");var r=hn(("string"===typeof t?tn(t):t).pathname||"/",n);if(null==r)return null;var i=on(e);!function(e){e.sort((function(e,t){return e.score!==t.score?t.score-e.score:function(e,t){var n=e.length===t.length&&e.slice(0,-1).every((function(e,n){return e===t[n]}));return n?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((function(e){return e.childrenIndex})),t.routesMeta.map((function(e){return e.childrenIndex})))}))}(i);for(var o=null,a=0;null==o&&a<i.length;++a)o=sn(i[a],dn(r));return o}function on(e,t,n,r){void 0===t&&(t=[]),void 0===n&&(n=[]),void 0===r&&(r="");var i=function(e,i,o){var a={relativePath:void 0===o?e.path||"":o,caseSensitive:!0===e.caseSensitive,childrenIndex:i,route:e};a.relativePath.startsWith("/")&&(Jt(a.relativePath.startsWith(r),'Absolute route path "'+a.relativePath+'" nested under path "'+r+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),a.relativePath=a.relativePath.slice(r.length));var u=yn([r,a.relativePath]),l=n.concat(a);e.children&&e.children.length>0&&(Jt(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+u+'".'),on(e.children,t,l,u)),(null!=e.path||e.index)&&t.push({path:u,score:cn(u,e.index),routesMeta:l})};return e.forEach((function(e,t){var n;if(""!==e.path&&null!=(n=e.path)&&n.includes("?")){var r,o=Mt(an(e.path));try{for(o.s();!(r=o.n()).done;){var a=r.value;i(e,t,a)}}catch(u){o.e(u)}finally{o.f()}}else i(e,t)})),t}function an(e){var t=e.split("/");if(0===t.length)return[];var n,r=At(n=t)||Tt(n)||St(n)||Nt(),i=r[0],o=r.slice(1),a=i.endsWith("?"),u=i.replace(/\?$/,"");if(0===o.length)return a?[u,""]:[u];var l=an(o.join("/")),c=[];return c.push.apply(c,Ot(l.map((function(e){return""===e?u:[u,e].join("/")})))),a&&c.push.apply(c,Ot(l)),c.map((function(t){return e.startsWith("/")&&""===t?"/":t}))}!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(Qt||(Qt={}));var un=/^:\w+$/,ln=function(e){return"*"===e};function cn(e,t){var n=e.split("/"),r=n.length;return n.some(ln)&&(r+=-2),t&&(r+=2),n.filter((function(e){return!ln(e)})).reduce((function(e,t){return e+(un.test(t)?3:""===t?1:10)}),r)}function sn(e,t){for(var n=e.routesMeta,r={},i="/",o=[],a=0;a<n.length;++a){var u=n[a],l=a===n.length-1,c="/"===i?t:t.slice(i.length)||"/",s=fn({path:u.relativePath,caseSensitive:u.caseSensitive,end:l},c);if(!s)return null;Object.assign(r,s.params);var f=u.route;o.push({params:r,pathname:yn([i,s.pathname]),pathnameBase:_n(yn([i,s.pathnameBase])),route:f}),"/"!==s.pathnameBase&&(i=yn([i,s.pathnameBase]))}return o}function fn(e,t){"string"===typeof e&&(e={path:e,caseSensitive:!1,end:!0});var n=function(e,t,n){void 0===t&&(t=!1);void 0===n&&(n=!0);pn("*"===e||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were "'+e.replace(/\*$/,"/*")+'" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to "'+e.replace(/\*$/,"/*")+'".');var r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/\/:(\w+)/g,(function(e,t){return r.push(t),"/([^\\/]+)"}));e.endsWith("*")?(r.push("*"),i+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":""!==e&&"/"!==e&&(i+="(?:(?=\\/|$))");var o=new RegExp(i,t?void 0:"i");return[o,r]}(e.path,e.caseSensitive,e.end),r=Ft(n,2),i=r[0],o=r[1],a=t.match(i);if(!a)return null;var u=a[0],l=u.replace(/(.)\/+$/,"$1"),c=a.slice(1);return{params:o.reduce((function(e,t,n){if("*"===t){var r=c[n]||"";l=u.slice(0,u.length-r.length).replace(/(.)\/+$/,"$1")}return e[t]=function(e,t){try{return decodeURIComponent(e)}catch(n){return pn(!1,'The value for the URL param "'+t+'" will not be decoded because the string "'+e+'" is a malformed URL segment. This is probably due to a bad percent encoding ('+n+")."),e}}(c[n]||"",t),e}),{}),pathname:u,pathnameBase:l,pattern:e}}function dn(e){try{return decodeURI(e)}catch(t){return pn(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function hn(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;var n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&"/"!==r?null:e.slice(n)||"/"}function pn(e,t){if(!e){"undefined"!==typeof console&&console.warn(t);try{throw new Error(t)}catch(s){}}}function vn(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the `to."+n+'` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.'}function mn(e){return e.filter((function(e,t){return 0===t||e.route.path&&e.route.path.length>0}))}function gn(e,t,n,r){var i;void 0===r&&(r=!1),"string"===typeof e?i=tn(e):(Jt(!(i=Wt({},e)).pathname||!i.pathname.includes("?"),vn("?","pathname","search",i)),Jt(!i.pathname||!i.pathname.includes("#"),vn("#","pathname","hash",i)),Jt(!i.search||!i.search.includes("#"),vn("#","search","hash",i)));var o,a=""===e||""===i.pathname,u=a?"/":i.pathname;if(r||null==u)o=n;else{var l=t.length-1;if(u.startsWith("..")){for(var c=u.split("/");".."===c[0];)c.shift(),l-=1;i.pathname=c.join("/")}o=l>=0?t[l]:"/"}var s=function(e,t){void 0===t&&(t="/");var n="string"===typeof e?tn(e):e,r=n.pathname,i=n.search,o=void 0===i?"":i,a=n.hash,u=void 0===a?"":a,l=r?r.startsWith("/")?r:function(e,t){var n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((function(e){".."===e?n.length>1&&n.pop():"."!==e&&n.push(e)})),n.length>1?n.join("/"):"/"}(r,t):t;return{pathname:l,search:bn(o),hash:Dn(u)}}(i,o),f=u&&"/"!==u&&u.endsWith("/"),d=(a||"."===u)&&n.endsWith("/");return s.pathname.endsWith("/")||!f&&!d||(s.pathname+="/"),s}var yn=function(e){return e.join("/").replace(/\/\/+/g,"/")},_n=function(e){return e.replace(/\/+$/,"").replace(/^\/*/,"/")},bn=function(e){return e&&"?"!==e?e.startsWith("?")?e:"?"+e:""},Dn=function(e){return e&&"#"!==e?e.startsWith("#")?e:"#"+e:""};Error;var wn=Rt((function e(t,n,r,i){Bt(this,e),void 0===i&&(i=!1),this.status=t,this.statusText=n||"",this.internal=i,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}));function xn(e){return e instanceof wn}var kn=["post","put","patch","delete"],Cn=(new Set(kn),["get"].concat(kn));new Set(Cn),new Set([301,302,303,307,308]),new Set([307,308]),"undefined"!==typeof window&&"undefined"!==typeof window.document&&window.document.createElement;Symbol("deferred");function An(){return An=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},An.apply(this,arguments)}var En="function"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t},Sn=ee,Nn=ne,Fn=re,Mn=ce;function Tn(e){var t=e.getSnapshot,n=e.value;try{var r=t();return!En(n,r)}catch(i){return!0}}"undefined"===typeof window||"undefined"===typeof window.document||window.document.createElement;var On=j(null);var Bn=j(null);var Ln=j(null);var In=j(null);var Pn=j({outlet:null,matches:[]});var Rn=j(null);function zn(){return null!=le(In)}function jn(){return zn()||Jt(!1),le(In).location}function $n(){zn()||Jt(!1);var e=le(Ln),t=e.basename,n=e.navigator,r=le(Pn).matches,i=jn().pathname,o=JSON.stringify(mn(r).map((function(e){return e.pathnameBase}))),a=ie(!1);ne((function(){a.current=!0}));var u=ue((function(e,r){if(void 0===r&&(r={}),a.current)if("number"!==typeof e){var u=gn(e,JSON.parse(o),i,"path"===r.relative);"/"!==t&&(u.pathname="/"===u.pathname?t:yn([t,u.pathname])),(r.replace?n.replace:n.push)(u,r.state,r)}else n.go(e)}),[t,n,o,i]);return u}var Hn=j(null);function Un(e,t){var n=(void 0===t?{}:t).relative,r=le(Pn).matches,i=jn().pathname,o=JSON.stringify(mn(r).map((function(e){return e.pathnameBase})));return ae((function(){return gn(e,JSON.parse(o),i,"path"===n)}),[e,o,i,n])}function Yn(){var e=function(){var e,t=le(Rn),n=Jn(qn.UseRouteError),r=Zn(qn.UseRouteError);if(t)return t;return null==(e=n.errors)?void 0:e[r]}(),t=xn(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:r},o={padding:"2px 4px",backgroundColor:r};return p(g,null,p("h2",null,"Unhandled Thrown Error!"),p("h3",{style:{fontStyle:"italic"}},t),n?p("pre",{style:i},n):null,p("p",null,"\ud83d\udcbf Hey developer \ud83d\udc4b"),p("p",null,"You can provide a way better UX than this when your app throws errors by providing your own\xa0",p("code",{style:o},"errorElement")," props on\xa0",p("code",{style:o},"<Route>")))}var Vn,qn,Wn=function(e){jt(n,e);var t=Yt(n);function n(e){var r;return Bt(this,n),(r=t.call(this,e)).state={location:e.location,error:e.error},r}return Rt(n,[{key:"componentDidCatch",value:function(e,t){console.error("React Router caught the following error during render",e,t)}},{key:"render",value:function(){return this.state.error?p(Pn.Provider,{value:this.props.routeContext},p(Rn.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}],[{key:"getDerivedStateFromError",value:function(e){return{error:e}}},{key:"getDerivedStateFromProps",value:function(e,t){return t.location!==e.location?{error:e.error,location:e.location}:{error:e.error||t.error,location:t.location}}}]),n}(y);function Qn(e){var t=e.routeContext,n=e.match,r=e.children,i=le(On);return i&&i.static&&i.staticContext&&n.route.errorElement&&(i.staticContext._deepestRenderedBoundaryId=n.route.id),p(Pn.Provider,{value:t},r)}function Gn(e,t,n){if(void 0===t&&(t=[]),null==e){if(null==n||!n.errors)return null;e=n.matches}var r=e,i=null==n?void 0:n.errors;if(null!=i){var o=r.findIndex((function(e){return e.route.id&&(null==i?void 0:i[e.route.id])}));o>=0||Jt(!1),r=r.slice(0,Math.min(r.length,o+1))}return r.reduceRight((function(e,o,a){var u=o.route.id?null==i?void 0:i[o.route.id]:null,l=n?o.route.errorElement||p(Yn,null):null,c=t.concat(r.slice(0,a+1)),s=function(){return p(Qn,{match:o,routeContext:{outlet:e,matches:c}},u?l:void 0!==o.route.element?o.route.element:e)};return n&&(o.route.errorElement||0===a)?p(Wn,{location:n.location,component:l,error:u,children:s(),routeContext:{outlet:null,matches:c}}):s()}),null)}function Jn(e){var t=le(Bn);return t||Jt(!1),t}function Zn(e){var t=function(e){var t=le(Pn);return t||Jt(!1),t}(),n=t.matches[t.matches.length-1];return n.route.id||Jt(!1),n.route.id}!function(e){e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator"}(Vn||(Vn={})),function(e){e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator"}(qn||(qn={}));var Kn;function Xn(e){return function(e){var t=le(Pn).outlet;return t?p(Hn.Provider,{value:e},t):t}(e.context)}function er(e){Jt(!1)}function tr(e){var t=e.basename,n=void 0===t?"/":t,r=e.children,i=void 0===r?null:r,o=e.location,a=e.navigationType,u=void 0===a?mt.Pop:a,l=e.navigator,c=e.static,s=void 0!==c&&c;zn()&&Jt(!1);var f=n.replace(/^\/*/,"/"),d=ae((function(){return{basename:f,navigator:l,static:s}}),[f,l,s]);"string"===typeof o&&(o=tn(o));var h=o,v=h.pathname,m=void 0===v?"/":v,g=h.search,y=void 0===g?"":g,_=h.hash,b=void 0===_?"":_,D=h.state,w=void 0===D?null:D,x=h.key,k=void 0===x?"default":x,C=ae((function(){var e=hn(m,f);return null==e?null:{pathname:e,search:y,hash:b,state:w,key:k}}),[f,m,y,b,w,k]);return null==C?null:p(Ln.Provider,{value:d},p(In.Provider,{children:i,value:{location:C,navigationType:u}}))}function nr(e){var t=e.children,n=e.location,r=le(On);return function(e,t){zn()||Jt(!1);var n,r=le(Ln).navigator,i=le(Bn),o=le(Pn).matches,a=o[o.length-1],u=a?a.params:{},l=(a&&a.pathname,a?a.pathnameBase:"/"),c=(a&&a.route,jn());if(t){var s,f="string"===typeof t?tn(t):t;"/"===l||(null==(s=f.pathname)?void 0:s.startsWith(l))||Jt(!1),n=f}else n=c;var d=n.pathname||"/",h=rn(e,{pathname:"/"===l?d:d.slice(l.length)||"/"}),v=Gn(h&&h.map((function(e){return Object.assign({},e,{params:Object.assign({},u,e.params),pathname:yn([l,r.encodeLocation?r.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?l:yn([l,r.encodeLocation?r.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])})})),o,i||void 0);return t&&v?p(In.Provider,{value:{location:An({pathname:"/",search:"",hash:"",state:null,key:"default"},n),navigationType:mt.Pop}},v):v}(r&&!t?r.router.routes:rr(t),n)}!function(e){e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error"}(Kn||(Kn={}));new Promise((function(){}));function rr(e,t){void 0===t&&(t=[]);var n=[];return Se.forEach(e,(function(e,r){if(it(e))if(e.type!==g){e.type!==er&&Jt(!1),e.props.index&&e.props.children&&Jt(!1);var i=[].concat(Ot(t),[r]),o={id:e.props.id||i.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,hasErrorBoundary:null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle};e.props.children&&(o.children=rr(e.props.children,i)),n.push(o)}else n.push.apply(n,rr(e.props.children,t))})),n}function ir(){return ir=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ir.apply(this,arguments)}function or(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}function ar(e){return void 0===e&&(e=""),new URLSearchParams("string"===typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((function(t,n){var r=e[n];return t.concat(Array.isArray(r)?r.map((function(e){return[n,e]})):[[n,r]])}),[]))}var ur=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset"],lr=["aria-current","caseSensitive","className","end","style","to","children"];function cr(e){var t=e.basename,n=e.children,r=e.window,i=ie();null==i.current&&(i.current=function(e){return void 0===e&&(e={}),nn((function(e,t){var n=tn(e.location.hash.substr(1)),r=n.pathname,i=void 0===r?"/":r,o=n.search,a=void 0===o?"":o,u=n.hash;return Xt("",{pathname:i,search:a,hash:void 0===u?"":u},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){var n=e.document.querySelector("base"),r="";if(n&&n.getAttribute("href")){var i=e.location.href,o=i.indexOf("#");r=-1===o?i:i.slice(0,o)}return r+"#"+("string"===typeof t?t:en(t))}),(function(e,t){Zt("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)}({window:r,v5Compat:!0}));var o=i.current,a=Ft(ee({action:o.action,location:o.location}),2),u=a[0],l=a[1];return re((function(){return o.listen(l)}),[o]),p(tr,{basename:t,children:n,location:u.location,navigationType:u.action,navigator:o})}var sr=Ae((function(e,t){var n=e.onClick,r=e.relative,i=e.reloadDocument,o=e.replace,a=e.state,u=e.target,l=e.to,c=e.preventScrollReset,s=or(e,ur),f=function(e,t){var n=(void 0===t?{}:t).relative;zn()||Jt(!1);var r=le(Ln),i=r.basename,o=r.navigator,a=Un(e,{relative:n}),u=a.hash,l=a.pathname,c=a.search,s=l;return"/"!==i&&(s="/"===l?i:yn([i,l])),o.createHref({pathname:s,search:c,hash:u})}(l,{relative:r}),d=function(e,t){var n=void 0===t?{}:t,r=n.target,i=n.replace,o=n.state,a=n.preventScrollReset,u=n.relative,l=$n(),c=jn(),s=Un(e,{relative:u});return ue((function(t){if(function(e,t){return 0===e.button&&(!t||"_self"===t)&&!function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)}(t,r)){t.preventDefault();var n=void 0!==i?i:en(c)===en(s);l(e,{replace:n,state:o,preventScrollReset:a,relative:u})}}),[c,l,s,i,o,r,e,a,u])}(l,{replace:o,state:a,target:u,preventScrollReset:c,relative:r});return p("a",ir({},s,{href:f,onClick:i?n:function(e){n&&n(e),e.defaultPrevented||d(e)},ref:t,target:u}))}));var fr=Ae((function(e,t){var n=e["aria-current"],r=void 0===n?"page":n,i=e.caseSensitive,o=void 0!==i&&i,a=e.className,u=void 0===a?"":a,l=e.end,c=void 0!==l&&l,s=e.style,f=e.to,d=e.children,h=or(e,lr),v=Un(f,{relative:h.relative}),m=jn(),g=le(Bn),y=le(Ln).navigator,_=y.encodeLocation?y.encodeLocation(v).pathname:v.pathname,b=m.pathname,D=g&&g.navigation&&g.navigation.location?g.navigation.location.pathname:null;o||(b=b.toLowerCase(),D=D?D.toLowerCase():null,_=_.toLowerCase());var w,x=b===_||!c&&b.startsWith(_)&&"/"===b.charAt(_.length),k=null!=D&&(D===_||!c&&D.startsWith(_)&&"/"===D.charAt(_.length)),C=x?r:void 0;w="function"===typeof u?u({isActive:x,isPending:k}):[u,x?"active":null,k?"pending":null].filter(Boolean).join(" ");var A="function"===typeof s?s({isActive:x,isPending:k}):s;return p(sr,ir({},h,{"aria-current":C,className:w,ref:t,style:A,to:f}),"function"===typeof d?d({isActive:x,isPending:k}):d)}));var dr,hr;function pr(e){var t=ie(ar(e)),n=jn(),r=ae((function(){return function(e,t){var n,r=ar(e),i=Mt(t.keys());try{var o=function(){var e=n.value;r.has(e)||t.getAll(e).forEach((function(t){r.append(e,t)}))};for(i.s();!(n=i.n()).done;)o()}catch(a){i.e(a)}finally{i.f()}return r}(n.search,t.current)}),[n.search]),i=$n(),o=ue((function(e,t){var n=ar("function"===typeof e?e(r):e);i("?"+n,t)}),[i,r]);return[r,o]}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmitImpl="useSubmitImpl",e.UseFetcher="useFetcher"})(dr||(dr={})),function(e){e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(hr||(hr={}));var vr;function mr(e,t,n){return(t=It(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function gr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function yr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gr(Object(n),!0).forEach((function(t){mr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var _r,br,Dr={home:"/",metrics:"/metrics",dashboards:"/dashboards",cardinality:"/cardinality",topQueries:"/top-queries",trace:"/trace",icons:"/icons"},wr={header:{tenant:!0,stepControl:!0,timeSelector:!0,executionControls:!0}},xr=(mr(vr={},Dr.home,yr({title:"Query"},wr)),mr(vr,Dr.metrics,{title:"Explore metrics",header:{tenant:!0,stepControl:!0,timeSelector:!0}}),mr(vr,Dr.cardinality,{title:"Explore cardinality",header:{tenant:!0,cardinalityDatePicker:!0}}),mr(vr,Dr.topQueries,{title:"Top queries",header:{tenant:!0}}),mr(vr,Dr.trace,{title:"Trace analyzer",header:{}}),mr(vr,Dr.dashboards,yr({title:"Dashboards"},wr)),mr(vr,Dr.icons,{title:"Icons",header:{}}),vr),kr=Dr,Cr=function(){var e,t=(null===(e=document.getElementById("root"))||void 0===e?void 0:e.dataset.params)||"{}";try{return JSON.parse(t)}catch(s){return console.error(s),{}}},Ar=function(){return!!Object.keys(Cr()).length},Er=function(e,t){return e.replace(/(\/select\/)(\d+|\d.+)(\/)(.+)/,"$1".concat(t,"/$4"))},Sr=n(776),Nr=n.n(Sr),Fr=n(7),Mr=n.n(Fr),Tr={table:100,chart:20,code:1e3},Or=[{id:"small",height:function(){return.2*window.innerHeight}},{id:"medium",isDefault:!0,height:function(){return.4*window.innerHeight}},{id:"large",height:function(){return.8*window.innerHeight}}],Br=function(e,t){var n=window.location.hash.split("?")[1],r=Nr().parse(n,{ignoreQueryPrefix:!0});return Mr()(r,e,t||"")},Lr=function(e,t){t?window.localStorage.setItem(e,JSON.stringify({value:t})):Pr([e]),window.dispatchEvent(new Event("storage"))},Ir=function(e){var t=window.localStorage.getItem(e);if(null!==t)try{var n;return null===(n=JSON.parse(t))||void 0===n?void 0:n.value}catch(s){return t}},Pr=function(e){return e.forEach((function(e){return window.localStorage.removeItem(e)}))};!function(e){e.emptyServer="Please enter Server URL",e.validServer="Please provide a valid Server URL",e.validQuery="Please enter a valid Query and execute it",e.traceNotFound="Not found the tracing information",e.emptyTitle="Please enter title",e.positiveNumber="Please enter positive number",e.validStep="Please enter a valid step"}(_r||(_r={})),function(e){e.system="system",e.light="light",e.dark="dark"}(br||(br={}));var Rr=function(e){return getComputedStyle(document.documentElement).getPropertyValue("--".concat(e))},zr=function(e,t){document.documentElement.style.setProperty("--".concat(e),t)},jr=function(){return window.matchMedia("(prefers-color-scheme: dark)").matches},$r=Br("g0.tenantID",""),Hr={serverUrl:function(e){var t=Cr().serverURL||window.location.href.replace(/\/(?:prometheus\/)?(?:graph|vmui)\/.*/,"/prometheus");return e?Er(t,e):t}($r),tenantId:$r,theme:Ir("THEME")||br.system,isDarkTheme:null};function Ur(e,t){switch(t.type){case"SET_SERVER":return yr(yr({},e),{},{serverUrl:t.payload});case"SET_TENANT_ID":return yr(yr({},e),{},{tenantId:t.payload});case"SET_THEME":return Lr("THEME",t.payload),yr(yr({},e),{},{theme:t.payload});case"SET_DARK_THEME":return yr(yr({},e),{},{isDarkTheme:(n=e.theme,n===br.system&&jr()||n===br.dark)});default:throw new Error}var n}var Yr=0;function Vr(e,t,n,r,o){var a,u,l={};for(u in t)"ref"==u?a=t[u]:l[u]=t[u];var c={type:e,props:l,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--Yr,__source:o,__self:r};if("function"==typeof e&&(a=e.defaultProps))for(u in a)void 0===l[u]&&(l[u]=a[u]);return i.vnode&&i.vnode(c),c}var qr=j({}),Wr=function(){return le(qr).state},Qr=function(){return le(qr).dispatch},Gr=Object.entries(Hr).reduce((function(e,t){var n=Ft(t,2),r=n[0],i=n[1];return yr(yr({},e),{},mr({},r,Br(r)||i))}),{}),Jr="YYYY-MM-DD",Zr="YYYY-MM-DD HH:mm:ss",Kr="YYYY-MM-DD[T]HH:mm:ss",Xr=window.innerWidth/4,ei=1,ti=1578e8,ni=Intl.supportedValuesOf,ri=ni?ni("timeZone"):["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/La_Rioja","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montreal","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Katmandu","Asia/Khandyga","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis"],ii=[{long:"years",short:"y",possible:"year"},{long:"weeks",short:"w",possible:"week"},{long:"days",short:"d",possible:"day"},{long:"hours",short:"h",possible:"hour"},{long:"minutes",short:"m",possible:"min"},{long:"seconds",short:"s",possible:"sec"},{long:"milliseconds",short:"ms",possible:"millisecond"}],oi=ii.map((function(e){return e.short})),ai=function(e){return Math.round(1e3*e)/1e3},ui=function(e){var t=e.match(/\d+/g),n=e.match(/[a-zA-Z]+/g);if(n&&t&&oi.includes(n[0]))return mr({},n[0],t[0])},li=function(e){var t=ii.map((function(e){return e.short})).join("|"),n=new RegExp("\\d+[".concat(t,"]+"),"g"),r=(e.match(n)||[]).reduce((function(e,t){var n=ui(t);return n?yr(yr({},e),n):yr({},e)}),{});return _t().duration(r).asSeconds()},ci=function(e,t){var n=(t||_t()().toDate()).valueOf()/1e3,r=li(e);return{start:n-r,end:n,step:function(e){var t=ai(e),n=Math.round(e);return e>=100&&(t=n-n%10),e<100&&e>=10&&(t=n-n%5),e<10&&e>=1&&(t=n),e<1&&e>.01&&(t=Math.round(40*e)/40),di(_t().duration(t||.001,"seconds").asMilliseconds()).replace(/\s/g,"")}(r/Xr),date:si(t||_t()().toDate())}},si=function(e){return _t().tz(e).utc().format(Kr)},fi=function(e){return _t().tz(e).format(Kr)},di=function(e){var t=Math.floor(e%1e3),n=Math.floor(e/1e3%60),r=Math.floor(e/1e3/60%60),i=Math.floor(e/1e3/3600%24),o=Math.floor(e/864e5),a=["d","h","m","s","ms"],u=[o,i,r,n,t].map((function(e,t){return e?"".concat(e).concat(a[t]):""}));return u.filter((function(e){return e})).join(" ")},hi=function(e){var t=_t()(1e3*e);return t.isValid()?t.toDate():new Date},pi=[{title:"Last 5 minutes",duration:"5m"},{title:"Last 15 minutes",duration:"15m"},{title:"Last 30 minutes",duration:"30m",isDefault:!0},{title:"Last 1 hour",duration:"1h"},{title:"Last 3 hours",duration:"3h"},{title:"Last 6 hours",duration:"6h"},{title:"Last 12 hours",duration:"12h"},{title:"Last 24 hours",duration:"24h"},{title:"Last 2 days",duration:"2d"},{title:"Last 7 days",duration:"7d"},{title:"Last 30 days",duration:"30d"},{title:"Last 90 days",duration:"90d"},{title:"Last 180 days",duration:"180d"},{title:"Last 1 year",duration:"1y"},{title:"Yesterday",duration:"1d",until:function(){return _t()().tz().subtract(1,"day").endOf("day").toDate()}},{title:"Today",duration:"1d",until:function(){return _t()().tz().endOf("day").toDate()}}].map((function(e){return yr({id:e.title.replace(/\s/g,"_").toLocaleLowerCase(),until:e.until?e.until:function(){return _t()().tz().toDate()}},e)})),vi=function(e){var t,n=e.relativeTimeId,r=e.defaultDuration,i=e.defaultEndInput,o=null===(t=pi.find((function(e){return e.isDefault})))||void 0===t?void 0:t.id,a=n||Br("g0.relative_time",o),u=pi.find((function(e){return e.id===a}));return{relativeTimeId:u?a:"none",duration:u?u.duration:r,endInput:u?u.until():i}},mi=function(e){var t=_t()().tz(e);return"UTC".concat(t.format("Z"))},gi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new RegExp(e,"i");return ri.reduce((function(n,r){var i=(r.match(/^(.*?)\//)||[])[1]||"unknown",o=mi(r),a=o.replace(/UTC|0/,""),u=r.replace(/[/_]/g," "),l={region:r,utc:o,search:"".concat(r," ").concat(o," ").concat(u," ").concat(a)},c=!e||e&&t.test(l.search);return c&&n[i]?n[i].push(l):c&&(n[i]=[l]),n}),{})},yi=function(e){_t().tz.setDefault(e)},_i=Ir("TIMEZONE")||_t().tz.guess();yi(_i);var bi,Di=Br("g0.range_input"),wi=vi({defaultDuration:Di||"1h",defaultEndInput:(bi=Br("g0.end_input",_t()().utc().format(Kr)),_t()(bi).utcOffset(0,!0).toDate()),relativeTimeId:Di?Br("g0.relative_time","none"):void 0}),xi=wi.duration,ki=wi.endInput,Ci=wi.relativeTimeId,Ai={duration:xi,period:ci(xi,ki),relativeTime:Ci,timezone:_i};function Ei(e,t){switch(t.type){case"SET_DURATION":return yr(yr({},e),{},{duration:t.payload,period:ci(t.payload,hi(e.period.end)),relativeTime:"none"});case"SET_RELATIVE_TIME":return yr(yr({},e),{},{duration:t.payload.duration,period:ci(t.payload.duration,t.payload.until),relativeTime:t.payload.id});case"SET_PERIOD":var n=function(e){var t=e.to.valueOf()-e.from.valueOf();return di(t)}(t.payload);return yr(yr({},e),{},{duration:n,period:ci(n,t.payload.to),relativeTime:"none"});case"RUN_QUERY":var r=vi({relativeTimeId:e.relativeTime,defaultDuration:e.duration,defaultEndInput:hi(e.period.end)}),i=r.duration,o=r.endInput;return yr(yr({},e),{},{period:ci(i,o)});case"RUN_QUERY_TO_NOW":return yr(yr({},e),{},{period:ci(e.duration)});case"SET_TIMEZONE":return yi(t.payload),Lr("TIMEZONE",t.payload),yr(yr({},e),{},{timezone:t.payload});default:throw new Error}}var Si=j({}),Ni=function(){return le(Si).state},Fi=function(){return le(Si).dispatch},Mi=function(){var e,t=(null===(e=(window.location.hash.split("?")[1]||"").match(/g\d+\.expr/g))||void 0===e?void 0:e.length)||1;return new Array(t>4?4:t).fill(1).map((function(e,t){return Br("g".concat(t,".expr"),"")}))}(),Ti={query:Mi,queryHistory:Mi.map((function(e){return{index:0,values:[e]}})),autocomplete:Ir("AUTOCOMPLETE")||!1};function Oi(e,t){switch(t.type){case"SET_QUERY":return yr(yr({},e),{},{query:t.payload.map((function(e){return e}))});case"SET_QUERY_HISTORY":return yr(yr({},e),{},{queryHistory:t.payload});case"SET_QUERY_HISTORY_BY_INDEX":return e.queryHistory.splice(t.payload.queryNumber,1,t.payload.value),yr(yr({},e),{},{queryHistory:e.queryHistory});case"TOGGLE_AUTOCOMPLETE":return Lr("AUTOCOMPLETE",!e.autocomplete),yr(yr({},e),{},{autocomplete:!e.autocomplete});default:throw new Error}}var Bi=j({}),Li=function(){return le(Bi).state},Ii=function(){return le(Bi).dispatch},Pi=function(){return Vr("svg",{viewBox:"0 0 74 24",fill:"currentColor",children:[Vr("path",{d:"M6.11767 10.4759C6.47736 10.7556 6.91931 10.909 7.37503 10.9121H7.42681C7.90756 10.9047 8.38832 10.7199 8.67677 10.4685C10.1856 9.18921 14.5568 5.18138 14.5568 5.18138C15.7254 4.09438 12.4637 3.00739 7.42681 3H7.36764C2.3308 3.00739 -0.930935 4.09438 0.237669 5.18138C0.237669 5.18138 4.60884 9.18921 6.11767 10.4759ZM8.67677 12.6424C8.31803 12.9248 7.87599 13.0808 7.41941 13.0861H7.37503C6.91845 13.0808 6.47641 12.9248 6.11767 12.6424C5.0822 11.7551 1.38409 8.42018 0.000989555 7.14832V9.07829C0.000989555 9.29273 0.0823481 9.57372 0.222877 9.70682L0.293316 9.7712L0.293344 9.77122C1.33784 10.7258 4.83903 13.9255 6.11767 15.0161C6.47641 15.2985 6.91845 15.4545 7.37503 15.4597H7.41941C7.90756 15.4449 8.38092 15.2601 8.67677 15.0161C9.9859 13.9069 13.6249 10.572 14.5642 9.70682C14.7121 9.57372 14.7861 9.29273 14.7861 9.07829V7.14832C12.7662 8.99804 10.7297 10.8295 8.67677 12.6424ZM7.41941 17.6263C7.87513 17.6232 8.31708 17.4698 8.67677 17.19C10.7298 15.3746 12.7663 13.5407 14.7861 11.6885V13.6259C14.7861 13.8329 14.7121 14.1139 14.5642 14.247C13.6249 15.1196 9.9859 18.4471 8.67677 19.5563C8.38092 19.8077 7.90756 19.9926 7.41941 20H7.37503C6.91931 19.9968 6.47736 19.8435 6.11767 19.5637C4.91427 18.5373 1.74219 15.6364 0.502294 14.5025C0.393358 14.4029 0.299337 14.3169 0.222877 14.247C0.0823481 14.1139 0.000989555 13.8329 0.000989555 13.6259V11.6885C1.38409 12.953 5.0822 16.2953 6.11767 17.1827C6.47641 17.4651 6.91845 17.6211 7.37503 17.6263H7.41941Z"}),Vr("path",{d:"M34.9996 5L29.1596 19.46H26.7296L20.8896 5H23.0496C23.2829 5 23.4729 5.05667 23.6196 5.17C23.7663 5.28333 23.8763 5.43 23.9496 5.61L27.3596 14.43C27.4729 14.7167 27.5796 15.0333 27.6796 15.38C27.7863 15.72 27.8863 16.0767 27.9796 16.45C28.0596 16.0767 28.1463 15.72 28.2396 15.38C28.3329 15.0333 28.4363 14.7167 28.5496 14.43L31.9396 5.61C31.9929 5.45667 32.0963 5.31667 32.2496 5.19C32.4096 5.06333 32.603 5 32.8297 5H34.9996ZM52.1763 5V19.46H49.8064V10.12C49.8064 9.74667 49.8263 9.34333 49.8663 8.91L45.4963 17.12C45.2897 17.5133 44.973 17.71 44.5463 17.71H44.1663C43.7397 17.71 43.4231 17.5133 43.2164 17.12L38.7963 8.88C38.8163 9.1 38.833 9.31667 38.8463 9.53C38.8597 9.74333 38.8663 9.94 38.8663 10.12V19.46H36.4963V5H38.5263C38.6463 5 38.7497 5.00333 38.8363 5.01C38.923 5.01667 38.9997 5.03333 39.0663 5.06C39.1397 5.08667 39.203 5.13 39.2563 5.19C39.3163 5.25 39.373 5.33 39.4263 5.43L43.7563 13.46C43.8697 13.6733 43.973 13.8933 44.0663 14.12C44.1663 14.3467 44.263 14.58 44.3563 14.82C44.4497 14.5733 44.5464 14.3367 44.6464 14.11C44.7464 13.8767 44.8531 13.6533 44.9664 13.44L49.2363 5.43C49.2897 5.33 49.3463 5.25 49.4063 5.19C49.4663 5.13 49.5297 5.08667 49.5963 5.06C49.6697 5.03333 49.7497 5.01667 49.8363 5.01C49.923 5.00333 50.0264 5 50.1464 5H52.1763ZM61.0626 18.73C61.7426 18.73 62.3492 18.6133 62.8826 18.38C63.4226 18.14 63.8792 17.81 64.2526 17.39C64.6259 16.97 64.9092 16.4767 65.1026 15.91C65.3026 15.3367 65.4026 14.72 65.4026 14.06V5.31H66.4226V14.06C66.4226 14.84 66.2993 15.57 66.0527 16.25C65.806 16.9233 65.4493 17.5133 64.9827 18.02C64.5227 18.52 63.9592 18.9133 63.2926 19.2C62.6326 19.4867 61.8892 19.63 61.0626 19.63C60.2359 19.63 59.4893 19.4867 58.8227 19.2C58.1627 18.9133 57.5992 18.52 57.1326 18.02C56.6726 17.5133 56.3193 16.9233 56.0727 16.25C55.826 15.57 55.7026 14.84 55.7026 14.06V5.31H56.7327V14.05C56.7327 14.71 56.8292 15.3267 57.0226 15.9C57.2226 16.4667 57.506 16.96 57.8727 17.38C58.246 17.8 58.6993 18.13 59.2327 18.37C59.7727 18.61 60.3826 18.73 61.0626 18.73ZM71.4438 19.46H70.4138V5.31H71.4438V19.46Z"})]})},Ri=function(){return Vr("svg",{viewBox:"0 0 15 17",fill:"currentColor",children:Vr("path",{d:"M6.11767 7.47586C6.47736 7.75563 6.91931 7.90898 7.37503 7.91213H7.42681C7.90756 7.90474 8.38832 7.71987 8.67677 7.46846C10.1856 6.18921 14.5568 2.18138 14.5568 2.18138C15.7254 1.09438 12.4637 0.00739 7.42681 0H7.36764C2.3308 0.00739 -0.930935 1.09438 0.237669 2.18138C0.237669 2.18138 4.60884 6.18921 6.11767 7.47586ZM8.67677 9.64243C8.31803 9.92483 7.87599 10.0808 7.41941 10.0861H7.37503C6.91845 10.0808 6.47641 9.92483 6.11767 9.64243C5.0822 8.75513 1.38409 5.42018 0.000989555 4.14832V6.07829C0.000989555 6.29273 0.0823481 6.57372 0.222877 6.70682L0.293316 6.7712L0.293344 6.77122C1.33784 7.72579 4.83903 10.9255 6.11767 12.0161C6.47641 12.2985 6.91845 12.4545 7.37503 12.4597H7.41941C7.90756 12.4449 8.38092 12.2601 8.67677 12.0161C9.9859 10.9069 13.6249 7.57198 14.5642 6.70682C14.7121 6.57372 14.7861 6.29273 14.7861 6.07829V4.14832C12.7662 5.99804 10.7297 7.82949 8.67677 9.64243ZM7.41941 14.6263C7.87513 14.6232 8.31708 14.4698 8.67677 14.19C10.7298 12.3746 12.7663 10.5407 14.7861 8.68853V10.6259C14.7861 10.8329 14.7121 11.1139 14.5642 11.247C13.6249 12.1196 9.9859 15.4471 8.67677 16.5563C8.38092 16.8077 7.90756 16.9926 7.41941 17H7.37503C6.91931 16.9968 6.47736 16.8435 6.11767 16.5637C4.91427 15.5373 1.74219 12.6364 0.502294 11.5025C0.393358 11.4029 0.299337 11.3169 0.222877 11.247C0.0823481 11.1139 0.000989555 10.8329 0.000989555 10.6259V8.68853C1.38409 9.95303 5.0822 13.2953 6.11767 14.1827C6.47641 14.4651 6.91845 14.6211 7.37503 14.6263H7.41941Z"})})},zi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"})})},ji=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})})},$i=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8zm-6 8c0-1.65.67-3.15 1.76-4.24L6.34 7.34C4.9 8.79 4 10.79 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91z"})})},Hi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"})})},Ui=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})})},Yi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})})},Vi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})})},qi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"})})},Wi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"})})},Qi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"m7 10 5 5 5-5z"})})},Gi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:[Vr("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),Vr("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})]})},Ji=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z"})})},Zi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"m22 5.72-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39 6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"})})},Ki=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2V8zm0 3h2v2h-2v-2zM8 8h2v2H8V8zm0 3h2v2H8v-2zm-1 2H5v-2h2v2zm0-3H5V8h2v2zm9 7H8v-2h8v2zm0-4h-2v-2h2v2zm0-3h-2V8h2v2zm3 3h-2v-2h2v2zm0-3h-2V8h2v2z"})})},Xi=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M8 5v14l11-7z"})})},eo=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"m10 16.5 6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"})})},to=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"m3.5 18.49 6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"})})},no=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M10 10.02h5V21h-5zM17 21h3c1.1 0 2-.9 2-2v-9h-5v11zm3-18H5c-1.1 0-2 .9-2 2v3h19V5c0-1.1-.9-2-2-2zM3 19c0 1.1.9 2 2 2h3V10H3v9z"})})},ro=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"})})},io=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"})})},oo=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})})},ao=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M19 13H5v-2h14v2z"})})},uo=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M8.9999 14.7854L18.8928 4.8925C19.0803 4.70497 19.3347 4.59961 19.5999 4.59961C19.8651 4.59961 20.1195 4.70497 20.307 4.8925L21.707 6.2925C22.0975 6.68303 22.0975 7.31619 21.707 7.70672L9.70701 19.7067C9.31648 20.0972 8.68332 20.0972 8.2928 19.7067L2.6928 14.1067C2.50526 13.9192 2.3999 13.6648 2.3999 13.3996C2.3999 13.1344 2.50526 12.88 2.6928 12.6925L4.0928 11.2925C4.48332 10.902 5.11648 10.902 5.50701 11.2925L8.9999 14.7854Z"})})},lo=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"})})},co=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"})})},so=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"})})},fo=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M20 9H4v2h16V9zM4 15h16v-2H4v2z"})})},ho=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z"})})},po=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:[Vr("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21 5C19.89 4.65 18.67 4.5 17.5 4.5C15.55 4.5 13.45 4.9 12 6C10.55 4.9 8.45 4.5 6.5 4.5C5.33 4.5 4.11 4.65 3 5C2.25 5.25 1.6 5.55 1 6V20.6C1 20.85 1.25 21.1 1.5 21.1C1.6 21.1 1.65 21.1 1.75 21.05C3.15 20.3 4.85 20 6.5 20C8.2 20 10.65 20.65 12 21.5C13.35 20.65 15.8 20 17.5 20C19.15 20 20.85 20.3 22.25 21.05C22.35 21.1 22.4 21.1 22.5 21.1C22.75 21.1 23 20.85 23 20.6V6C22.4 5.55 21.75 5.25 21 5ZM21 18.5C19.9 18.15 18.7 18 17.5 18C15.8 18 13.35 18.65 12 19.5C10.65 18.65 8.2 18 6.5 18C5.3 18 4.1 18.15 3 18.5V7C4.1 6.65 5.3 6.5 6.5 6.5C8.2 6.5 10.65 7.15 12 8C13.35 7.15 15.8 6.5 17.5 6.5C18.7 6.5 19.9 6.65 21 7V18.5Z"}),Vr("path",{d:"M17.5 10.5C18.38 10.5 19.23 10.59 20 10.76V9.24C19.21 9.09 18.36 9 17.5 9C15.8 9 14.26 9.29 13 9.83V11.49C14.13 10.85 15.7 10.5 17.5 10.5ZM13 12.49V14.15C14.13 13.51 15.7 13.16 17.5 13.16C18.38 13.16 19.23 13.25 20 13.42V11.9C19.21 11.75 18.36 11.66 17.5 11.66C15.8 11.66 14.26 11.96 13 12.49ZM17.5 14.33C15.8 14.33 14.26 14.62 13 15.16V16.82C14.13 16.18 15.7 15.83 17.5 15.83C18.38 15.83 19.23 15.92 20 16.09V14.57C19.21 14.41 18.36 14.33 17.5 14.33Z"}),Vr("path",{d:"M6.5 10.5C5.62 10.5 4.77 10.59 4 10.76V9.24C4.79 9.09 5.64 9 6.5 9C8.2 9 9.74 9.29 11 9.83V11.49C9.87 10.85 8.3 10.5 6.5 10.5ZM11 12.49V14.15C9.87 13.51 8.3 13.16 6.5 13.16C5.62 13.16 4.77 13.25 4 13.42V11.9C4.79 11.75 5.64 11.66 6.5 11.66C8.2 11.66 9.74 11.96 11 12.49ZM6.5 14.33C8.2 14.33 9.74 14.62 11 15.16V16.82C9.87 16.18 8.3 15.83 6.5 15.83C5.62 15.83 4.77 15.92 4 16.09V14.57C4.79 14.41 5.64 14.33 6.5 14.33Z"})]})},vo=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10 10-4.49 10-10S17.51 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3-8c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3z"})})},mo=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 6C9.79 6 8 7.79 8 10H10C10 8.9 10.9 8 12 8C13.1 8 14 8.9 14 10C14 10.8792 13.4202 11.3236 12.7704 11.8217C11.9421 12.4566 11 13.1787 11 15H13C13 13.9046 13.711 13.2833 14.4408 12.6455C15.21 11.9733 16 11.2829 16 10C16 7.79 14.21 6 12 6ZM13 16V18H11V16H13Z"})})},go=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M4 20h16c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm0-3h2v2H4v-2zM2 6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2zm4 1H4V5h2v2zm-2 7h16c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm0-3h2v2H4v-2z"})})},yo=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})},_o=function(){return Vr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Vr("path",{d:"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z"})})},bo=function(e){var t=Ft(ee({width:0,height:0}),2),n=t[0],r=t[1];return ne((function(){var t=new ResizeObserver((function(e){var t=e[0].contentRect,n=t.width,i=t.height;r({width:n,height:i})}));return e&&t.observe(e),function(){e&&t.unobserve(e)}}),[e]),n},Do=n(123),wo=n.n(Do);function xo(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var ko=["to","isNavLink","children"],Co=function(e){var t=e.to,n=e.isNavLink,r=e.children,i=xo(e,ko);return n?Vr(fr,yr(yr({to:t},i),{},{children:r})):Vr("div",yr(yr({},i),{},{children:r}))},Ao=function(e){var t,n=e.activeItem,r=e.item,i=e.color,o=void 0===i?Rr("color-primary"):i,a=e.activeNavRef,u=e.onChange,l=e.isNavLink;return Vr(Co,{className:wo()(mr({"vm-tabs-item":!0,"vm-tabs-item_active":n===r.value},r.className||"",r.className)),isNavLink:l,to:r.value,style:{color:o},onClick:(t=r.value,function(){u&&u(t)}),ref:n===r.value?a:void 0,children:[r.icon&&Vr("div",{className:wo()({"vm-tabs-item__icon":!0,"vm-tabs-item__icon_single":!r.label}),children:r.icon}),r.label]})},Eo=function(e){var t=e.activeItem,n=e.items,r=e.color,i=void 0===r?Rr("color-primary"):r,o=e.onChange,a=e.indicatorPlacement,u=void 0===a?"bottom":a,l=e.isNavLink,c=bo(document.body),s=ie(null),f=Ft(ee({left:0,width:0,bottom:0}),2),d=f[0],h=f[1];return ne((function(){var e;if((null===(e=s.current)||void 0===e?void 0:e.base)instanceof HTMLElement){var t=s.current.base,n=t.offsetLeft,r=t.offsetWidth,i=t.offsetHeight;h({left:n,width:r,bottom:"top"===u?i-2:0})}}),[c,t,s,n]),Vr("div",{className:"vm-tabs",children:[n.map((function(e){return Vr(Ao,{activeItem:t,item:e,onChange:o,color:i,activeNavRef:s,isNavLink:l},e.value)})),Vr("div",{className:"vm-tabs__indicator",style:yr(yr({},d),{},{borderColor:i})})]})},So=[{value:"chart",icon:Vr(to,{}),label:"Graph",prometheusCode:0},{value:"code",icon:Vr(ro,{}),label:"JSON",prometheusCode:3},{value:"table",icon:Vr(no,{}),label:"Table",prometheusCode:1}],No=function(){var e=Io().displayType,t=Po();return Vr(Eo,{activeItem:e,items:So,onChange:function(n){var r;t({type:"SET_DISPLAY_TYPE",payload:null!==(r=n)&&void 0!==r?r:e})}})},Fo=Br("g0.tab",0),Mo=So.find((function(e){return e.prometheusCode===+Fo||e.value===Fo})),To=Ir("SERIES_LIMITS"),Oo={displayType:(null===Mo||void 0===Mo?void 0:Mo.value)||"chart",nocache:!1,isTracingEnabled:!1,seriesLimits:To?JSON.parse(Ir("SERIES_LIMITS")):Tr,tableCompact:Ir("TABLE_COMPACT")||!1};function Bo(e,t){switch(t.type){case"SET_DISPLAY_TYPE":return yr(yr({},e),{},{displayType:t.payload});case"SET_SERIES_LIMITS":return Lr("SERIES_LIMITS",JSON.stringify(t.payload)),yr(yr({},e),{},{seriesLimits:t.payload});case"TOGGLE_QUERY_TRACING":return yr(yr({},e),{},{isTracingEnabled:!e.isTracingEnabled});case"TOGGLE_NO_CACHE":return yr(yr({},e),{},{nocache:!e.nocache});case"TOGGLE_TABLE_COMPACT":return Lr("TABLE_COMPACT",!e.tableCompact),yr(yr({},e),{},{tableCompact:!e.tableCompact});default:throw new Error}}var Lo=j({}),Io=function(){return le(Lo).state},Po=function(){return le(Lo).dispatch},Ro={customStep:Br("g0.step_input",""),yaxis:{limits:{enable:!1,range:{1:[0,0]}}}};function zo(e,t){switch(t.type){case"TOGGLE_ENABLE_YAXIS_LIMITS":return yr(yr({},e),{},{yaxis:yr(yr({},e.yaxis),{},{limits:yr(yr({},e.yaxis.limits),{},{enable:!e.yaxis.limits.enable})})});case"SET_CUSTOM_STEP":return yr(yr({},e),{},{customStep:t.payload});case"SET_YAXIS_LIMITS":return yr(yr({},e),{},{yaxis:yr(yr({},e.yaxis),{},{limits:yr(yr({},e.yaxis.limits),{},{range:t.payload})})});default:throw new Error}}var jo=j({}),$o=function(){return le(jo).state},Ho=function(){return le(jo).dispatch},Uo={runQuery:0,topN:Br("topN",10),date:Br("date",_t()().tz().format(Jr)),focusLabel:Br("focusLabel",""),match:Br("match",""),extraLabel:Br("extra_label","")};function Yo(e,t){switch(t.type){case"SET_TOP_N":return yr(yr({},e),{},{topN:t.payload});case"SET_DATE":return yr(yr({},e),{},{date:t.payload});case"SET_MATCH":return yr(yr({},e),{},{match:t.payload});case"SET_EXTRA_LABEL":return yr(yr({},e),{},{extraLabel:t.payload});case"SET_FOCUS_LABEL":return yr(yr({},e),{},{focusLabel:t.payload});case"RUN_QUERY":return yr(yr({},e),{},{runQuery:e.runQuery+1});default:throw new Error}}var Vo=j({}),qo=function(){return le(Vo).state},Wo=function(){return le(Vo).dispatch},Qo={topN:Br("topN",null),maxLifetime:Br("maxLifetime",""),runQuery:0};function Go(e,t){switch(t.type){case"SET_TOP_N":return yr(yr({},e),{},{topN:t.payload});case"SET_MAX_LIFE_TIME":return yr(yr({},e),{},{maxLifetime:t.payload});case"SET_RUN_QUERY":return yr(yr({},e),{},{runQuery:e.runQuery+1});default:throw new Error}}var Jo=j({}),Zo=function(){return le(Jo).state},Ko={windows:"Windows",mac:"Mac OS",linux:"Linux"};function Xo(){var e=bo(document.body),t=function(){var e=function(){var e=["Android","webOS","iPhone","iPad","iPod","BlackBerry","Windows Phone"].map((function(e){return navigator.userAgent.match(new RegExp(e,"i"))}));return e.some((function(e){return e}))}(),t=window.innerWidth<500;return e||t},n=Ft(ee(t()),2),r=n[0],i=n[1];return ne((function(){i(t())}),[e]),{isMobile:r}}var ea={success:Vr(Vi,{}),error:Vr(Yi,{}),warning:Vr(Ui,{}),info:Vr(Hi,{})},ta=function(e){var t,n=e.variant,r=e.children,i=Wr().isDarkTheme,o=Xo().isMobile;return Vr("div",{className:wo()((t={"vm-alert":!0},mr(t,"vm-alert_".concat(n),n),mr(t,"vm-alert_dark",i),mr(t,"vm-alert_mobile",o),t)),children:[Vr("div",{className:"vm-alert__icon",children:ea[n||"info"]}),Vr("div",{className:"vm-alert__content",children:r})]})},na=j({showInfoMessage:function(){}}),ra=function(){return le(na)},ia={dashboardsSettings:[],dashboardsLoading:!1,dashboardsError:""};function oa(e,t){switch(t.type){case"SET_DASHBOARDS_SETTINGS":return yr(yr({},e),{},{dashboardsSettings:t.payload});case"SET_DASHBOARDS_LOADING":return yr(yr({},e),{},{dashboardsLoading:t.payload});case"SET_DASHBOARDS_ERROR":return yr(yr({},e),{},{dashboardsError:t.payload});default:throw new Error}}var aa=j({}),ua=function(){return le(aa).state},la=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return function(n){var r=n.children;return Vr(e,{children:Vr(t,{children:r})})}}),(function(e){return Vr(g,{children:e.children})}))}.apply(void 0,[function(e){var t=e.children,n=Ft(te(Ur,Gr),2),r=n[0],i=n[1],o=ae((function(){return{state:r,dispatch:i}}),[r,i]);return Vr(qr.Provider,{value:o,children:t})},function(e){var t=e.children,n=Ft(te(Ei,Ai),2),r=n[0],i=n[1],o=ae((function(){return{state:r,dispatch:i}}),[r,i]);return Vr(Si.Provider,{value:o,children:t})},function(e){var t=e.children,n=Ft(te(Oi,Ti),2),r=n[0],i=n[1],o=ae((function(){return{state:r,dispatch:i}}),[r,i]);return Vr(Bi.Provider,{value:o,children:t})},function(e){var t=e.children,n=Ft(te(Bo,Oo),2),r=n[0],i=n[1],o=ae((function(){return{state:r,dispatch:i}}),[r,i]);return Vr(Lo.Provider,{value:o,children:t})},function(e){var t=e.children,n=Ft(te(zo,Ro),2),r=n[0],i=n[1],o=ae((function(){return{state:r,dispatch:i}}),[r,i]);return Vr(jo.Provider,{value:o,children:t})},function(e){var t=e.children,n=Ft(te(Yo,Uo),2),r=n[0],i=n[1],o=ae((function(){return{state:r,dispatch:i}}),[r,i]);return Vr(Vo.Provider,{value:o,children:t})},function(e){var t=e.children,n=Ft(te(Go,Qo),2),r=n[0],i=n[1],o=ae((function(){return{state:r,dispatch:i}}),[r,i]);return Vr(Jo.Provider,{value:o,children:t})},function(e){var t=e.children,n=Xo().isMobile,r=Ft(ee({}),2),i=r[0],o=r[1],a=Ft(ee(!1),2),u=a[0],l=a[1],c=Ft(ee(void 0),2),s=c[0],f=c[1];ne((function(){if(s){o({message:s.text,variant:s.type,key:Date.now()}),l(!0);var e=setTimeout(d,4e3);return function(){return clearTimeout(e)}}}),[s]);var d=function(){f(void 0),l(!1)};return Vr(na.Provider,{value:{showInfoMessage:f},children:[u&&Vr("div",{className:wo()({"vm-snackbar":!0,"vm-snackbar_mobile":n}),children:Vr(ta,{variant:i.variant,children:Vr("div",{className:"vm-snackbar-content",children:[Vr("span",{children:i.message}),Vr("div",{className:"vm-snackbar-content__close",onClick:d,children:Vr(ji,{})})]})})}),t]})},function(e){var t=e.children,n=Ft(te(oa,ia),2),r=n[0],i=n[1],o=ae((function(){return{state:r,dispatch:i}}),[r,i]);return Vr(aa.Provider,{value:o,children:t})}]),ca=function(e){var t=e.activeMenu,n=e.label,r=e.value,i=e.color;return Vr(fr,{className:wo()({"vm-header-nav-item":!0,"vm-header-nav-item_active":t===r}),style:{color:i},to:r,children:n})},sa=function(e,t,n){ne((function(){var r=function(r){var i=null===e||void 0===e?void 0:e.current,o=r.target,a=(null===n||void 0===n?void 0:n.current)&&n.current.contains(o);!i||i.contains((null===r||void 0===r?void 0:r.target)||null)||a||t(r)};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),function(){document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r)}}),[e,t])},fa=function(e){var t,n=e.variant,r=void 0===n?"contained":n,i=e.color,o=void 0===i?"primary":i,a=e.size,u=void 0===a?"medium":a,l=e.children,c=e.endIcon,s=e.startIcon,f=e.fullWidth,d=void 0!==f&&f,h=e.className,p=e.disabled,v=e.onClick,m=e.onMouseDown;return Vr("button",{className:wo()((mr(t={"vm-button":!0},"vm-button_".concat(r,"_").concat(o),!0),mr(t,"vm-button_".concat(u),u),mr(t,"vm-button_icon",(s||c)&&!l),mr(t,"vm-button_full-width",d),mr(t,"vm-button_with-icon",s||c),mr(t,"vm-button_disabled",p),mr(t,h||"",h),t)),disabled:p,onClick:v,onMouseDown:m,children:Vr(g,{children:[s&&Vr("span",{className:"vm-button__start-icon",children:s}),l&&Vr("span",{children:l}),c&&Vr("span",{className:"vm-button__end-icon",children:c})]})})},da=function(e){var t=e.children,n=e.buttonRef,r=e.placement,i=void 0===r?"bottom-left":r,o=e.open,a=void 0!==o&&o,u=e.onClose,l=e.offset,c=void 0===l?{top:6,left:0}:l,s=e.clickOutside,f=void 0===s||s,d=e.fullWidth,h=e.title,p=e.disabledFullScreen,v=Xo().isMobile,m=$n(),y=jn(),_=Ft(ee(!1),2),b=_[0],D=_[1],w=Ft(ee({width:0,height:0}),2),x=w[0],k=w[1],C=ie(null),A=function(){D(!1)};ne((function(){return window.addEventListener("scroll",A),function(){window.removeEventListener("scroll",A)}}),[]),ne((function(){D(a)}),[a]),ne((function(){return!b&&u&&u(),b&&v&&!p&&(document.body.style.overflow="hidden"),function(){document.body.style.overflow="auto"}}),[b]),ne((function(){var e,t;k({width:(null===C||void 0===C||null===(e=C.current)||void 0===e?void 0:e.clientWidth)||0,height:(null===C||void 0===C||null===(t=C.current)||void 0===t?void 0:t.clientHeight)||0}),D(!1)}),[C]);var E=ae((function(){var e=n.current;if(!e||!b)return{};var t=e.getBoundingClientRect(),r={top:0,left:0,width:"auto"},o="bottom-right"===i||"top-right"===i,a=null===i||void 0===i?void 0:i.includes("top"),u=(null===c||void 0===c?void 0:c.top)||0,l=(null===c||void 0===c?void 0:c.left)||0;r.left=r.left=t.left+l,r.top=t.height+t.top+u,o&&(r.left=t.right-x.width),a&&(r.top=t.top-x.height-u);var s=window,f=s.innerWidth,h=s.innerHeight,p=r.top+x.height+20>h,v=r.top-20<0,m=r.left+x.width+20>f,g=r.left-20<0;return p&&(r.top=t.top-x.height-u),v&&(r.top=t.height+t.top+u),m&&(r.left=t.right-x.width-l),g&&(r.left=t.left+l),d&&(r.width="".concat(t.width,"px")),r.top<0&&(r.top=20),r}),[n,i,b,t,d]);f&&sa(C,(function(){return D(!1)}),n),ne((function(){if(C.current&&b&&(!v||p)){var e=C.current.getBoundingClientRect(),t=e.right,n=e.width;if(t>window.innerWidth){var r=window.innerWidth-20-n;C.current.style.left=r<window.innerWidth?"0":"".concat(r,"px")}}}),[b,C]);var S=function(){b&&v&&!p&&(m(y,{replace:!0}),u())};ne((function(){return window.addEventListener("popstate",S),function(){window.removeEventListener("popstate",S)}}),[b,v,p,y]);var N=wo()({"vm-popper":!0,"vm-popper_mobile":v&&!p,"vm-popper_open":(v||Object.keys(E).length)&&b});return Vr(g,{children:(b||!x.width)&>.createPortal(Vr("div",{className:N,ref:C,style:v&&!p?{}:E,children:[(h||v&&!p)&&Vr("div",{className:"vm-popper-header",children:[Vr("p",{className:"vm-popper-header__title",children:h}),Vr(fa,{variant:"text",size:"small",onClick:function(e){e.stopPropagation(),u()},children:Vr(ji,{})})]}),t]}),document.body)})},ha=function(e){var t=e.activeMenu,n=e.label,r=e.color,i=e.background,o=e.submenu,a=e.direction,u=jn().pathname,l=Ft(ee(!1),2),c=l[0],s=l[1],f=Ft(ee(null),2),d=f[0],h=f[1],p=ie(null),v=function(){s(!1)},m=function(){d&&clearTimeout(d);var e=setTimeout(v,300);h(e)};return ne((function(){v()}),[u]),"column"===a?Vr(g,{children:o.map((function(e){return Vr(ca,{activeMenu:t,value:e.value,label:e.label||""},e.value)}))}):Vr("div",{className:wo()({"vm-header-nav-item":!0,"vm-header-nav-item_sub":!0,"vm-header-nav-item_open":c,"vm-header-nav-item_active":o.find((function(e){return e.value===t}))}),style:{color:r},onMouseEnter:function(){s(!0),d&&clearTimeout(d)},onMouseLeave:m,ref:p,children:[n,Vr(Qi,{}),Vr(da,{open:c,placement:"bottom-left",offset:{top:12,left:0},onClose:v,buttonRef:p,children:Vr("div",{className:"vm-header-nav-item-submenu",style:{background:i},onMouseLeave:m,onMouseEnter:function(){d&&clearTimeout(d)},children:o.map((function(e){return Vr(ca,{activeMenu:t,value:e.value,label:e.label||"",color:r},e.value)}))})})]})},pa=function(e){var t=e.color,n=e.background,r=e.direction,i=Ar(),o=ua().dashboardsSettings,a=jn().pathname,u=Ft(ee(a),2),l=u[0],c=u[1],s=ae((function(){return[{label:xr[kr.home].title,value:kr.home},{label:"Explore",submenu:[{label:xr[kr.metrics].title,value:kr.metrics},{label:xr[kr.cardinality].title,value:kr.cardinality},{label:xr[kr.topQueries].title,value:kr.topQueries}]},{label:xr[kr.trace].title,value:kr.trace},{label:xr[kr.dashboards].title,value:kr.dashboards,hide:i||!o.length}].filter((function(e){return!e.hide}))}),[i,o]);return ne((function(){c(a)}),[a]),Vr("nav",{className:wo()(mr({"vm-header-nav":!0},"vm-header-nav_".concat(r),r)),children:s.map((function(e){return e.submenu?Vr(ha,{activeMenu:l,label:e.label||"",submenu:e.submenu,color:t,background:n,direction:r},e.label):Vr(ca,{activeMenu:l,value:e.value,label:e.label||"",color:t},e.value)}))})},va=function(e){var t=e.title,n=e.children,r=e.onClose,i=e.className,o=e.isOpen,a=void 0===o||o,u=Xo().isMobile,l=$n(),c=jn(),s=function(e){"Escape"===e.key&&r()},f=function(e){e.stopPropagation()},d=function(){a&&(l(c,{replace:!0}),r())};ne((function(){return window.addEventListener("popstate",d),function(){window.removeEventListener("popstate",d)}}),[a,c]);return ne((function(){if(a)return document.body.style.overflow="hidden",window.addEventListener("keyup",s),function(){document.body.style.overflow="auto",window.removeEventListener("keyup",s)}}),[a]),gt.createPortal(Vr("div",{className:wo()(mr({"vm-modal":!0,"vm-modal_mobile":u},"".concat(i),i)),onMouseDown:r,children:Vr("div",{className:"vm-modal-content",children:[Vr("div",{className:"vm-modal-content-header",onMouseDown:f,children:[t&&Vr("div",{className:"vm-modal-content-header__title",children:t}),Vr("div",{className:"vm-modal-header__close",children:Vr(fa,{variant:"text",size:"small",onClick:r,children:Vr(ji,{})})})]}),Vr("div",{className:"vm-modal-content-body",onMouseDown:f,children:n})]})}),document.body)},ma=function(e){var t=e.children,n=e.title,r=e.open,i=e.placement,o=void 0===i?"bottom-center":i,a=e.offset,u=void 0===a?{top:6,left:0}:a,l=Xo().isMobile,c=Ft(ee(!1),2),s=c[0],f=c[1],d=Ft(ee({width:0,height:0}),2),h=d[0],p=d[1],v=ie(null),m=ie(null),y=function(){return f(!1)};ne((function(){return window.addEventListener("scroll",y),function(){window.removeEventListener("scroll",y)}}),[]),ne((function(){m.current&&s&&p({width:m.current.clientWidth,height:m.current.clientHeight})}),[s]);var _=ae((function(){var e,t=null===v||void 0===v||null===(e=v.current)||void 0===e?void 0:e.base;if(!t||!s)return{};var n=t.getBoundingClientRect(),r={top:0,left:0},i="bottom-right"===o||"top-right"===o,a="bottom-left"===o||"top-left"===o,l=null===o||void 0===o?void 0:o.includes("top"),c=(null===u||void 0===u?void 0:u.top)||0,f=(null===u||void 0===u?void 0:u.left)||0;r.left=n.left-(h.width-n.width)/2+f,r.top=n.height+n.top+c,i&&(r.left=n.right-h.width),a&&(r.left=n.left+f),l&&(r.top=n.top-h.height-c);var d=window,p=d.innerWidth,m=d.innerHeight,g=r.top+h.height+20>m,y=r.top-20<0,_=r.left+h.width+20>p,b=r.left-20<0;return g&&(r.top=n.top-h.height-c),y&&(r.top=n.height+n.top+c),_&&(r.left=n.right-h.width-f),b&&(r.left=n.left+f),r.top<0&&(r.top=20),r.left<0&&(r.left=20),r}),[v,o,s,h]),b=function(){"boolean"!==typeof r&&f(!0)},D=function(){f(!1)};return ne((function(){"boolean"===typeof r&&f(r)}),[r]),ne((function(){var e,t=null===v||void 0===v||null===(e=v.current)||void 0===e?void 0:e.base;if(t)return t.addEventListener("mouseenter",b),t.addEventListener("mouseleave",D),function(){t.removeEventListener("mouseenter",b),t.removeEventListener("mouseleave",D)}}),[v]),Vr(g,{children:[Vr(g,{ref:v,children:t}),!l&&s&>.createPortal(Vr("div",{className:"vm-tooltip",ref:m,style:_,children:n}),document.body)]})},ga=(Object.values(Ko).find((function(e){return navigator.userAgent.indexOf(e)>=0}))||"unknown")===Ko.mac?"Cmd":"Ctrl",ya=[{title:"Query",list:[{keys:["Enter"],description:"Run"},{keys:["Shift","Enter"],description:"Multi-line queries"},{keys:[ga,"Arrow Up"],description:"Previous command from the Query history"},{keys:[ga,"Arrow Down"],description:"Next command from the Query history"},{keys:[ga,"Click by 'Eye'"],description:"Toggle multiple queries"}]},{title:"Graph",list:[{keys:[ga,"Scroll Up"],alt:["+"],description:"Zoom in"},{keys:[ga,"Scroll Down"],alt:["-"],description:"Zoom out"},{keys:[ga,"Click and Drag"],description:"Move the graph left/right"}]},{title:"Legend",list:[{keys:["Mouse Click"],description:"Select series"},{keys:[ga,"Mouse Click"],description:"Toggle multiple series"}]}],_a="Shortcut keys",ba=function(e){var t=e.showTitle,n=Ft(ee(!1),2),r=n[0],i=n[1],o=Ar();return Vr(g,{children:[Vr(ma,{open:!0!==t&&void 0,title:_a,placement:"bottom-center",children:Vr(fa,{className:o?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Vr(Ki,{}),onClick:function(){i(!0)},children:t&&_a})}),r&&Vr(va,{title:"Shortcut keys",onClose:function(){i(!1)},children:Vr("div",{className:"vm-shortcuts",children:ya.map((function(e){return Vr("div",{className:"vm-shortcuts-section",children:[Vr("h3",{className:"vm-shortcuts-section__title",children:e.title}),Vr("div",{className:"vm-shortcuts-section-list",children:e.list.map((function(e){return Vr("div",{className:"vm-shortcuts-section-list-item",children:[Vr("div",{className:"vm-shortcuts-section-list-item__key",children:[e.keys.map((function(t,n){return Vr(g,{children:[Vr("code",{children:t},t),n!==e.keys.length-1?"+":""]})})),e.alt&&e.alt.map((function(t,n){return Vr(g,{children:["or",Vr("code",{children:t},t),n!==e.alt.length-1?"+":""]})}))]}),Vr("p",{className:"vm-shortcuts-section-list-item__description",children:e.description})]},e.keys.join("+"))}))})]},e.title)}))})})]})},Da=function(e){var t=e.open;return Vr("button",{className:wo()({"vm-menu-burger":!0,"vm-menu-burger_opened":t}),children:Vr("span",{})})},wa=function(e){var t=e.background,n=e.color,r=jn().pathname,i=Xo().isMobile,o=ie(null),a=Ft(ee(!1),2),u=a[0],l=a[1],c=function(){l(!1)};return ne(c,[r]),sa(o,c),Vr("div",{className:"vm-header-sidebar",ref:o,children:[Vr("div",{className:wo()({"vm-header-sidebar-button":!0,"vm-header-sidebar-button_open":u}),onClick:function(){l((function(e){return!e}))},children:Vr(Da,{open:u})}),Vr("div",{className:wo()({"vm-header-sidebar-menu":!0,"vm-header-sidebar-menu_open":u}),children:[Vr("div",{children:Vr(pa,{color:n,background:t,direction:"column"})}),Vr("div",{className:"vm-header-sidebar-menu-settings",children:!i&&Vr(ba,{showTitle:!0})})]})]})},xa=function(e){var t=e.label,n=e.value,r=e.type,i=void 0===r?"text":r,o=e.error,a=void 0===o?"":o,u=e.placeholder,l=e.endIcon,c=e.startIcon,s=e.disabled,f=void 0!==s&&s,d=e.autofocus,h=void 0!==d&&d,p=e.helperText,v=e.inputmode,m=void 0===v?"text":v,g=e.onChange,y=e.onEnter,_=e.onKeyDown,b=e.onFocus,D=e.onBlur,w=Wr().isDarkTheme,x=Xo().isMobile,k=ie(null),C=ie(null),A=ae((function(){return"textarea"===i?C:k}),[i]),E=wo()({"vm-text-field__input":!0,"vm-text-field__input_error":a,"vm-text-field__input_icon-start":c,"vm-text-field__input_disabled":f,"vm-text-field__input_textarea":"textarea"===i}),S=function(e){_&&_(e),"Enter"!==e.key||e.shiftKey||(e.preventDefault(),y&&y())},N=function(e){f||g&&g(e.target.value)};ne((function(){var e;h&&!x&&(null===A||void 0===A||null===(e=A.current)||void 0===e?void 0:e.focus)&&A.current.focus()}),[A,h]);var F=function(){b&&b()},M=function(){D&&D()};return Vr("label",{className:wo()({"vm-text-field":!0,"vm-text-field_textarea":"textarea"===i,"vm-text-field_dark":w}),"data-replicated-value":n,children:[c&&Vr("div",{className:"vm-text-field__icon-start",children:c}),l&&Vr("div",{className:"vm-text-field__icon-end",children:l}),"textarea"===i?Vr("textarea",{className:E,disabled:f,ref:C,value:n,rows:1,inputMode:m,placeholder:u,autoCapitalize:"none",onInput:N,onKeyDown:S,onFocus:F,onBlur:M}):Vr("input",{className:E,disabled:f,ref:k,value:n,type:i,placeholder:u,inputMode:m,autoCapitalize:"none",onInput:N,onKeyDown:S,onFocus:F,onBlur:M}),t&&Vr("span",{className:"vm-text-field__label",children:t}),Vr("span",{className:"vm-text-field__error","data-show":!!a,children:a}),p&&!a&&Vr("span",{className:"vm-text-field__helper-text",children:p})]})},ka=function(e){var t=e.accountIds,n=Ar(),r=Xo().isMobile,i=Wr(),o=i.tenantId,a=i.serverUrl,u=Qr(),l=Fi(),c=Ft(ee(""),2),f=c[0],d=c[1],h=Ft(ee(!1),2),p=h[0],v=h[1],m=ie(null),g=ae((function(){if(!f)return t;try{var e=new RegExp(f,"i");return t.filter((function(t){return e.test(t)})).sort((function(t,n){var r,i;return((null===(r=t.match(e))||void 0===r?void 0:r.index)||0)-((null===(i=n.match(e))||void 0===i?void 0:i.index)||0)}))}catch(s){return[]}}),[f,t]),y=ae((function(){return t.length>1&&!0}),[t,a]),_=function(){v((function(e){return!e}))},b=function(){v(!1)},D=function(e){return function(){var t=e;if(u({type:"SET_TENANT_ID",payload:t}),a){var n=Er(a,t);if(n===a)return;u({type:"SET_SERVER",payload:n}),l({type:"RUN_QUERY"})}b()}};return ne((function(){var e=(a.match(/(\/select\/)(\d+|\d.+)(\/)(.+)/)||[])[2];o&&o!==e?D(o)():D(e)()}),[a]),y?Vr("div",{className:"vm-tenant-input",children:[Vr(ma,{title:"Define Tenant ID if you need request to another storage",children:Vr("div",{ref:m,children:r?Vr("div",{className:"vm-mobile-option",onClick:_,children:[Vr("span",{className:"vm-mobile-option__icon",children:Vr(go,{})}),Vr("div",{className:"vm-mobile-option-text",children:[Vr("span",{className:"vm-mobile-option-text__label",children:"Tenant ID"}),Vr("span",{className:"vm-mobile-option-text__value",children:o})]}),Vr("span",{className:"vm-mobile-option__arrow",children:Vr(Wi,{})})]}):Vr(fa,{className:n?"":"vm-header-button",variant:"contained",color:"primary",fullWidth:!0,startIcon:Vr(go,{}),endIcon:Vr("div",{className:wo()({"vm-execution-controls-buttons__arrow":!0,"vm-execution-controls-buttons__arrow_open":p}),children:Vr(Wi,{})}),onClick:_,children:o})})}),Vr(da,{open:p,placement:"bottom-right",onClose:b,buttonRef:m,title:r?"Define Tenant ID":void 0,children:Vr("div",{className:wo()({"vm-list vm-tenant-input-list":!0,"vm-list vm-tenant-input-list_mobile":r}),children:[Vr("div",{className:"vm-tenant-input-list__search",children:Vr(xa,{autofocus:!0,label:"Search",value:f,onChange:d,type:"search"})}),g.map((function(e){return Vr("div",{className:wo()({"vm-list-item":!0,"vm-list-item_mobile":r,"vm-list-item_active":e===o}),onClick:D(e),children:e},e)}))]})})]}):null};var Ca,Aa=function(e){var t=ie();return ne((function(){t.current=e}),[e]),t.current},Ea=function(){var e=Ar(),t=Xo().isMobile,n=$o().customStep,r=Ni().period.step,i=Ho(),o=Ni().period,a=Aa(o.end-o.start),u=Ft(ee(!1),2),l=u[0],c=u[1],s=Ft(ee(n||r),2),f=s[0],d=s[1],h=Ft(ee(""),2),p=h[0],v=h[1],m=ie(null),g=function(){c((function(e){return!e}))},y=function(){c(!1)},_=function(e){var t=e||f||r||"1s",n=(t.match(/[a-zA-Z]+/g)||[]).length?t:"".concat(t,"s");i({type:"SET_CUSTOM_STEP",payload:n}),d(n),v("")},b=function(e){var t=e.match(/[-+]?([0-9]*\.[0-9]+|[0-9]+)/g)||[],n=e.match(/[a-zA-Z]+/g)||[],r=t.length&&t.every((function(e){return parseFloat(e)>0})),i=n.every((function(e){return ii.find((function(t){return t.short===e}))})),o=r&&i;d(e),v(o?"":_r.validStep)};return ne((function(){n&&_(n)}),[n]),ne((function(){!n&&r&&_(r)}),[r]),ne((function(){o.end-o.start!==a&&a&&r&&_(r)}),[o,a,r]),Vr("div",{className:"vm-step-control",ref:m,children:[t?Vr("div",{className:"vm-mobile-option",onClick:g,children:[Vr("span",{className:"vm-mobile-option__icon",children:Vr(ho,{})}),Vr("div",{className:"vm-mobile-option-text",children:[Vr("span",{className:"vm-mobile-option-text__label",children:"Step"}),Vr("span",{className:"vm-mobile-option-text__value",children:f})]}),Vr("span",{className:"vm-mobile-option__arrow",children:Vr(Wi,{})})]}):Vr(ma,{title:"Query resolution step width",children:Vr(fa,{className:e?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Vr(ho,{}),onClick:g,children:Vr("p",{children:["STEP",Vr("p",{className:"vm-step-control__value",children:f})]})})}),Vr(da,{open:l,placement:"bottom-right",onClose:y,buttonRef:m,title:t?"Query resolution step width":void 0,children:Vr("div",{className:wo()({"vm-step-control-popper":!0,"vm-step-control-popper_mobile":t}),children:[Vr(xa,{autofocus:!0,label:"Step value",value:f,error:p,onChange:b,onEnter:function(){_(),y()},onFocus:function(){document.activeElement instanceof HTMLInputElement&&document.activeElement.select()},onBlur:_,endIcon:Vr(ma,{title:"Set default step value: ".concat(r),children:Vr(fa,{size:"small",variant:"text",color:"primary",startIcon:Vr($i,{}),onClick:function(){var e=r||"1s";b(e),_(e)}})})}),Vr("div",{className:"vm-step-control-popper-info",children:[Vr("code",{children:"step"})," - the ",Vr("a",{className:"vm-link vm-link_colored",href:"https://prometheus.io/docs/prometheus/latest/querying/basics/#time-durations",target:"_blank",rel:"noreferrer",children:"interval"}),"between datapoints, which must be returned from the range query. The ",Vr("code",{children:"query"})," is executed at",Vr("code",{children:"start"}),", ",Vr("code",{children:"start+step"}),", ",Vr("code",{children:"start+2*step"}),", \u2026, ",Vr("code",{children:"end"})," timestamps.",Vr("a",{className:"vm-link vm-link_colored",href:"https://docs.victoriametrics.com/keyConcepts.html#range-query",target:"_blank",rel:"help noreferrer",children:"Read more about Range query"})]})]})})]})},Sa=function(e){var t=e.relativeTime,n=e.setDuration,r=Xo().isMobile;return Vr("div",{className:wo()({"vm-time-duration":!0,"vm-time-duration_mobile":r}),children:pi.map((function(e){var i,o=e.id,a=e.duration,u=e.until,l=e.title;return Vr("div",{className:wo()({"vm-list-item":!0,"vm-list-item_mobile":r,"vm-list-item_active":o===t}),onClick:(i={duration:a,until:u(),id:o},function(){n(i)}),children:l||a},o)}))})},Na=function(e){var t=e.viewDate,n=e.displayYears,r=e.onChangeViewDate;return Vr("div",{className:"vm-calendar-header",children:[Vr("div",{className:"vm-calendar-header-left",onClick:e.toggleDisplayYears,children:[Vr("span",{className:"vm-calendar-header-left__date",children:t.format("MMMM YYYY")}),Vr("div",{className:"vm-calendar-header-left__select-year",children:Vr(Qi,{})})]}),!n&&Vr("div",{className:"vm-calendar-header-right",children:[Vr("div",{className:"vm-calendar-header-right__prev",onClick:function(){r(t.subtract(1,"month"))},children:Vr(Wi,{})}),Vr("div",{className:"vm-calendar-header-right__next",onClick:function(){r(t.add(1,"month"))},children:Vr(Wi,{})})]})]})},Fa=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Ma=function(e){var t=e.viewDate,n=e.selectDate,r=e.onChangeSelectDate,i=_t()().tz().startOf("day"),o=ae((function(){var e=new Array(42).fill(null),n=t.startOf("month"),r=t.endOf("month").diff(n,"day")+1,i=new Array(r).fill(n).map((function(e,t){return e.add(t,"day")})),o=n.day();return e.splice.apply(e,[o,r].concat(Ot(i))),e}),[t]),a=function(e){return function(){e&&r(e)}};return Vr("div",{className:"vm-calendar-body",children:[Fa.map((function(e){return Vr("div",{className:"vm-calendar-body-cell vm-calendar-body-cell_weekday",children:e[0]},e)})),o.map((function(e,t){return Vr("div",{className:wo()({"vm-calendar-body-cell":!0,"vm-calendar-body-cell_day":!0,"vm-calendar-body-cell_day_empty":!e,"vm-calendar-body-cell_day_active":(e&&e.toISOString())===n.startOf("day").toISOString(),"vm-calendar-body-cell_day_today":(e&&e.toISOString())===i.toISOString()}),onClick:a(e),children:e&&e.format("D")},e?e.toISOString():t)}))]})},Ta=function(e){var t=e.viewDate,n=e.onChangeViewDate,r=ae((function(){return t.format("YYYY")}),[t]),i=ae((function(){var e=_t()().subtract(103,"year");return new Array(206).fill(e).map((function(e,t){return e.add(t,"year")}))}),[t]);ne((function(){var e=document.getElementById("vm-calendar-year-".concat(r));e&&e.scrollIntoView({block:"center"})}),[]);return Vr("div",{className:"vm-calendar-years",children:i.map((function(e){return Vr("div",{className:wo()({"vm-calendar-years__year":!0,"vm-calendar-years__year_selected":e.format("YYYY")===r}),id:"vm-calendar-year-".concat(e.format("YYYY")),onClick:(t=e,function(){n(t)}),children:e.format("YYYY")},e.format("YYYY"));var t}))})};!function(e){e[e.hour=0]="hour",e[e.minutes=1]="minutes",e[e.seconds=2]="seconds"}(Ca||(Ca={}));var Oa=function(e){var t=e.selectDate,n=e.onChangeTime,r=e.onClose,i=Wr().isDarkTheme,o=Ft(ee(Ca.hour),2),a=o[0],u=o[1],l=Ft(ee(t.format("HH")),2),c=l[0],s=l[1],f=Ft(ee(t.format("mm")),2),d=f[0],h=f[1],p=Ft(ee(t.format("ss")),2),v=p[0],m=p[1],g=ae((function(){return a===Ca.hour?new Array(24).fill("00").map((function(e,t){return{value:t,degrees:t/12*360,offset:0===t||t>12,title:t?"".concat(t):e}})):new Array(60).fill("00").map((function(e,t){return{value:t,degrees:t/60*360,offset:!1,title:t?"".concat(t):e}}))}),[a,c,d,v]),y=ae((function(){switch(a){case Ca.hour:return+c/12*360;case Ca.minutes:return+d/60*360;case Ca.seconds:return+v/60*360}}),[a,c,d,v]),_=ie(null),b=ie(null),D=ie(null),w=function(e){return function(t){!function(e,t){t.target.select(),u(e)}(e,t)}};return ne((function(){n("".concat(c,":").concat(d,":").concat(v))}),[c,d,v]),ne((function(){s(t.format("HH")),h(t.format("mm")),m(t.format("ss"))}),[t]),ne((function(){_.current&&_.current.focus()}),[]),Vr("div",{className:"vm-calendar-time-picker",children:[Vr("div",{className:"vm-calendar-time-picker-clock",children:[Vr("div",{className:wo()({"vm-calendar-time-picker-clock__arrow":!0,"vm-calendar-time-picker-clock__arrow_offset":a===Ca.hour&&("00"===c||+c>12)}),style:{transform:"rotate(".concat(y,"deg)")}}),g.map((function(e){return Vr("div",{className:wo()({"vm-calendar-time-picker-clock__time":!0,"vm-calendar-time-picker-clock__time_offset":e.offset,"vm-calendar-time-picker-clock__time_hide":g.length>24&&e.value%5}),style:{transform:"rotate(".concat(e.degrees,"deg)")},onClick:(t=e.value,function(){var e=String(t);switch(a){case Ca.hour:s(e),b.current&&b.current.focus();break;case Ca.minutes:h(e),D.current&&D.current.focus();break;case Ca.seconds:m(e),r()}}),children:Vr("span",{style:{transform:"rotate(-".concat(e.degrees,"deg)")},children:e.title})},e.value);var t}))]}),Vr("div",{className:wo()({"vm-calendar-time-picker-fields":!0,"vm-calendar-time-picker-fields_dark":i}),children:[Vr("input",{className:"vm-calendar-time-picker-fields__input",value:c,onChange:function(e){var t=e.target,n=t.value,r=+n>23?"23":n;t.value=r,s(r),n.length>1&&b.current&&b.current.focus()},onFocus:w(Ca.hour),ref:_,type:"number",min:0,max:24}),Vr("span",{children:":"}),Vr("input",{className:"vm-calendar-time-picker-fields__input",value:d,onChange:function(e){var t=e.target,n=t.value,r=+n>59?"59":n;t.value=r,h(r),n.length>1&&D.current&&D.current.focus()},onFocus:w(Ca.minutes),ref:b,type:"number",min:0,max:60}),Vr("span",{children:":"}),Vr("input",{className:"vm-calendar-time-picker-fields__input",value:v,onChange:function(e){var t=e.target,n=t.value,i=+n>59?"59":n;t.value=i,m(i),n.length>1&&D.current&&r()},onFocus:w(Ca.seconds),ref:D,type:"number",min:0,max:60})]})]})},Ba=[{value:"date",icon:Vr(Ji,{})},{value:"time",icon:Vr(Gi,{})}],La=function(e){var t=e.date,n=e.timepicker,r=void 0!==n&&n,i=e.format,o=void 0===i?Zr:i,a=e.onChange,u=e.onClose,l=Ft(ee(!1),2),c=l[0],s=l[1],f=Ft(ee(_t().tz(t)),2),d=f[0],h=f[1],p=Ft(ee(_t().tz(t)),2),v=p[0],m=p[1],y=Ft(ee(Ba[0].value),2),_=y[0],b=y[1],D=Xo().isMobile,w=function(e){h(e),s(!1)};return ne((function(){v.format()!==_t().tz(t).format()&&a(v.format(o))}),[v]),Vr("div",{className:wo()({"vm-calendar":!0,"vm-calendar_mobile":D}),children:["date"===_&&Vr(Na,{viewDate:d,onChangeViewDate:w,toggleDisplayYears:function(){s((function(e){return!e}))},displayYears:c}),"date"===_&&Vr(g,{children:[!c&&Vr(Ma,{viewDate:d,selectDate:v,onChangeSelectDate:function(e){m(e),r&&b("time")}}),c&&Vr(Ta,{viewDate:d,onChangeViewDate:w})]}),"time"===_&&Vr(Oa,{selectDate:v,onChangeTime:function(e){var t=Ft(e.split(":"),3),n=t[0],r=t[1],i=t[2];m((function(e){return e.set("hour",+n).set("minute",+r).set("second",+i)}))},onClose:function(){u&&u()}}),r&&Vr("div",{className:"vm-calendar__tabs",children:Vr(Eo,{activeItem:_,items:Ba,onChange:function(e){b(e)},indicatorPlacement:"top"})})]})},Ia=Ae((function(e,t){var n=e.date,r=e.targetRef,i=e.format,o=void 0===i?Zr:i,a=e.timepicker,u=e.onChange,l=e.label,c=Ft(ee(!1),2),s=c[0],f=c[1],d=ae((function(){return n?_t().tz(n):_t()().tz()}),[n]),h=Xo().isMobile,p=function(){f((function(e){return!e}))},v=function(){f(!1)},m=function(e){"Escape"!==e.key&&"Enter"!==e.key||v()};return ne((function(){var e;return null===(e=r.current)||void 0===e||e.addEventListener("click",p),function(){var e;null===(e=r.current)||void 0===e||e.removeEventListener("click",p)}}),[r]),ne((function(){return window.addEventListener("keyup",m),function(){window.removeEventListener("keyup",m)}}),[]),Vr(g,{children:Vr(da,{open:s,buttonRef:r,placement:"bottom-right",onClose:v,title:h?l:void 0,children:Vr("div",{ref:t,children:Vr(La,{date:d,format:o,timepicker:a,onChange:function(e){a||v(),u(e)},onClose:v})})})})})),Pa=Ia,Ra=function(){var e=Xo().isMobile,t=Wr().isDarkTheme,n=ie(null),r=bo(document.body),i=ae((function(){return r.width>1280}),[r]),o=Ft(ee(),2),a=o[0],u=o[1],l=Ft(ee(),2),c=l[0],s=l[1],f=ae((function(){return _t().tz(c).format(Zr)}),[c]),d=ae((function(){return _t().tz(a).format(Zr)}),[a]),h=Ni(),p=h.period,v=p.end,m=p.start,y=h.relativeTime,_=h.timezone,b=h.duration,D=Fi(),w=Ar(),x=ae((function(){return{region:_,utc:mi(_)}}),[_]);ne((function(){u(fi(hi(v)))}),[_,v]),ne((function(){s(fi(hi(m)))}),[_,m]);var k=function(e){var t=e.duration,n=e.until,r=e.id;D({type:"SET_RELATIVE_TIME",payload:{duration:t,until:n,id:r}}),O(!1)},C=ae((function(){return{start:_t().tz(hi(m)).format(Zr),end:_t().tz(hi(v)).format(Zr)}}),[m,v,_]),A=ae((function(){return y&&"none"!==y?y.replace(/_/g," "):"".concat(C.start," - ").concat(C.end)}),[y,C]),E=ie(null),S=ie(null),N=ie(null),F=ie(null),M=Ft(ee(!1),2),T=M[0],O=M[1],B=ie(null),L=function(){O((function(e){return!e}))},I=function(){O(!1)};return ne((function(){var e=vi({relativeTimeId:y,defaultDuration:b,defaultEndInput:hi(v)});k({id:e.relativeTimeId,duration:e.duration,until:e.endInput})}),[_]),sa(n,(function(t){var n,r;if(!e){var i=t.target,o=(null===E||void 0===E?void 0:E.current)&&E.current.contains(i),a=(null===S||void 0===S?void 0:S.current)&&S.current.contains(i),u=(null===N||void 0===N?void 0:N.current)&&(null===N||void 0===N||null===(n=N.current)||void 0===n?void 0:n.contains(i)),l=(null===F||void 0===F?void 0:F.current)&&(null===F||void 0===F||null===(r=F.current)||void 0===r?void 0:r.contains(i));o||a||u||l||I()}})),Vr(g,{children:[Vr("div",{ref:B,children:e?Vr("div",{className:"vm-mobile-option",onClick:L,children:[Vr("span",{className:"vm-mobile-option__icon",children:Vr(Gi,{})}),Vr("div",{className:"vm-mobile-option-text",children:[Vr("span",{className:"vm-mobile-option-text__label",children:"Time range"}),Vr("span",{className:"vm-mobile-option-text__value",children:A})]}),Vr("span",{className:"vm-mobile-option__arrow",children:Vr(Wi,{})})]}):Vr(ma,{title:i?"Time range controls":A,children:Vr(fa,{className:w?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Vr(Gi,{}),onClick:L,children:i&&Vr("span",{children:A})})})}),Vr(da,{open:T,buttonRef:B,placement:"bottom-right",onClose:I,clickOutside:!1,title:e?"Time range controls":"",children:Vr("div",{className:wo()({"vm-time-selector":!0,"vm-time-selector_mobile":e}),ref:n,children:[Vr("div",{className:"vm-time-selector-left",children:[Vr("div",{className:wo()({"vm-time-selector-left-inputs":!0,"vm-time-selector-left-inputs_dark":t}),children:[Vr("div",{className:"vm-time-selector-left-inputs__date",ref:E,children:[Vr("label",{children:"From:"}),Vr("span",{children:f}),Vr(Ji,{}),Vr(Pa,{label:"Date From",ref:N,date:c||"",onChange:function(e){return s(e)},targetRef:E,timepicker:!0})]}),Vr("div",{className:"vm-time-selector-left-inputs__date",ref:S,children:[Vr("label",{children:"To:"}),Vr("span",{children:d}),Vr(Ji,{}),Vr(Pa,{label:"Date To",ref:F,date:a||"",onChange:function(e){return u(e)},targetRef:S,timepicker:!0})]})]}),Vr("div",{className:"vm-time-selector-left-timezone",children:[Vr("div",{className:"vm-time-selector-left-timezone__title",children:x.region}),Vr("div",{className:"vm-time-selector-left-timezone__utc",children:x.utc})]}),Vr(fa,{variant:"text",startIcon:Vr(Zi,{}),onClick:function(){return D({type:"RUN_QUERY_TO_NOW"})},children:"switch to now"}),Vr("div",{className:"vm-time-selector-left__controls",children:[Vr(fa,{color:"error",variant:"outlined",onClick:function(){u(fi(hi(v))),s(fi(hi(m))),O(!1)},children:"Cancel"}),Vr(fa,{color:"primary",onClick:function(){return c&&a&&D({type:"SET_PERIOD",payload:{from:_t().tz(c).toDate(),to:_t().tz(a).toDate()}}),void O(!1)},children:"Apply"})]})]}),Vr(Sa,{relativeTime:y||"",setDuration:k})]})})]})},za=function(){var e=Xo().isMobile,t=Ar(),n=ie(null),r=qo().date,i=Wo(),o=ae((function(){return _t().tz(r).format(Jr)}),[r]);return Vr("div",{children:[Vr("div",{ref:n,children:e?Vr("div",{className:"vm-mobile-option",children:[Vr("span",{className:"vm-mobile-option__icon",children:Vr(Ji,{})}),Vr("div",{className:"vm-mobile-option-text",children:[Vr("span",{className:"vm-mobile-option-text__label",children:"Date control"}),Vr("span",{className:"vm-mobile-option-text__value",children:o})]}),Vr("span",{className:"vm-mobile-option__arrow",children:Vr(Wi,{})})]}):Vr(ma,{title:"Date control",children:Vr(fa,{className:t?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Vr(Ji,{}),children:o})})}),Vr(Pa,{label:"Date control",date:r||"",format:Jr,onChange:function(e){i({type:"SET_DATE",payload:e})},targetRef:n})]})},ja=[{seconds:0,title:"Off"},{seconds:1,title:"1s"},{seconds:2,title:"2s"},{seconds:5,title:"5s"},{seconds:10,title:"10s"},{seconds:30,title:"30s"},{seconds:60,title:"1m"},{seconds:300,title:"5m"},{seconds:900,title:"15m"},{seconds:1800,title:"30m"},{seconds:3600,title:"1h"},{seconds:7200,title:"2h"}],$a=function(){var e=Xo().isMobile,t=Fi(),n=Ar(),r=Ft(ee(!1),2),i=r[0],o=r[1],a=Ft(ee(ja[0]),2),u=a[0],l=a[1];ne((function(){var e,n=u.seconds;return i?e=setInterval((function(){t({type:"RUN_QUERY"})}),1e3*n):l(ja[0]),function(){e&&clearInterval(e)}}),[u,i]);var c=Ft(ee(!1),2),s=c[0],f=c[1],d=ie(null),h=function(){f((function(e){return!e}))},p=function(e){return function(){!function(e){(i&&!e.seconds||!i&&e.seconds)&&o((function(e){return!e})),l(e),f(!1)}(e)}};return Vr(g,{children:[Vr("div",{className:"vm-execution-controls",children:Vr("div",{className:wo()({"vm-execution-controls-buttons":!0,"vm-execution-controls-buttons_mobile":e,"vm-header-button":!n}),children:[!e&&Vr(ma,{title:"Refresh dashboard",children:Vr(fa,{variant:"contained",color:"primary",onClick:function(){t({type:"RUN_QUERY"})},startIcon:Vr(qi,{})})}),e?Vr("div",{className:"vm-mobile-option",onClick:h,children:[Vr("span",{className:"vm-mobile-option__icon",children:Vr($i,{})}),Vr("div",{className:"vm-mobile-option-text",children:[Vr("span",{className:"vm-mobile-option-text__label",children:"Auto-refresh"}),Vr("span",{className:"vm-mobile-option-text__value",children:u.title})]}),Vr("span",{className:"vm-mobile-option__arrow",children:Vr(Wi,{})})]}):Vr(ma,{title:"Auto-refresh control",children:Vr("div",{ref:d,children:Vr(fa,{variant:"contained",color:"primary",fullWidth:!0,endIcon:Vr("div",{className:wo()({"vm-execution-controls-buttons__arrow":!0,"vm-execution-controls-buttons__arrow_open":s}),children:Vr(Wi,{})}),onClick:h,children:u.title})})})]})}),Vr(da,{open:s,placement:"bottom-right",onClose:function(){f(!1)},buttonRef:d,title:e?"Auto-refresh duration":void 0,children:Vr("div",{className:wo()({"vm-execution-controls-list":!0,"vm-execution-controls-list_mobile":e}),children:ja.map((function(t){return Vr("div",{className:wo()({"vm-list-item":!0,"vm-list-item_mobile":e,"vm-list-item_active":t.seconds===u.seconds}),onClick:p(t),children:t.title},t.seconds)}))})})]})},Ha=function(e){var t;try{t=new URL(e)}catch(_){return!1}return"http:"===t.protocol||"https:"===t.protocol},Ua=function(e){var t=e.serverUrl,n=e.onChange,r=e.onEnter,i=e.onBlur,o=Ft(ee(""),2),a=o[0],u=o[1];return Vr(xa,{autofocus:!0,label:"Server URL",value:t,error:a,onChange:function(e){var t=e||"";n(t),u(""),t||u(_r.emptyServer),Ha(t)||u(_r.validServer)},onEnter:r,onBlur:i,inputmode:"url"})},Ya=[{label:"Graph",type:"chart"},{label:"JSON",type:"code"},{label:"Table",type:"table"}],Va=function(e){var t=e.limits,n=e.onChange,r=e.onEnter,i=Xo().isMobile,o=Ft(ee({table:"",chart:"",code:""}),2),a=o[0],u=o[1],l=function(e){return function(r){!function(e,r){var i=e||"";u((function(e){return yr(yr({},e),{},mr({},r,+i<0?_r.positiveNumber:""))})),n(yr(yr({},t),{},mr({},r,i||1/0)))}(r,e)}};return Vr("div",{className:"vm-limits-configurator",children:[Vr("div",{className:"vm-server-configurator__title",children:["Series limits by tabs",Vr(ma,{title:"To disable limits set to 0",children:Vr(fa,{variant:"text",color:"primary",size:"small",startIcon:Vr(Hi,{})})}),Vr("div",{className:"vm-limits-configurator-title__reset",children:Vr(fa,{variant:"text",color:"primary",size:"small",startIcon:Vr($i,{}),onClick:function(){n(Tr)},children:"Reset"})})]}),Vr("div",{className:wo()({"vm-limits-configurator__inputs":!0,"vm-limits-configurator__inputs_mobile":i}),children:Ya.map((function(e){return Vr("div",{children:Vr(xa,{label:e.label,value:t[e.type],error:a[e.type],onChange:l(e.type),onEnter:r,type:"number"})},e.type)}))})]})},qa=function(e){var t=e.defaultExpanded,n=void 0!==t&&t,r=e.onChange,i=e.title,o=e.children,a=Ft(ee(n),2),u=a[0],l=a[1];return ne((function(){r&&r(u)}),[u]),Vr(g,{children:[Vr("header",{className:"vm-accordion-header ".concat(u&&"vm-accordion-header_open"),onClick:function(){l((function(e){return!e}))},children:[i,Vr("div",{className:"vm-accordion-header__arrow ".concat(u&&"vm-accordion-header__arrow_open"),children:Vr(Wi,{})})]}),u&&Vr("section",{className:"vm-accordion-section",children:o},"content")]})},Wa=function(e){var t=e.timezoneState,n=e.onChange,r=Xo().isMobile,i=gi(),o=Ft(ee(!1),2),a=o[0],u=o[1],l=Ft(ee(""),2),c=l[0],f=l[1],d=ie(null),h=ae((function(){if(!c)return i;try{return gi(c)}catch(s){return{}}}),[c,i]),p=ae((function(){return Object.keys(h)}),[h]),v=ae((function(){return{region:_t().tz.guess(),utc:mi(_t().tz.guess())}}),[]),m=ae((function(){return{region:t,utc:mi(t)}}),[t]),g=function(){u(!1)},y=function(e){return function(){!function(e){n(e.region),f(""),g()}(e)}};return Vr("div",{className:"vm-timezones",children:[Vr("div",{className:"vm-server-configurator__title",children:"Time zone"}),Vr("div",{className:"vm-timezones-item vm-timezones-item_selected",onClick:function(){u((function(e){return!e}))},ref:d,children:[Vr("div",{className:"vm-timezones-item__title",children:m.region}),Vr("div",{className:"vm-timezones-item__utc",children:m.utc}),Vr("div",{className:wo()({"vm-timezones-item__icon":!0,"vm-timezones-item__icon_open":a}),children:Vr(Qi,{})})]}),Vr(da,{open:a,buttonRef:d,placement:"bottom-left",onClose:g,fullWidth:!0,title:r?"Time zone":void 0,children:Vr("div",{className:wo()({"vm-timezones-list":!0,"vm-timezones-list_mobile":r}),children:[Vr("div",{className:"vm-timezones-list-header",children:[Vr("div",{className:"vm-timezones-list-header__search",children:Vr(xa,{autofocus:!0,label:"Search",value:c,onChange:function(e){f(e)}})}),Vr("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:y(v),children:[Vr("div",{className:"vm-timezones-item__title",children:["Browser Time (",v.region,")"]}),Vr("div",{className:"vm-timezones-item__utc",children:v.utc})]})]}),p.map((function(e){return Vr("div",{className:"vm-timezones-list-group",children:Vr(qa,{defaultExpanded:!0,title:Vr("div",{className:"vm-timezones-list-group__title",children:e}),children:Vr("div",{className:"vm-timezones-list-group-options",children:h[e]&&h[e].map((function(e){return Vr("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:y(e),children:[Vr("div",{className:"vm-timezones-item__title",children:e.region}),Vr("div",{className:"vm-timezones-item__utc",children:e.utc})]},e.search)}))})})},e)}))]})})]})},Qa=function(e){var t=e.options,n=e.value,r=e.label,i=e.onChange,o=ie(null),a=Ft(ee({width:"0px",left:"0px",borderRadius:"0px"}),2),u=a[0],l=a[1],c=function(e){return function(){i(e)}};return ne((function(){if(o.current){var e=t.findIndex((function(e){return e.value===n})),r=o.current.getBoundingClientRect().width,i=e*r,a="0";0===e&&(a="16px 0 0 16px"),e===t.length-1&&(a="10px",i-=1,a="0 16px 16px 0"),0!==e&&e!==t.length-1&&(r+=1,i-=1),l({width:"".concat(r,"px"),left:"".concat(i,"px"),borderRadius:a})}else l({width:"0px",left:"0px",borderRadius:"0px"})}),[o,n,t]),Vr("div",{className:"vm-toggles",children:[r&&Vr("label",{className:"vm-toggles__label",children:r}),Vr("div",{className:"vm-toggles-group",style:{gridTemplateColumns:"repeat(".concat(t.length,", 1fr)")},children:[u.borderRadius&&Vr("div",{className:"vm-toggles-group__highlight",style:u}),t.map((function(e,t){return Vr("div",{className:wo()({"vm-toggles-group-item":!0,"vm-toggles-group-item_first":0===t,"vm-toggles-group-item_active":e.value===n,"vm-toggles-group-item_icon":e.icon&&e.title}),onClick:c(e.value),ref:e.value===n?o:null,children:[e.icon,e.title]},e.value)}))]})]})},Ga=Object.values(br).map((function(e){return{title:e,value:e}})),Ja=function(){var e=Xo().isMobile,t=Wr().theme,n=Qr();return Vr("div",{className:wo()({"vm-theme-control":!0,"vm-theme-control_mobile":e}),children:[Vr("div",{className:"vm-server-configurator__title",children:"Theme preferences"}),Vr("div",{className:"vm-theme-control__toggle",children:Vr(Qa,{options:Ga,value:t,onChange:function(e){n({type:"SET_THEME",payload:e})}})},"".concat(e))]})},Za="Settings",Ka=function(){var e=Xo().isMobile,t=Ar(),n=Wr().serverUrl,r=Ni().timezone,i=Io().seriesLimits,o=Qr(),a=Fi(),u=Po(),l=Ft(ee(n),2),c=l[0],s=l[1],f=Ft(ee(i),2),d=f[0],h=f[1],p=Ft(ee(r),2),v=p[0],m=p[1],y=Ft(ee(!1),2),_=y[0],b=y[1],D=function(){return b(!0)},w=function(){o({type:"SET_SERVER",payload:c}),a({type:"SET_TIMEZONE",payload:v}),u({type:"SET_SERIES_LIMITS",payload:d})};return ne((function(){n!==c&&s(n)}),[n]),Vr(g,{children:[e?Vr("div",{className:"vm-mobile-option",onClick:D,children:[Vr("span",{className:"vm-mobile-option__icon",children:Vr(zi,{})}),Vr("div",{className:"vm-mobile-option-text",children:Vr("span",{className:"vm-mobile-option-text__label",children:Za})}),Vr("span",{className:"vm-mobile-option__arrow",children:Vr(Wi,{})})]}):Vr(ma,{title:Za,children:Vr(fa,{className:wo()({"vm-header-button":!t}),variant:"contained",color:"primary",startIcon:Vr(zi,{}),onClick:D})}),_&&Vr(va,{title:Za,onClose:function(){return b(!1)},children:Vr("div",{className:wo()({"vm-server-configurator":!0,"vm-server-configurator_mobile":e}),children:[!t&&Vr("div",{className:"vm-server-configurator__input",children:Vr(Ua,{serverUrl:c,onChange:s,onEnter:w,onBlur:w})}),Vr("div",{className:"vm-server-configurator__input",children:Vr(Va,{limits:d,onChange:h,onEnter:w})}),Vr("div",{className:"vm-server-configurator__input",children:Vr(Wa,{timezoneState:v,onChange:m})}),!t&&Vr("div",{className:"vm-server-configurator__input",children:Vr(Ja,{})})]})})]})};function Xa(){Xa=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(S){l=function(e,t,n){return e[t]=n}}function c(e,t,n,i){var o=t&&t.prototype instanceof d?t:d,a=Object.create(o.prototype),u=new C(i||[]);return r(a,"_invoke",{value:D(e,n,u)}),a}function s(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(S){return{type:"throw",arg:S}}}e.wrap=c;var f={};function d(){}function h(){}function p(){}var v={};l(v,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(A([])));g&&g!==t&&n.call(g,o)&&(v=g);var y=p.prototype=d.prototype=Object.create(v);function _(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function i(r,o,a,u){var l=s(e[r],e,o);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==Lt(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){i("next",e,a,u)}),(function(e){i("throw",e,a,u)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return i("throw",e,a,u)}))}u(l.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){i(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function D(e,t,n){var r="suspendedStart";return function(i,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw o;return E()}for(n.method=i,n.arg=o;;){var a=n.delegate;if(a){var u=w(a,n);if(u){if(u===f)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=s(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}function w(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var i=s(r,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,f;var o=i.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function C(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return h.prototype=p,r(y,"constructor",{value:p,configurable:!0}),r(p,"constructor",{value:h,configurable:!0}),h.displayName=l(p,u,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===h||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,l(e,u,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},_(b.prototype),l(b.prototype,a,(function(){return this})),e.AsyncIterator=b,e.async=function(t,n,r,i,o){void 0===o&&(o=Promise);var a=new b(c(t,n,r,i),o);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},_(y),l(y,u,"Generator"),l(y,o,(function(){return this})),l(y,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,C.prototype={constructor:C,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return a.type="throw",a.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var u=n.call(o,"catchLoc"),l=n.call(o,"finallyLoc");if(u&&l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(u){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;k(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function eu(e,t,n,r,i,o,a){try{var u=e[o](a),l=u.value}catch(c){return void n(c)}u.done?t(l):Promise.resolve(l).then(r,i)}function tu(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){eu(o,r,i,a,u,"next",e)}function u(e){eu(o,r,i,a,u,"throw",e)}a(void 0)}))}}var nu,ru,iu=function(e){var t=e.displaySidebar,n=e.isMobile,r=e.headerSetup,i=e.accountIds;return Vr("div",{className:wo()({"vm-header-controls":!0,"vm-header-controls_mobile":n}),children:[(null===r||void 0===r?void 0:r.tenant)&&Vr(ka,{accountIds:i||[]}),(null===r||void 0===r?void 0:r.stepControl)&&Vr(Ea,{}),(null===r||void 0===r?void 0:r.timeSelector)&&Vr(Ra,{}),(null===r||void 0===r?void 0:r.cardinalityDatePicker)&&Vr(za,{}),(null===r||void 0===r?void 0:r.executionControls)&&Vr($a,{}),Vr(Ka,{}),!t&&Vr(ba,{})]})},ou=function(e){var t=Ar(),n=Ft(ee(!1),2),r=n[0],i=n[1],o=jn().pathname,a=function(){var e=Cr().useTenantID,t=Wr().serverUrl,n=Ft(ee(!1),2),r=n[0],i=n[1],o=Ft(ee(),2),a=o[0],u=o[1],l=Ft(ee([]),2),c=l[0],s=l[1],f=ae((function(){return"".concat(t.replace(/^(.+)(\/select.+)/,"$1"),"/admin/tenants")}),[t]);return ne((function(){if(e){var t=function(){var e=tu(Xa().mark((function e(){var t,n,r;return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i(!0),e.prev=1,e.next=4,fetch(f);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],s(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?u(void 0):u("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&u("".concat(e.t0.name,": ").concat(e.t0.message));case 16:i(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[f]),{accountIds:c,isLoading:r,error:a}}(),u=a.accountIds,l=ae((function(){return(xr[o]||{}).header||{}}),[o]);return e.isMobile?Vr(g,{children:[Vr("div",{children:Vr(fa,{className:wo()({"vm-header-button":!t}),startIcon:Vr(yo,{}),onClick:function(){i((function(e){return!e}))}})}),Vr(va,{title:"Controls",onClose:function(){i(!1)},isOpen:r,className:wo()({"vm-header-controls-modal":!0,"vm-header-controls-modal_open":r}),children:Vr(iu,yr(yr({},e),{},{accountIds:u,headerSetup:l}))})]}):Vr(iu,yr(yr({},e),{},{accountIds:u,headerSetup:l}))},au=function(){var e=Xo().isMobile,t=ae((function(){return window.innerWidth<1e3}),[bo(document.body)]),n=Wr().isDarkTheme,r=Ar(),i=ae((function(){return Rr(n?"color-background-block":"color-primary")}),[n]),o=ae((function(){var e=Cr().headerStyles,t=void 0===e?{}:e,n=t.background,o=void 0===n?r?"#FFF":i:n,a=t.color;return{background:o,color:void 0===a?r?i:"#FFF":a}}),[i]),a=o.background,u=o.color,l=$n(),c=function(){l({pathname:kr.home}),window.location.reload()};return Vr("header",{className:wo()({"vm-header":!0,"vm-header_app":r,"vm-header_dark":n,"vm-header_mobile":e}),style:{background:a,color:u},children:[t?Vr(wa,{background:a,color:u}):Vr(g,{children:[!r&&Vr("div",{className:"vm-header-logo",onClick:c,style:{color:u},children:Vr(Pi,{})}),Vr(pa,{color:u,background:a})]}),e&&Vr("div",{className:"vm-header-logo vm-header-logo_mobile",onClick:c,style:{color:u},children:Vr(Pi,{})}),Vr(ou,{displaySidebar:t,isMobile:e})]})},uu=function(){var e=Xo().isMobile,t="2019-".concat(_t()().format("YYYY"));return Vr("footer",{className:"vm-footer",children:[Vr("a",{className:"vm-link vm-footer__website",target:"_blank",href:"https://victoriametrics.com/",rel:"me noreferrer",children:[Vr(Ri,{}),"victoriametrics.com"]}),Vr("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://docs.victoriametrics.com/#vmui",rel:"help noreferrer",children:[Vr(po,{}),e?"Docs":"Documentation"]}),Vr("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://github.com/VictoriaMetrics/VictoriaMetrics/issues/new/choose",rel:"noreferrer",children:[Vr(vo,{}),e?"New issue":"Create an issue"]}),Vr("div",{className:"vm-footer__copyright",children:["\xa9 ",t," VictoriaMetrics"]})]})},lu=function(){var e=tu(Xa().mark((function e(t){var n,r;return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("./dashboards/".concat(t));case 2:return n=e.sent,e.next=5,n.json();case 5:return r=e.sent,e.abrupt("return",r);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),cu=function(){var e=Ar(),t=Wr().serverUrl,n=le(aa).dispatch,r=Ft(ee(!1),2),i=r[0],o=r[1],a=Ft(ee(""),2),u=a[0],l=a[1],c=Ft(ee([]),2),s=c[0],f=c[1],d=function(){var e=tu(Xa().mark((function e(){var t,n;return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,null!==(t=window.__VMUI_PREDEFINED_DASHBOARDS__)&&void 0!==t&&t.length){e.next=4;break}return e.abrupt("return",[]);case 4:return e.next=6,Promise.all(t.map(function(){var e=tu(Xa().mark((function e(t){return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",lu(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 6:n=e.sent,f((function(e){return[].concat(Ot(n),Ot(e))})),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(0),e.t0 instanceof Error&&l("".concat(e.t0.name,": ").concat(e.t0.message));case 13:case"end":return e.stop()}}),e,null,[[0,10]])})));return function(){return e.apply(this,arguments)}}(),h=function(){var e=tu(Xa().mark((function e(){var n,r,i;return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return l(""),o(!0),e.prev=4,e.next=7,fetch("".concat(t,"/vmui/custom-dashboards"));case 7:return n=e.sent,e.next=10,n.json();case 10:if(r=e.sent,!n.ok){e.next=22;break}if(!((i=r.dashboardsSettings)&&i.length>0)){e.next=17;break}f((function(e){return[].concat(Ot(e),Ot(i))})),e.next=19;break;case 17:return e.next=19,d();case 19:o(!1),e.next=26;break;case 22:return e.next=24,d();case 24:l(r.error),o(!1);case 26:e.next=34;break;case 28:return e.prev=28,e.t0=e.catch(4),o(!1),e.t0 instanceof Error&&l("".concat(e.t0.name,": ").concat(e.t0.message)),e.next=34,d();case 34:case"end":return e.stop()}}),e,null,[[4,28]])})));return function(){return e.apply(this,arguments)}}();return ne((function(){e||(f([]),h())}),[t]),ne((function(){n({type:"SET_DASHBOARDS_SETTINGS",payload:s})}),[s]),ne((function(){n({type:"SET_DASHBOARDS_LOADING",payload:i})}),[i]),ne((function(){n({type:"SET_DASHBOARDS_ERROR",payload:u})}),[u]),{dashboardsSettings:s,isLoading:i,error:u}},su=function(){var e=Ar(),t=Xo().isMobile,n=jn().pathname,r=Ft(pr(),2),i=r[0],o=r[1];cu();return ne((function(){var e,t="vmui",r=null===(e=xr[n])||void 0===e?void 0:e.title;document.title=r?"".concat(r," - ").concat(t):t}),[n]),ne((function(){var e=window.location.search;if(e){var t=Nr().parse(e,{ignoreQueryPrefix:!0});Object.entries(t).forEach((function(e){var t=Ft(e,2),n=t[0],r=t[1];i.set(n,r),o(i)})),window.location.search=""}window.location.replace(window.location.href.replace(/\/\?#\//,"/#/"))}),[]),Vr("section",{className:"vm-container",children:[Vr(au,{}),Vr("div",{className:wo()({"vm-container-body":!0,"vm-container-body_mobile":t,"vm-container-body_app":e}),children:Vr(Xn,{})}),!e&&Vr(uu,{})]})},fu="u-off",du="u-label",hu="width",pu="height",vu="top",mu="bottom",gu="left",yu="right",_u="#000",bu=_u+"0",Du="mousemove",wu="mousedown",xu="mouseup",ku="mouseenter",Cu="mouseleave",Au="dblclick",Eu="change",Su="dppxchange",Nu="undefined"!=typeof window,Fu=Nu?document:null,Mu=Nu?window:null,Tu=Nu?navigator:null;function Ou(e,t){if(null!=t){var n=e.classList;!n.contains(t)&&n.add(t)}}function Bu(e,t){var n=e.classList;n.contains(t)&&n.remove(t)}function Lu(e,t,n){e.style[t]=n+"px"}function Iu(e,t,n,r){var i=Fu.createElement(e);return null!=t&&Ou(i,t),null!=n&&n.insertBefore(i,r),i}function Pu(e,t){return Iu("div",e,t)}var Ru=new WeakMap;function zu(e,t,n,r,i){var o="translate("+t+"px,"+n+"px)";o!=Ru.get(e)&&(e.style.transform=o,Ru.set(e,o),t<0||n<0||t>r||n>i?Ou(e,fu):Bu(e,fu))}var ju=new WeakMap;function $u(e,t,n){var r=t+n;r!=ju.get(e)&&(ju.set(e,r),e.style.background=t,e.style.borderColor=n)}var Hu=new WeakMap;function Uu(e,t,n,r){var i=t+""+n;i!=Hu.get(e)&&(Hu.set(e,i),e.style.height=n+"px",e.style.width=t+"px",e.style.marginLeft=r?-t/2+"px":0,e.style.marginTop=r?-n/2+"px":0)}var Yu={passive:!0},Vu=yr(yr({},Yu),{},{capture:!0});function qu(e,t,n,r){t.addEventListener(e,n,r?Vu:Yu)}function Wu(e,t,n,r){t.removeEventListener(e,n,r?Vu:Yu)}function Qu(e,t,n,r){var i;n=n||0;for(var o=(r=r||t.length-1)<=2147483647;r-n>1;)t[i=o?n+r>>1:fl((n+r)/2)]<e?n=i:r=i;return e-t[n]<=t[r]-e?n:r}function Gu(e,t,n,r){for(var i=1==r?t:n;i>=t&&i<=n;i+=r)if(null!=e[i])return i;return-1}function Ju(e,t,n,r){var i=Dl,o=-Dl;if(1==r)i=e[t],o=e[n];else if(-1==r)i=e[n],o=e[t];else for(var a=t;a<=n;a++)null!=e[a]&&(i=pl(i,e[a]),o=vl(o,e[a]));return[i,o]}function Zu(e,t,n){for(var r=Dl,i=-Dl,o=t;o<=n;o++)e[o]>0&&(r=pl(r,e[o]),i=vl(i,e[o]));return[r==Dl?1:r,i==-Dl?10:i]}function Ku(e,t,n,r){var i=gl(e),o=gl(t),a=10==n?yl:_l;e==t&&(-1==i?(e*=n,t/=n):(e/=n,t*=n));var u=1==o?hl:fl,l=(1==i?fl:hl)(a(sl(e))),c=u(a(sl(t))),s=ml(n,l),f=ml(n,c);return l<0&&(s=Ol(s,-l)),c<0&&(f=Ol(f,-c)),r?(e=s*i,t=f*o):(e=Tl(e,s),t=Ml(t,f)),[e,t]}function Xu(e,t,n,r){var i=Ku(e,t,n,r);return 0==e&&(i[0]=0),0==t&&(i[1]=0),i}Nu&&function e(){var t=devicePixelRatio;nu!=t&&(nu=t,ru&&Wu(Eu,ru,e),ru=matchMedia("(min-resolution: ".concat(nu-.001,"dppx) and (max-resolution: ").concat(nu+.001,"dppx)")),qu(Eu,ru,e),Mu.dispatchEvent(new CustomEvent(Su)))}();var el={mode:3,pad:.1},tl={pad:0,soft:null,mode:0},nl={min:tl,max:tl};function rl(e,t,n,r){return Ul(n)?ol(e,t,n):(tl.pad=n,tl.soft=r?0:null,tl.mode=r?3:0,ol(e,t,nl))}function il(e,t){return null==e?t:e}function ol(e,t,n){var r=n.min,i=n.max,o=il(r.pad,0),a=il(i.pad,0),u=il(r.hard,-Dl),l=il(i.hard,Dl),c=il(r.soft,Dl),s=il(i.soft,-Dl),f=il(r.mode,0),d=il(i.mode,0),h=t-e,p=yl(h),v=vl(sl(e),sl(t)),m=yl(v),g=sl(m-p);(h<1e-9||g>10)&&(h=0,0!=e&&0!=t||(h=1e-9,2==f&&c!=Dl&&(o=0),2==d&&s!=-Dl&&(a=0)));var y=h||v||1e3,_=yl(y),b=ml(10,fl(_)),D=Ol(Tl(e-y*(0==h?0==e?.1:1:o),b/10),9),w=e>=c&&(1==f||3==f&&D<=c||2==f&&D>=c)?c:Dl,x=vl(u,D<w&&e>=w?w:pl(w,D)),k=Ol(Ml(t+y*(0==h?0==t?.1:1:a),b/10),9),C=t<=s&&(1==d||3==d&&k>=s||2==d&&k<=s)?s:-Dl,A=pl(l,k>C&&t<=C?C:vl(C,k));return x==A&&0==x&&(A=100),[x,A]}var al=new Intl.NumberFormat(Nu?Tu.language:"en-US"),ul=function(e){return al.format(e)},ll=Math,cl=ll.PI,sl=ll.abs,fl=ll.floor,dl=ll.round,hl=ll.ceil,pl=ll.min,vl=ll.max,ml=ll.pow,gl=ll.sign,yl=ll.log10,_l=ll.log2,bl=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return ll.asinh(e/t)},Dl=1/0;function wl(e){return 1+(0|yl((e^e>>31)-(e>>31)))}function xl(e,t){return dl(e/t)*t}function kl(e,t,n){return pl(vl(e,t),n)}function Cl(e){return"function"==typeof e?e:function(){return e}}var Al=function(e){return e},El=function(e,t){return t},Sl=function(e){return null},Nl=function(e){return!0},Fl=function(e,t){return e==t};function Ml(e,t){return hl(e/t)*t}function Tl(e,t){return fl(e/t)*t}function Ol(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if($l(e))return e;var n=Math.pow(10,t),r=e*n*(1+Number.EPSILON);return dl(r)/n}var Bl=new Map;function Ll(e){return((""+e).split(".")[1]||"").length}function Il(e,t,n,r){for(var i=[],o=r.map(Ll),a=t;a<n;a++)for(var u=sl(a),l=Ol(ml(e,a),u),c=0;c<r.length;c++){var s=r[c]*l,f=(s>=0&&a>=0?0:u)+(a>=o[c]?0:o[c]),d=Ol(s,f);i.push(d),Bl.set(d,f)}return i}var Pl={},Rl=[],zl=[null,null],jl=Array.isArray,$l=Number.isInteger;function Hl(e){return"string"==typeof e}function Ul(e){var t=!1;if(null!=e){var n=e.constructor;t=null==n||n==Object}return t}function Yl(e){return null!=e&&"object"==typeof e}var Vl=Object.getPrototypeOf(Uint8Array);function ql(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ul;if(jl(e)){var r=e.find((function(e){return null!=e}));if(jl(r)||n(r)){t=Array(e.length);for(var i=0;i<e.length;i++)t[i]=ql(e[i],n)}else t=e.slice()}else if(e instanceof Vl)t=e.slice();else if(n(e))for(var o in t={},e)t[o]=ql(e[o],n);else t=e;return t}function Wl(e){for(var t=arguments,n=1;n<t.length;n++){var r=t[n];for(var i in r)Ul(e[i])?Wl(e[i],ql(r[i])):e[i]=ql(r[i])}return e}function Ql(e,t,n){for(var r,i=0,o=-1;i<t.length;i++){var a=t[i];if(a>o){for(r=a-1;r>=0&&null==e[r];)e[r--]=null;for(r=a+1;r<n&&null==e[r];)e[o=r++]=null}}}var Gl="undefined"==typeof queueMicrotask?function(e){return Promise.resolve().then(e)}:queueMicrotask,Jl=["January","February","March","April","May","June","July","August","September","October","November","December"],Zl=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function Kl(e){return e.slice(0,3)}var Xl=Zl.map(Kl),ec=Jl.map(Kl),tc={MMMM:Jl,MMM:ec,WWWW:Zl,WWW:Xl};function nc(e){return(e<10?"0":"")+e}var rc={YYYY:function(e){return e.getFullYear()},YY:function(e){return(e.getFullYear()+"").slice(2)},MMMM:function(e,t){return t.MMMM[e.getMonth()]},MMM:function(e,t){return t.MMM[e.getMonth()]},MM:function(e){return nc(e.getMonth()+1)},M:function(e){return e.getMonth()+1},DD:function(e){return nc(e.getDate())},D:function(e){return e.getDate()},WWWW:function(e,t){return t.WWWW[e.getDay()]},WWW:function(e,t){return t.WWW[e.getDay()]},HH:function(e){return nc(e.getHours())},H:function(e){return e.getHours()},h:function(e){var t=e.getHours();return 0==t?12:t>12?t-12:t},AA:function(e){return e.getHours()>=12?"PM":"AM"},aa:function(e){return e.getHours()>=12?"pm":"am"},a:function(e){return e.getHours()>=12?"p":"a"},mm:function(e){return nc(e.getMinutes())},m:function(e){return e.getMinutes()},ss:function(e){return nc(e.getSeconds())},s:function(e){return e.getSeconds()},fff:function(e){return((t=e.getMilliseconds())<10?"00":t<100?"0":"")+t;var t}};function ic(e,t){t=t||tc;for(var n,r=[],i=/\{([a-z]+)\}|[^{]+/gi;n=i.exec(e);)r.push("{"==n[0][0]?rc[n[1]]:n[0]);return function(e){for(var n="",i=0;i<r.length;i++)n+="string"==typeof r[i]?r[i]:r[i](e,t);return n}}var oc=(new Intl.DateTimeFormat).resolvedOptions().timeZone;var ac=function(e){return e%1==0},uc=[1,2,2.5,5],lc=Il(10,-16,0,uc),cc=Il(10,0,16,uc),sc=cc.filter(ac),fc=lc.concat(cc),dc="{YYYY}",hc="\n"+dc,pc="{M}/{D}",vc="\n"+pc,mc=vc+"/{YY}",gc="{aa}",yc="{h}:{mm}"+gc,_c="\n"+yc,bc=":{ss}",Dc=null;function wc(e){var t=1e3*e,n=60*t,r=60*n,i=24*r,o=30*i,a=365*i;return[(1==e?Il(10,0,3,uc).filter(ac):Il(10,-3,0,uc)).concat([t,5*t,10*t,15*t,30*t,n,5*n,10*n,15*n,30*n,r,2*r,3*r,4*r,6*r,8*r,12*r,i,2*i,3*i,4*i,5*i,6*i,7*i,8*i,9*i,10*i,15*i,o,2*o,3*o,4*o,6*o,a,2*a,5*a,10*a,25*a,50*a,100*a]),[[a,dc,Dc,Dc,Dc,Dc,Dc,Dc,1],[28*i,"{MMM}",hc,Dc,Dc,Dc,Dc,Dc,1],[i,pc,hc,Dc,Dc,Dc,Dc,Dc,1],[r,"{h}"+gc,mc,Dc,vc,Dc,Dc,Dc,1],[n,yc,mc,Dc,vc,Dc,Dc,Dc,1],[t,bc,mc+" "+yc,Dc,vc+" "+yc,Dc,_c,Dc,1],[e,bc+".{fff}",mc+" "+yc,Dc,vc+" "+yc,Dc,_c,Dc,1]],function(t){return function(u,l,c,s,f,d){var h=[],p=f>=a,v=f>=o&&f<a,m=t(c),g=Ol(m*e,3),y=Oc(m.getFullYear(),p?0:m.getMonth(),v||p?1:m.getDate()),_=Ol(y*e,3);if(v||p)for(var b=v?f/o:0,D=p?f/a:0,w=g==_?g:Ol(Oc(y.getFullYear()+D,y.getMonth()+b,1)*e,3),x=new Date(dl(w/e)),k=x.getFullYear(),C=x.getMonth(),A=0;w<=s;A++){var E=Oc(k+D*A,C+b*A,1),S=E-t(Ol(E*e,3));(w=Ol((+E+S)*e,3))<=s&&h.push(w)}else{var N=f>=i?i:f,F=_+(fl(c)-fl(g))+Ml(g-_,N);h.push(F);for(var M=t(F),T=M.getHours()+M.getMinutes()/n+M.getSeconds()/r,O=f/r,B=d/u.axes[l]._space;!((F=Ol(F+f,1==e?0:3))>s);)if(O>1){var L=fl(Ol(T+O,6))%24,I=t(F).getHours()-L;I>1&&(I=-1),T=(T+O)%24,Ol(((F-=I*r)-h[h.length-1])/f,3)*B>=.7&&h.push(F)}else h.push(F)}return h}}]}var xc=Ft(wc(1),3),kc=xc[0],Cc=xc[1],Ac=xc[2],Ec=Ft(wc(.001),3),Sc=Ec[0],Nc=Ec[1],Fc=Ec[2];function Mc(e,t){return e.map((function(e){return e.map((function(n,r){return 0==r||8==r||null==n?n:t(1==r||0==e[8]?n:e[1]+n)}))}))}function Tc(e,t){return function(n,r,i,o,a){var u,l,c,s,f,d,h=t.find((function(e){return a>=e[0]}))||t[t.length-1];return r.map((function(t){var n=e(t),r=n.getFullYear(),i=n.getMonth(),o=n.getDate(),a=n.getHours(),p=n.getMinutes(),v=n.getSeconds(),m=r!=u&&h[2]||i!=l&&h[3]||o!=c&&h[4]||a!=s&&h[5]||p!=f&&h[6]||v!=d&&h[7]||h[1];return u=r,l=i,c=o,s=a,f=p,d=v,m(n)}))}}function Oc(e,t,n){return new Date(e,t,n)}function Bc(e,t){return t(e)}Il(2,-53,53,[1]);function Lc(e,t){return function(n,r){return t(e(r))}}var Ic={show:!0,live:!0,isolate:!1,mount:function(){},markers:{show:!0,width:2,stroke:function(e,t){var n=e.series[t];return n.width?n.stroke(e,t):n.points.width?n.points.stroke(e,t):null},fill:function(e,t){return e.series[t].fill(e,t)},dash:"solid"},idx:null,idxs:null,values:[]};var Pc=[0,0];function Rc(e,t,n){return function(e){0==e.button&&n(e)}}function zc(e,t,n){return n}var jc={show:!0,x:!0,y:!0,lock:!1,move:function(e,t,n){return Pc[0]=t,Pc[1]=n,Pc},points:{show:function(e,t){var n=e.cursor.points,r=Pu(),i=n.size(e,t);Lu(r,hu,i),Lu(r,pu,i);var o=i/-2;Lu(r,"marginLeft",o),Lu(r,"marginTop",o);var a=n.width(e,t,i);return a&&Lu(r,"borderWidth",a),r},size:function(e,t){return as(e.series[t].points.width,1)},width:0,stroke:function(e,t){var n=e.series[t].points;return n._stroke||n._fill},fill:function(e,t){var n=e.series[t].points;return n._fill||n._stroke}},bind:{mousedown:Rc,mouseup:Rc,click:Rc,dblclick:Rc,mousemove:zc,mouseleave:zc,mouseenter:zc},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,_x:!1,_y:!1},focus:{prox:-1},left:-10,top:-10,idx:null,dataIdx:function(e,t,n){return n},idxs:null},$c={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},Hc=Wl({},$c,{filter:El}),Uc=Wl({},Hc,{size:10}),Yc=Wl({},$c,{show:!1}),Vc='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',qc="bold "+Vc,Wc={show:!0,scale:"x",stroke:_u,space:50,gap:5,size:50,labelGap:0,labelSize:30,labelFont:qc,side:2,grid:Hc,ticks:Uc,border:Yc,font:Vc,rotate:0},Qc={show:!0,scale:"x",auto:!1,sorted:1,min:Dl,max:-Dl,idxs:[]};function Gc(e,t,n,r,i){return t.map((function(e){return null==e?"":ul(e)}))}function Jc(e,t,n,r,i,o,a){for(var u=[],l=Bl.get(i)||0,c=n=a?n:Ol(Ml(n,i),l);c<=r;c=Ol(c+i,l))u.push(Object.is(c,-0)?0:c);return u}function Zc(e,t,n,r,i,o,a){var u=[],l=e.scales[e.axes[t].scale].log,c=fl((10==l?yl:_l)(n));i=ml(l,c),c<0&&(i=Ol(i,-c));var s=n;do{u.push(s),(s=Ol(s+i,Bl.get(i)))>=i*l&&(i=s)}while(s<=r);return u}function Kc(e,t,n,r,i,o,a){var u=e.scales[e.axes[t].scale].asinh,l=r>u?Zc(e,t,vl(u,n),r,i):[u],c=r>=0&&n<=0?[0]:[];return(n<-u?Zc(e,t,vl(u,-r),-n,i):[u]).reverse().map((function(e){return-e})).concat(c,l)}var Xc=/./,es=/[12357]/,ts=/[125]/,ns=/1/;function rs(e,t,n,r,i){var o=e.axes[n],a=o.scale,u=e.scales[a];if(3==u.distr&&2==u.log)return t;var l=e.valToPos,c=o._space,s=l(10,a),f=l(9,a)-s>=c?Xc:l(7,a)-s>=c?es:l(5,a)-s>=c?ts:ns;return t.map((function(e){return 4==u.distr&&0==e||f.test(e)?e:null}))}function is(e,t){return null==t?"":ul(t)}var os={show:!0,scale:"y",stroke:_u,space:30,gap:5,size:50,labelGap:0,labelSize:30,labelFont:qc,side:3,grid:Hc,ticks:Uc,border:Yc,font:Vc,rotate:0};function as(e,t){return Ol((3+2*(e||1))*t,3)}var us={scale:null,auto:!0,sorted:0,min:Dl,max:-Dl},ls=function(e,t,n,r,i){return i},cs={show:!0,auto:!0,sorted:0,gaps:ls,alpha:1,facets:[Wl({},us,{scale:"x"}),Wl({},us,{scale:"y"})]},ss={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:ls,alpha:1,points:{show:function(e,t){var n=e.series[0],r=n.scale,i=n.idxs,o=e._data[0],a=e.valToPos(o[i[0]],r,!0),u=e.valToPos(o[i[1]],r,!0),l=sl(u-a)/(e.series[t].points.space*nu);return i[1]-i[0]<=l},filter:null},values:null,min:Dl,max:-Dl,idxs:[],path:null,clip:null};function fs(e,t,n,r,i){return n/10}var ds={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},hs=Wl({},ds,{time:!1,ori:1}),ps={};function vs(e,t){var n=ps[e];return n||(n={key:e,plots:[],sub:function(e){n.plots.push(e)},unsub:function(e){n.plots=n.plots.filter((function(t){return t!=e}))},pub:function(e,t,r,i,o,a,u){for(var l=0;l<n.plots.length;l++)n.plots[l]!=t&&n.plots[l].pub(e,t,r,i,o,a,u)}},null!=e&&(ps[e]=n)),n}function ms(e,t,n){var r=e.mode,i=e.series[t],o=2==r?e._data[t]:e._data,a=e.scales,u=e.bbox,l=o[0],c=2==r?o[1]:o[t],s=2==r?a[i.facets[0].scale]:a[e.series[0].scale],f=2==r?a[i.facets[1].scale]:a[i.scale],d=u.left,h=u.top,p=u.width,v=u.height,m=e.valToPosH,g=e.valToPosV;return 0==s.ori?n(i,l,c,s,f,m,g,d,h,p,v,ks,As,Ss,Fs,Ts):n(i,l,c,s,f,g,m,h,d,v,p,Cs,Es,Ns,Ms,Os)}function gs(e,t){for(var n=0,r=0,i=il(e.bands,Rl),o=0;o<i.length;o++){var a=i[o];a.series[0]==t?n=a.dir:a.series[1]==t&&(1==a.dir?r|=1:r|=2)}return[n,1==r?-1:2==r?1:3==r?2:0]}function ys(e,t,n,r,i){var o=e.mode,a=e.series[t],u=2==o?a.facets[1].scale:a.scale,l=e.scales[u];return-1==i?l.min:1==i?l.max:3==l.distr?1==l.dir?l.min:l.max:0}function _s(e,t,n,r,i,o){return ms(e,t,(function(e,t,a,u,l,c,s,f,d,h,p){var v,m,g=e.pxRound,y=u.dir*(0==u.ori?1:-1),_=0==u.ori?As:Es;1==y?(v=n,m=r):(v=r,m=n);var b=g(c(t[v],u,h,f)),D=g(s(a[v],l,p,d)),w=g(c(t[m],u,h,f)),x=g(s(1==o?l.max:l.min,l,p,d)),k=new Path2D(i);return _(k,w,x),_(k,b,x),_(k,b,D),k}))}function bs(e,t,n,r,i,o){var a=null;if(e.length>0){a=new Path2D;for(var u=0==t?Ss:Ns,l=n,c=0;c<e.length;c++){var s=e[c];if(s[1]>s[0]){var f=s[0]-l;f>0&&u(a,l,r,f,r+o),l=s[1]}}var d=n+i-l;d>0&&u(a,l,r,d,r+o)}return a}function Ds(e,t,n,r,i,o,a){for(var u=[],l=e.length,c=1==i?n:r;c>=n&&c<=r;c+=i){if(null===t[c]){var s=c,f=c;if(1==i)for(;++c<=r&&null===t[c];)f=c;else for(;--c>=n&&null===t[c];)f=c;var d=o(e[s]),h=f==s?d:o(e[f]),p=s-i;d=a<=0&&p>=0&&p<l?o(e[p]):d;var v=f+i;(h=a>=0&&v>=0&&v<l?o(e[v]):h)>=d&&u.push([d,h])}}return u}function ws(e){return 0==e?Al:1==e?dl:function(t){return xl(t,e)}}function xs(e){var t=0==e?ks:Cs,n=0==e?function(e,t,n,r,i,o){e.arcTo(t,n,r,i,o)}:function(e,t,n,r,i,o){e.arcTo(n,t,i,r,o)},r=0==e?function(e,t,n,r,i){e.rect(t,n,r,i)}:function(e,t,n,r,i){e.rect(n,t,i,r)};return function(e,i,o,a,u){var l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;0==l?r(e,i,o,a,u):(l=pl(l,a/2,u/2),t(e,i+l,o),n(e,i+a,o,i+a,o+u,l),n(e,i+a,o+u,i,o+u,l),n(e,i,o+u,i,o,l),n(e,i,o,i+a,o,l),e.closePath())}}var ks=function(e,t,n){e.moveTo(t,n)},Cs=function(e,t,n){e.moveTo(n,t)},As=function(e,t,n){e.lineTo(t,n)},Es=function(e,t,n){e.lineTo(n,t)},Ss=xs(0),Ns=xs(1),Fs=function(e,t,n,r,i,o){e.arc(t,n,r,i,o)},Ms=function(e,t,n,r,i,o){e.arc(n,t,r,i,o)},Ts=function(e,t,n,r,i,o,a){e.bezierCurveTo(t,n,r,i,o,a)},Os=function(e,t,n,r,i,o,a){e.bezierCurveTo(n,t,i,r,a,o)};function Bs(e){return function(e,t,n,r,i){return ms(e,t,(function(t,o,a,u,l,c,s,f,d,h,p){var v,m,g=t.pxRound,y=t.points;0==u.ori?(v=ks,m=Fs):(v=Cs,m=Ms);var _=Ol(y.width*nu,3),b=(y.size-y.width)/2*nu,D=Ol(2*b,3),w=new Path2D,x=new Path2D,k=e.bbox,C=k.left,A=k.top,E=k.width,S=k.height;Ss(x,C-D,A-D,E+2*D,S+2*D);var N=function(e){if(null!=a[e]){var t=g(c(o[e],u,h,f)),n=g(s(a[e],l,p,d));v(w,t+b,n),m(w,t,n,b,0,2*cl)}};if(i)i.forEach(N);else for(var F=n;F<=r;F++)N(F);return{stroke:_>0?w:null,fill:w,clip:x,flags:3}}))}}function Ls(e){return function(t,n,r,i,o,a){r!=i&&(o!=r&&a!=r&&e(t,n,r),o!=i&&a!=i&&e(t,n,i),e(t,n,a))}}var Is=Ls(As),Ps=Ls(Es);function Rs(e){var t=il(null===e||void 0===e?void 0:e.alignGaps,0);return function(e,n,r,i){return ms(e,n,(function(o,a,u,l,c,s,f,d,h,p,v){var m,g,y=o.pxRound,_=function(e){return y(s(e,l,p,d))},b=function(e){return y(f(e,c,v,h))};0==l.ori?(m=As,g=Is):(m=Es,g=Ps);for(var D,w,x,k=l.dir*(0==l.ori?1:-1),C={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},A=C.stroke,E=Dl,S=-Dl,N=_(a[1==k?r:i]),F=Gu(u,r,i,1*k),M=Gu(u,r,i,-1*k),T=_(a[F]),O=_(a[M]),B=1==k?r:i;B>=r&&B<=i;B+=k){var L=_(a[B]);L==N?null!=u[B]&&(w=b(u[B]),E==Dl&&(m(A,L,w),D=w),E=pl(w,E),S=vl(w,S)):(E!=Dl&&(g(A,N,E,S,D,w),x=N),null!=u[B]?(m(A,L,w=b(u[B])),E=S=D=w):(E=Dl,S=-Dl),N=L)}E!=Dl&&E!=S&&x!=N&&g(A,N,E,S,D,w);var I=Ft(gs(e,n),2),P=I[0],R=I[1];if(null!=o.fill||0!=P){var z=C.fill=new Path2D(A),j=b(o.fillTo(e,n,o.min,o.max,P));m(z,O,j),m(z,T,j)}if(!o.spanGaps){var $,H=[];($=H).push.apply($,Ot(Ds(a,u,r,i,k,_,t))),C.gaps=H=o.gaps(e,n,r,i,H),C.clip=bs(H,l.ori,d,h,p,v)}return 0!=R&&(C.band=2==R?[_s(e,n,r,i,A,-1),_s(e,n,r,i,A,1)]:_s(e,n,r,i,A,R)),C}))}}function zs(e,t,n,r,i,o){var a=e.length;if(a<2)return null;var u=new Path2D;if(n(u,e[0],t[0]),2==a)r(u,e[1],t[1]);else{for(var l=Array(a),c=Array(a-1),s=Array(a-1),f=Array(a-1),d=0;d<a-1;d++)s[d]=t[d+1]-t[d],f[d]=e[d+1]-e[d],c[d]=s[d]/f[d];l[0]=c[0];for(var h=1;h<a-1;h++)0===c[h]||0===c[h-1]||c[h-1]>0!==c[h]>0?l[h]=0:(l[h]=3*(f[h-1]+f[h])/((2*f[h]+f[h-1])/c[h-1]+(f[h]+2*f[h-1])/c[h]),isFinite(l[h])||(l[h]=0));l[a-1]=c[a-2];for(var p=0;p<a-1;p++)i(u,e[p]+f[p]/3,t[p]+l[p]*f[p]/3,e[p+1]-f[p]/3,t[p+1]-l[p+1]*f[p]/3,e[p+1],t[p+1])}return u}var js=new Set;function $s(){var e,t=Mt(js);try{for(t.s();!(e=t.n()).done;){e.value.syncRect(!0)}}catch(n){t.e(n)}finally{t.f()}}Nu&&(qu("resize",Mu,$s),qu("scroll",Mu,$s,!0),qu(Su,Mu,(function(){nf.pxRatio=nu})));var Hs=Rs(),Us=Bs();function Ys(e,t,n,r){return(r?[e[0],e[1]].concat(e.slice(2)):[e[0]].concat(e.slice(1))).map((function(e,r){return Vs(e,r,t,n)}))}function Vs(e,t,n,r){return Wl({},0==t?n:r,e)}function qs(e,t,n){return null==t?zl:[t,n]}var Ws=qs;function Qs(e,t,n){return null==t?zl:rl(t,n,.1,!0)}function Gs(e,t,n,r){return null==t?zl:Ku(t,n,e.scales[r].log,!1)}var Js=Gs;function Zs(e,t,n,r){return null==t?zl:Xu(t,n,e.scales[r].log,!1)}var Ks=Zs;function Xs(e,t,n,r,i){var o=vl(wl(e),wl(t)),a=t-e,u=Qu(i/r*a,n);do{var l=n[u],c=r*l/a;if(c>=i&&o+(l<5?Bl.get(l):0)<=17)return[l,c]}while(++u<n.length);return[0,0]}function ef(e){var t,n;return[e=e.replace(/(\d+)px/,(function(e,r){return(t=dl((n=+r)*nu))+"px"})),t,n]}function tf(e){e.show&&[e.font,e.labelFont].forEach((function(e){var t=Ol(e[2]*nu,1);e[0]=e[0].replace(/[0-9.]+px/,t+"px"),e[1]=t}))}function nf(e,t,n){var r={mode:il(e.mode,1)},i=r.mode;function o(e,t){return((3==t.distr?yl(e>0?e:t.clamp(r,e,t.min,t.max,t.key)):4==t.distr?bl(e,t.asinh):e)-t._min)/(t._max-t._min)}function a(e,t,n,r){var i=o(e,t);return r+n*(-1==t.dir?1-i:i)}function u(e,t,n,r){var i=o(e,t);return r+n*(-1==t.dir?i:1-i)}function l(e,t,n,r){return 0==t.ori?a(e,t,n,r):u(e,t,n,r)}r.valToPosH=a,r.valToPosV=u;var c=!1;r.status=0;var s=r.root=Pu("uplot");(null!=e.id&&(s.id=e.id),Ou(s,e.class),e.title)&&(Pu("u-title",s).textContent=e.title);var f=Iu("canvas"),d=r.ctx=f.getContext("2d"),h=Pu("u-wrap",s),p=r.under=Pu("u-under",h);h.appendChild(f);var v=r.over=Pu("u-over",h),m=+il((e=ql(e)).pxAlign,1),g=ws(m);(e.plugins||[]).forEach((function(t){t.opts&&(e=t.opts(r,e)||e)}));var y=e.ms||.001,_=r.series=1==i?Ys(e.series||[],Qc,ss,!1):function(e,t){return e.map((function(e,n){return 0==n?null:Wl({},t,e)}))}(e.series||[null],cs),b=r.axes=Ys(e.axes||[],Wc,os,!0),D=r.scales={},w=r.bands=e.bands||[];w.forEach((function(e){e.fill=Cl(e.fill||null),e.dir=il(e.dir,-1)}));var x=2==i?_[1].facets[0].scale:_[0].scale,k={axes:function(){for(var e=function(){var e=b[t];if(!e.show||!e._show)return"continue";var n,i,o=e.side,a=o%2,u=e.stroke(r,t),c=0==o||3==o?-1:1;if(e.label){var s=e.labelGap*c,f=dl((e._lpos+s)*nu);Ke(e.labelFont[0],u,"center",2==o?vu:mu),d.save(),1==a?(n=i=0,d.translate(f,dl(de+pe/2)),d.rotate((3==o?-cl:cl)/2)):(n=dl(fe+he/2),i=f),d.fillText(e.label,n,i),d.restore()}var h=Ft(e._found,2),p=h[0],v=h[1];if(0==v)return"continue";var m=D[e.scale],y=0==a?he:pe,_=0==a?fe:de,w=dl(e.gap*nu),x=e._splits,k=2==m.distr?x.map((function(e){return We[e]})):x,C=2==m.distr?We[x[1]]-We[x[0]]:p,A=e.ticks,E=e.border,S=A.show?dl(A.size*nu):0,N=e._rotate*-cl/180,F=g(e._pos*nu),M=F+(S+w)*c;i=0==a?M:0,n=1==a?M:0,Ke(e.font[0],u,1==e.align?gu:2==e.align?yu:N>0?gu:N<0?yu:0==a?"center":3==o?yu:gu,N||1==a?"middle":2==o?vu:mu);for(var T=1.5*e.font[1],O=x.map((function(e){return g(l(e,m,y,_))})),B=e._values,L=0;L<B.length;L++){var I=B[L];if(null!=I){0==a?n=O[L]:i=O[L];for(var P=-1==(I=""+I).indexOf("\n")?[I]:I.split(/\n/gm),R=0;R<P.length;R++){var z=P[R];N?(d.save(),d.translate(n,i+R*T),d.rotate(N),d.fillText(z,0,0),d.restore()):d.fillText(z,n,i+R*T)}}}A.show&&ot(O,A.filter(r,k,t,v,C),a,o,F,S,Ol(A.width*nu,3),A.stroke(r,t),A.dash,A.cap);var j=e.grid;j.show&&ot(O,j.filter(r,k,t,v,C),a,0==a?2:1,0==a?de:fe,0==a?pe:he,Ol(j.width*nu,3),j.stroke(r,t),j.dash,j.cap),E.show&&ot([F],[1],0==a?1:0,0==a?1:2,1==a?de:fe,1==a?pe:he,Ol(E.width*nu,3),E.stroke(r,t),E.dash,E.cap)},t=0;t<b.length;t++)e();an("drawAxes")},series:function(){Me>0&&(_.forEach((function(e,n){if(n>0&&e.show&&null==e._paths){var o=2==i?[0,t[n][0].length-1]:function(e){var t=kl(Ye-1,0,Me-1),n=kl(Ve+1,0,Me-1);for(;null==e[t]&&t>0;)t--;for(;null==e[n]&&n<Me-1;)n++;return[t,n]}(t[n]);e._paths=e.paths(r,n,o[0],o[1])}})),_.forEach((function(e,t){if(t>0&&e.show){$e!=e.alpha&&(d.globalAlpha=$e=e.alpha),et(t,!1),e._paths&&tt(t,!1),et(t,!0);var n=e._paths?e._paths.gaps:null,i=e.points.show(r,t,Ye,Ve,n),o=e.points.filter(r,t,i,n);(i||o)&&(e.points._paths=e.points.paths(r,t,Ye,Ve,o),tt(t,!0)),1!=$e&&(d.globalAlpha=$e=1),an("drawSeries",t)}})))}},C=(e.drawOrder||["axes","series"]).map((function(e){return k[e]}));function A(t){var n=D[t];if(null==n){var r=(e.scales||Pl)[t]||Pl;if(null!=r.from)A(r.from),D[t]=Wl({},D[r.from],r,{key:t});else{(n=D[t]=Wl({},t==x?ds:hs,r)).key=t;var o=n.time,a=n.range,u=jl(a);if((t!=x||2==i&&!o)&&(!u||null!=a[0]&&null!=a[1]||(a={min:null==a[0]?el:{mode:1,hard:a[0],soft:a[0]},max:null==a[1]?el:{mode:1,hard:a[1],soft:a[1]}},u=!1),!u&&Ul(a))){var l=a;a=function(e,t,n){return null==t?zl:rl(t,n,l)}}n.range=Cl(a||(o?Ws:t==x?3==n.distr?Js:4==n.distr?Ks:qs:3==n.distr?Gs:4==n.distr?Zs:Qs)),n.auto=Cl(!u&&n.auto),n.clamp=Cl(n.clamp||fs),n._min=n._max=null}}}for(var E in A("x"),A("y"),1==i&&_.forEach((function(e){A(e.scale)})),b.forEach((function(e){A(e.scale)})),e.scales)A(E);var S,N,F=D[x],M=F.distr;0==F.ori?(Ou(s,"u-hz"),S=a,N=u):(Ou(s,"u-vt"),S=u,N=a);var T={};for(var O in D){var B=D[O];null==B.min&&null==B.max||(T[O]={min:B.min,max:B.max},B.min=B.max=null)}var L,I=e.tzDate||function(e){return new Date(dl(e/y))},P=e.fmtDate||ic,R=1==y?Ac(I):Fc(I),z=Tc(I,Mc(1==y?Cc:Nc,P)),j=Lc(I,Bc("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",P)),$=[],H=r.legend=Wl({},Ic,e.legend),U=H.show,Y=H.markers;H.idxs=$,Y.width=Cl(Y.width),Y.dash=Cl(Y.dash),Y.stroke=Cl(Y.stroke),Y.fill=Cl(Y.fill);var V,q=[],W=[],Q=!1,G={};if(H.live){var J=_[1]?_[1].values:null;for(var Z in V=(Q=null!=J)?J(r,1,0):{_:0})G[Z]="--"}if(U)if(L=Iu("table","u-legend",s),H.mount(r,L),Q){var K=Iu("tr","u-thead",L);for(var X in Iu("th",null,K),V)Iu("th",du,K).textContent=X}else Ou(L,"u-inline"),H.live&&Ou(L,"u-live");var ee={show:!0},te={show:!1};var ne=new Map;function re(e,t,n){var i=ne.get(t)||{},o=xe.bind[e](r,t,n);o&&(qu(e,t,i[e]=o),ne.set(t,i))}function ie(e,t,n){var r=ne.get(t)||{};for(var i in r)null!=e&&i!=e||(Wu(i,t,r[i]),delete r[i]);null==e&&ne.delete(t)}var oe=0,ae=0,ue=0,le=0,ce=0,se=0,fe=0,de=0,he=0,pe=0;r.bbox={};var ve=!1,me=!1,ge=!1,ye=!1,_e=!1,be=!1;function De(e,t,n){(n||e!=r.width||t!=r.height)&&we(e,t),lt(!1),ge=!0,me=!0,xe.left>=0&&(ye=be=!0),wt()}function we(e,t){r.width=oe=ue=e,r.height=ae=le=t,ce=se=0,function(){var e=!1,t=!1,n=!1,r=!1;b.forEach((function(i,o){if(i.show&&i._show){var a=i.side,u=a%2,l=i._size+(null!=i.label?i.labelSize:0);l>0&&(u?(ue-=l,3==a?(ce+=l,r=!0):n=!0):(le-=l,0==a?(se+=l,e=!0):t=!0))}})),Ne[0]=e,Ne[1]=n,Ne[2]=t,Ne[3]=r,ue-=Ue[1]+Ue[3],ce+=Ue[3],le-=Ue[2]+Ue[0],se+=Ue[0]}(),function(){var e=ce+ue,t=se+le,n=ce,r=se;function i(i,o){switch(i){case 1:return(e+=o)-o;case 2:return(t+=o)-o;case 3:return(n-=o)+o;case 0:return(r-=o)+o}}b.forEach((function(e,t){if(e.show&&e._show){var n=e.side;e._pos=i(n,e._size),null!=e.label&&(e._lpos=i(n,e.labelSize))}}))}();var n=r.bbox;fe=n.left=xl(ce*nu,.5),de=n.top=xl(se*nu,.5),he=n.width=xl(ue*nu,.5),pe=n.height=xl(le*nu,.5)}r.setSize=function(e){De(e.width,e.height)};var xe=r.cursor=Wl({},jc,{drag:{y:2==i}},e.cursor);xe.idxs=$,xe._lock=!1;var ke=xe.points;ke.show=Cl(ke.show),ke.size=Cl(ke.size),ke.stroke=Cl(ke.stroke),ke.width=Cl(ke.width),ke.fill=Cl(ke.fill);var Ce=r.focus=Wl({},e.focus||{alpha:.3},xe.focus),Ae=Ce.prox>=0,Ee=[null];function Se(e,t){if(1==i||t>0){var n=1==i&&D[e.scale].time,o=e.value;e.value=n?Hl(o)?Lc(I,Bc(o,P)):o||j:o||is,e.label=e.label||(n?"Time":"Value")}if(t>0){e.width=null==e.width?1:e.width,e.paths=e.paths||Hs||Sl,e.fillTo=Cl(e.fillTo||ys),e.pxAlign=+il(e.pxAlign,m),e.pxRound=ws(e.pxAlign),e.stroke=Cl(e.stroke||null),e.fill=Cl(e.fill||null),e._stroke=e._fill=e._paths=e._focus=null;var a=as(e.width,1),u=e.points=Wl({},{size:a,width:vl(1,.2*a),stroke:e.stroke,space:2*a,paths:Us,_stroke:null,_fill:null},e.points);u.show=Cl(u.show),u.filter=Cl(u.filter),u.fill=Cl(u.fill),u.stroke=Cl(u.stroke),u.paths=Cl(u.paths),u.pxAlign=e.pxAlign}if(U){var l=function(e,t){if(0==t&&(Q||!H.live||2==i))return zl;var n=[],o=Iu("tr","u-series",L,L.childNodes[t]);Ou(o,e.class),e.show||Ou(o,fu);var a=Iu("th",null,o);if(Y.show){var u=Pu("u-marker",a);if(t>0){var l=Y.width(r,t);l&&(u.style.border=l+"px "+Y.dash(r,t)+" "+Y.stroke(r,t)),u.style.background=Y.fill(r,t)}}var c=Pu(du,a);for(var s in c.textContent=e.label,t>0&&(Y.show||(c.style.color=e.width>0?Y.stroke(r,t):Y.fill(r,t)),re("click",a,(function(t){if(!xe._lock){var n=_.indexOf(e);if((t.ctrlKey||t.metaKey)!=H.isolate){var r=_.some((function(e,t){return t>0&&t!=n&&e.show}));_.forEach((function(e,t){t>0&&Pt(t,r?t==n?ee:te:ee,!0,un.setSeries)}))}else Pt(n,{show:!e.show},!0,un.setSeries)}})),Ae&&re(ku,a,(function(t){xe._lock||Pt(_.indexOf(e),Rt,!0,un.setSeries)}))),V){var f=Iu("td","u-value",o);f.textContent="--",n.push(f)}return[o,n]}(e,t);q.splice(t,0,l[0]),W.splice(t,0,l[1]),H.values.push(null)}if(xe.show){$.splice(t,0,null);var c=function(e,t){if(t>0){var n=xe.points.show(r,t);if(n)return Ou(n,"u-cursor-pt"),Ou(n,e.class),zu(n,-10,-10,ue,le),v.insertBefore(n,Ee[t]),n}}(e,t);c&&Ee.splice(t,0,c)}an("addSeries",t)}r.addSeries=function(e,t){t=null==t?_.length:t,e=1==i?Vs(e,t,Qc,ss):Vs(e,t,null,cs),_.splice(t,0,e),Se(_[t],t)},r.delSeries=function(e){if(_.splice(e,1),U){H.values.splice(e,1),W.splice(e,1);var t=q.splice(e,1)[0];ie(null,t.firstChild),t.remove()}xe.show&&($.splice(e,1),Ee.length>1&&Ee.splice(e,1)[0].remove()),an("delSeries",e)};var Ne=[!1,!1,!1,!1];function Fe(e,t,n,r){var i=Ft(n,4),o=i[0],a=i[1],u=i[2],l=i[3],c=t%2,s=0;return 0==c&&(l||a)&&(s=0==t&&!o||2==t&&!u?dl(Wc.size/3):0),1==c&&(o||u)&&(s=1==t&&!a||3==t&&!l?dl(os.size/2):0),s}var Me,Te,Oe,Be,Le,Ie,Pe,Re,ze,je,$e,He=r.padding=(e.padding||[Fe,Fe,Fe,Fe]).map((function(e){return Cl(il(e,Fe))})),Ue=r._padding=He.map((function(e,t){return e(r,t,Ne,0)})),Ye=null,Ve=null,qe=1==i?_[0].idxs:null,We=null,Qe=!1;function Ge(e,n){if(t=null==e?[]:ql(e,Yl),2==i){Me=0;for(var o=1;o<_.length;o++)Me+=t[o][0].length;r.data=t=e}else if(null==t[0]&&(t[0]=[]),r.data=t.slice(),We=t[0],Me=We.length,2==M){t[0]=Array(Me);for(var a=0;a<Me;a++)t[0][a]=a}if(r._data=t,lt(!0),an("setData"),2==M&&(ge=!0),!1!==n){var u=F;u.auto(r,Qe)?Je():It(x,u.min,u.max),ye=xe.left>=0,be=!0,wt()}}function Je(){var e,n;if(Qe=!0,1==i)if(Me>0){if(Ye=qe[0]=0,Ve=qe[1]=Me-1,e=t[0][Ye],n=t[0][Ve],2==M)e=Ye,n=Ve;else if(1==Me)if(3==M){var r=Ft(Ku(e,e,F.log,!1),2);e=r[0],n=r[1]}else if(4==M){var o=Ft(Xu(e,e,F.log,!1),2);e=o[0],n=o[1]}else if(F.time)n=e+dl(86400/y);else{var a=Ft(rl(e,n,.1,!0),2);e=a[0],n=a[1]}}else Ye=qe[0]=e=null,Ve=qe[1]=n=null;It(x,e,n)}function Ze(e,t,n,r,i,o){var a,u,l,c,s;null!==(a=e)&&void 0!==a||(e=bu),null!==(u=n)&&void 0!==u||(n=Rl),null!==(l=r)&&void 0!==l||(r="butt"),null!==(c=i)&&void 0!==c||(i=bu),null!==(s=o)&&void 0!==s||(o="round"),e!=Te&&(d.strokeStyle=Te=e),i!=Oe&&(d.fillStyle=Oe=i),t!=Be&&(d.lineWidth=Be=t),o!=Ie&&(d.lineJoin=Ie=o),r!=Pe&&(d.lineCap=Pe=r),n!=Le&&d.setLineDash(Le=n)}function Ke(e,t,n,r){t!=Oe&&(d.fillStyle=Oe=t),e!=Re&&(d.font=Re=e),n!=ze&&(d.textAlign=ze=n),r!=je&&(d.textBaseline=je=r)}function Xe(e,t,n,i){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(i.length>0&&e.auto(r,Qe)&&(null==t||null==t.min)){var a=il(Ye,0),u=il(Ve,i.length-1),l=null==n.min?3==e.distr?Zu(i,a,u):Ju(i,a,u,o):[n.min,n.max];e.min=pl(e.min,n.min=l[0]),e.max=vl(e.max,n.max=l[1])}}function et(e,t){var n=t?_[e].points:_[e];n._stroke=n.stroke(r,e),n._fill=n.fill(r,e)}function tt(e,n){var i=n?_[e].points:_[e],o=i._stroke,a=i._fill,u=i._paths,l=u.stroke,c=u.fill,s=u.clip,f=u.flags,h=null,p=Ol(i.width*nu,3),v=p%2/2;n&&null==a&&(a=p>0?"#fff":o);var m=1==i.pxAlign;if(m&&d.translate(v,v),!n){var g=fe,y=de,b=he,D=pe,x=p*nu/2;0==i.min&&(D+=x),0==i.max&&(y-=x,D+=x),(h=new Path2D).rect(g,y,b,D)}n?nt(o,p,i.dash,i.cap,a,l,c,f,s):function(e,n,i,o,a,u,l,c,s,f,d){var h=!1;w.forEach((function(p,v){if(p.series[0]==e){var m,g=_[p.series[1]],y=t[p.series[1]],b=(g._paths||Pl).band;jl(b)&&(b=1==p.dir?b[0]:b[1]);var D=null;g.show&&b&&function(e,t,n){for(t=il(t,0),n=il(n,e.length-1);t<=n;){if(null!=e[t])return!0;t++}return!1}(y,Ye,Ve)?(D=p.fill(r,v)||u,m=g._paths.clip):b=null,nt(n,i,o,a,D,l,c,s,f,d,m,b),h=!0}})),h||nt(n,i,o,a,u,l,c,s,f,d)}(e,o,p,i.dash,i.cap,a,l,c,f,h,s),m&&d.translate(-v,-v)}r.setData=Ge;function nt(e,t,n,r,i,o,a,u,l,c,s,f){Ze(e,t,n,r,i),(l||c||f)&&(d.save(),l&&d.clip(l),c&&d.clip(c)),f?3==(3&u)?(d.clip(f),s&&d.clip(s),it(i,a),rt(e,o,t)):2&u?(it(i,a),d.clip(f),rt(e,o,t)):1&u&&(d.save(),d.clip(f),s&&d.clip(s),it(i,a),d.restore(),rt(e,o,t)):(it(i,a),rt(e,o,t)),(l||c||f)&&d.restore()}function rt(e,t,n){n>0&&(t instanceof Map?t.forEach((function(e,t){d.strokeStyle=Te=t,d.stroke(e)})):null!=t&&e&&d.stroke(t))}function it(e,t){t instanceof Map?t.forEach((function(e,t){d.fillStyle=Oe=t,d.fill(e)})):null!=t&&e&&d.fill(t)}function ot(e,t,n,r,i,o,a,u,l,c){var s=a%2/2;1==m&&d.translate(s,s),Ze(u,a,l,c,u),d.beginPath();var f,h,p,v,g=i+(0==r||3==r?-o:o);0==n?(h=i,v=g):(f=i,p=g);for(var y=0;y<e.length;y++)null!=t[y]&&(0==n?f=p=e[y]:h=v=e[y],d.moveTo(f,h),d.lineTo(p,v));d.stroke(),1==m&&d.translate(-s,-s)}function at(e){var t=!0;return b.forEach((function(n,i){if(n.show){var o=D[n.scale];if(null!=o.min){n._show||(t=!1,n._show=!0,lt(!1));var a=n.side,u=a%2,l=o.min,c=o.max,s=function(e,t,n,i){var o,a=b[e];if(i<=0)o=[0,0];else{var u=a._space=a.space(r,e,t,n,i);o=Xs(t,n,a._incrs=a.incrs(r,e,t,n,i,u),i,u)}return a._found=o}(i,l,c,0==u?ue:le),f=Ft(s,2),d=f[0],h=f[1];if(0!=h){var p=2==o.distr,v=n._splits=n.splits(r,i,l,c,d,h,p),m=2==o.distr?v.map((function(e){return We[e]})):v,g=2==o.distr?We[v[1]]-We[v[0]]:d,y=n._values=n.values(r,n.filter(r,m,i,h,g),i,h,g);n._rotate=2==a?n.rotate(r,y,i,h):0;var _=n._size;n._size=hl(n.size(r,y,i,e)),null!=_&&n._size!=_&&(t=!1)}}else n._show&&(t=!1,n._show=!1,lt(!1))}})),t}function ut(e){var t=!0;return He.forEach((function(n,i){var o=n(r,i,Ne,e);o!=Ue[i]&&(t=!1),Ue[i]=o})),t}function lt(e){_.forEach((function(t,n){n>0&&(t._paths=null,e&&(1==i?(t.min=null,t.max=null):t.facets.forEach((function(e){e.min=null,e.max=null}))))}))}var ct,st,ft,dt,ht,pt,vt,mt,gt,yt,_t,bt,Dt=!1;function wt(){Dt||(Gl(xt),Dt=!0)}function xt(){ve&&(!function(){var e=ql(D,Yl);for(var n in e){var o=e[n],a=T[n];if(null!=a&&null!=a.min)Wl(o,a),n==x&<(!0);else if(n!=x||2==i)if(0==Me&&null==o.from){var u=o.range(r,null,null,n);o.min=u[0],o.max=u[1]}else o.min=Dl,o.max=-Dl}if(Me>0)for(var l in _.forEach((function(n,o){if(1==i){var a=n.scale,u=e[a],l=T[a];if(0==o){var c=u.range(r,u.min,u.max,a);u.min=c[0],u.max=c[1],Ye=Qu(u.min,t[0]),(Ve=Qu(u.max,t[0]))-Ye>1&&(t[0][Ye]<u.min&&Ye++,t[0][Ve]>u.max&&Ve--),n.min=We[Ye],n.max=We[Ve]}else n.show&&n.auto&&Xe(u,l,n,t[o],n.sorted);n.idxs[0]=Ye,n.idxs[1]=Ve}else if(o>0&&n.show&&n.auto){var s=Ft(n.facets,2),f=s[0],d=s[1],h=f.scale,p=d.scale,v=Ft(t[o],2),m=v[0],g=v[1];Xe(e[h],T[h],f,m,f.sorted),Xe(e[p],T[p],d,g,d.sorted),n.min=d.min,n.max=d.max}})),e){var c=e[l],s=T[l];if(null==c.from&&(null==s||null==s.min)){var f=c.range(r,c.min==Dl?null:c.min,c.max==-Dl?null:c.max,l);c.min=f[0],c.max=f[1]}}for(var d in e){var h=e[d];if(null!=h.from){var p=e[h.from];if(null==p.min)h.min=h.max=null;else{var v=h.range(r,p.min,p.max,d);h.min=v[0],h.max=v[1]}}}var m={},g=!1;for(var y in e){var b=e[y],w=D[y];if(w.min!=b.min||w.max!=b.max){w.min=b.min,w.max=b.max;var k=w.distr;w._min=3==k?yl(w.min):4==k?bl(w.min,w.asinh):w.min,w._max=3==k?yl(w.max):4==k?bl(w.max,w.asinh):w.max,m[y]=g=!0}}if(g){for(var C in _.forEach((function(e,t){2==i?t>0&&m.y&&(e._paths=null):m[e.scale]&&(e._paths=null)})),m)ge=!0,an("setScale",C);xe.show&&xe.left>=0&&(ye=be=!0)}for(var A in T)T[A]=null}(),ve=!1),ge&&(!function(){for(var e=!1,t=0;!e;){var n=at(++t),i=ut(t);(e=3==t||n&&i)||(we(r.width,r.height),me=!0)}}(),ge=!1),me&&(Lu(p,gu,ce),Lu(p,vu,se),Lu(p,hu,ue),Lu(p,pu,le),Lu(v,gu,ce),Lu(v,vu,se),Lu(v,hu,ue),Lu(v,pu,le),Lu(h,hu,oe),Lu(h,pu,ae),f.width=dl(oe*nu),f.height=dl(ae*nu),b.forEach((function(e){var t=e._el,n=e._show,r=e._size,i=e._pos,o=e.side;if(null!=t)if(n){var a=o%2==1;Lu(t,a?"left":"top",i-(3===o||0===o?r:0)),Lu(t,a?"width":"height",r),Lu(t,a?"top":"left",a?se:ce),Lu(t,a?"height":"width",a?le:ue),Bu(t,fu)}else Ou(t,fu)})),Te=Oe=Be=Ie=Pe=Re=ze=je=Le=null,$e=1,Qt(!0),an("setSize"),me=!1),oe>0&&ae>0&&(d.clearRect(0,0,f.width,f.height),an("drawClear"),C.forEach((function(e){return e()})),an("draw")),Ot.show&&_e&&(Lt(Ot),_e=!1),xe.show&&ye&&(qt(null,!0,!1),ye=!1),c||(c=!0,r.status=1,an("ready")),Qe=!1,Dt=!1}function kt(e,n){var i=D[e];if(null==i.from){if(0==Me){var o=i.range(r,n.min,n.max,e);n.min=o[0],n.max=o[1]}if(n.min>n.max){var a=n.min;n.min=n.max,n.max=a}if(Me>1&&null!=n.min&&null!=n.max&&n.max-n.min<1e-16)return;e==x&&2==i.distr&&Me>0&&(n.min=Qu(n.min,t[0]),n.max=Qu(n.max,t[0]),n.min==n.max&&n.max++),T[e]=n,ve=!0,wt()}}r.redraw=function(e,t){ge=t||!1,!1!==e?It(x,F.min,F.max):wt()},r.setScale=kt;var Ct=!1,At=xe.drag,Et=At.x,St=At.y;xe.show&&(xe.x&&(ct=Pu("u-cursor-x",v)),xe.y&&(st=Pu("u-cursor-y",v)),0==F.ori?(ft=ct,dt=st):(ft=st,dt=ct),_t=xe.left,bt=xe.top);var Nt,Mt,Tt,Ot=r.select=Wl({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),Bt=Ot.show?Pu("u-select",Ot.over?v:p):null;function Lt(e,t){if(Ot.show){for(var n in e)Ot[n]=e[n],n in Zt&&Lu(Bt,n,e[n]);!1!==t&&an("setSelect")}}function It(e,t,n){kt(e,{min:t,max:n})}function Pt(e,t,n,o){null!=t.focus&&function(e){if(e!=Tt){var t=null==e,n=1!=Ce.alpha;_.forEach((function(r,i){var o=t||0==i||i==e;r._focus=t?null:o,n&&function(e,t){_[e].alpha=t,xe.show&&Ee[e]&&(Ee[e].style.opacity=t);U&&q[e]&&(q[e].style.opacity=t)}(i,o?1:Ce.alpha)})),Tt=e,n&&wt()}}(e),null!=t.show&&_.forEach((function(n,r){r>0&&(e==r||null==e)&&(n.show=t.show,function(e,t){var n=_[e],r=U?q[e]:null;n.show?r&&Bu(r,fu):(r&&Ou(r,fu),Ee.length>1&&zu(Ee[e],-10,-10,ue,le))}(r,t.show),It(2==i?n.facets[1].scale:n.scale,null,null),wt())})),!1!==n&&an("setSeries",e,t),o&&sn("setSeries",r,e,t)}r.setSelect=Lt,r.setSeries=Pt,r.addBand=function(e,t){e.fill=Cl(e.fill||null),e.dir=il(e.dir,-1),t=null==t?w.length:t,w.splice(t,0,e)},r.setBand=function(e,t){Wl(w[e],t)},r.delBand=function(e){null==e?w.length=0:w.splice(e,1)};var Rt={focus:!0};function zt(e,t,n){var r=D[t];n&&(e=e/nu-(1==r.ori?se:ce));var i=ue;1==r.ori&&(e=(i=le)-e),-1==r.dir&&(e=i-e);var o=r._min,a=o+(r._max-o)*(e/i),u=r.distr;return 3==u?ml(10,a):4==u?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return ll.sinh(e)*t}(a,r.asinh):a}function jt(e,t){Lu(Bt,gu,Ot.left=e),Lu(Bt,hu,Ot.width=t)}function $t(e,t){Lu(Bt,vu,Ot.top=e),Lu(Bt,pu,Ot.height=t)}U&&Ae&&qu(Cu,L,(function(e){xe._lock||null!=Tt&&Pt(null,Rt,!0,un.setSeries)})),r.valToIdx=function(e){return Qu(e,t[0])},r.posToIdx=function(e,n){return Qu(zt(e,x,n),t[0],Ye,Ve)},r.posToVal=zt,r.valToPos=function(e,t,n){return 0==D[t].ori?a(e,D[t],n?he:ue,n?fe:0):u(e,D[t],n?pe:le,n?de:0)},r.batch=function(e){e(r),wt()},r.setCursor=function(e,t,n){_t=e.left,bt=e.top,qt(null,t,n)};var Ht=0==F.ori?jt:$t,Ut=1==F.ori?jt:$t;function Yt(e,t){if(null!=e){var n=e.idx;H.idx=n,_.forEach((function(e,t){(t>0||!Q)&&Vt(t,n)}))}U&&H.live&&function(){if(U&&H.live)for(var e=2==i?1:0;e<_.length;e++)if(0!=e||!Q){var t=H.values[e],n=0;for(var r in t)W[e][n++].firstChild.nodeValue=t[r]}}(),be=!1,!1!==t&&an("setLegend")}function Vt(e,n){var i;if(null==n)i=G;else{var o=_[e],a=0==e&&2==M?We:t[e];i=Q?o.values(r,e,n):{_:o.value(r,a[n],e,n)}}H.values[e]=i}function qt(e,n,o){gt=_t,yt=bt;var a,u=Ft(xe.move(r,_t,bt),2);_t=u[0],bt=u[1],xe.show&&(ft&&zu(ft,dl(_t),0,ue,le),dt&&zu(dt,0,dl(bt),ue,le));var l=Ye>Ve;Nt=Dl;var c=0==F.ori?ue:le,s=1==F.ori?ue:le;if(_t<0||0==Me||l){a=null;for(var f=0;f<_.length;f++)f>0&&Ee.length>1&&zu(Ee[f],-10,-10,ue,le);if(Ae&&Pt(null,Rt,!0,null==e&&un.setSeries),H.live){$.fill(null),be=!0;for(var d=0;d<_.length;d++)H.values[d]=G}}else{var h,p;1==i&&(a=Qu(h=zt(0==F.ori?_t:bt,x),t[0],Ye,Ve),p=Ml(S(t[0][a],F,c,0),.5));for(var v=2==i?1:0;v<_.length;v++){var m=_[v],g=$[v],y=1==i?t[v][g]:t[v][1][g],b=xe.dataIdx(r,v,a,h),w=1==i?t[v][b]:t[v][1][b];be=be||w!=y||b!=g,$[v]=b;var k=b==a?p:Ml(S(1==i?t[0][b]:t[v][0][b],F,c,0),.5);if(v>0&&m.show){var C=null==w?-10:Ml(N(w,1==i?D[m.scale]:D[m.facets[1].scale],s,0),.5);if(C>0&&1==i){var A=sl(C-bt);A<=Nt&&(Nt=A,Mt=v)}var E=void 0,M=void 0;if(0==F.ori?(E=k,M=C):(E=C,M=k),be&&Ee.length>1){$u(Ee[v],xe.points.fill(r,v),xe.points.stroke(r,v));var T=void 0,O=void 0,B=void 0,L=void 0,I=!0,P=xe.points.bbox;if(null!=P){I=!1;var R=P(r,v);B=R.left,L=R.top,T=R.width,O=R.height}else B=E,L=M,T=O=xe.points.size(r,v);Uu(Ee[v],T,O,I),zu(Ee[v],B,L,ue,le)}}if(H.live){if(!be||0==v&&Q)continue;Vt(v,b)}}}if(xe.idx=a,xe.left=_t,xe.top=bt,be&&(H.idx=a,Yt()),Ot.show&&Ct)if(null!=e){var z=Ft(un.scales,2),j=z[0],U=z[1],Y=Ft(un.match,2),V=Y[0],q=Y[1],W=Ft(e.cursor.sync.scales,2),J=W[0],Z=W[1],K=e.cursor.drag;if(Et=K._x,St=K._y,Et||St){var X,ee,te,ne,re,ie=e.select,oe=ie.left,ae=ie.top,ce=ie.width,se=ie.height,fe=e.scales[j].ori,de=e.posToVal,he=null!=j&&V(j,J),pe=null!=U&&q(U,Z);he&&Et?(0==fe?(X=oe,ee=ce):(X=ae,ee=se),te=D[j],ne=S(de(X,J),te,c,0),re=S(de(X+ee,J),te,c,0),Ht(pl(ne,re),sl(re-ne))):Ht(0,c),pe&&St?(1==fe?(X=oe,ee=ce):(X=ae,ee=se),te=D[U],ne=N(de(X,Z),te,s,0),re=N(de(X+ee,Z),te,s,0),Ut(pl(ne,re),sl(re-ne))):Ut(0,s)}else Kt()}else{var ve=sl(gt-ht),me=sl(yt-pt);if(1==F.ori){var ge=ve;ve=me,me=ge}Et=At.x&&ve>=At.dist,St=At.y&&me>=At.dist;var ye,_e,De=At.uni;null!=De?Et&&St&&(St=me>=De,(Et=ve>=De)||St||(me>ve?St=!0:Et=!0)):At.x&&At.y&&(Et||St)&&(Et=St=!0),Et&&(0==F.ori?(ye=vt,_e=_t):(ye=mt,_e=bt),Ht(pl(ye,_e),sl(_e-ye)),St||Ut(0,s)),St&&(1==F.ori?(ye=vt,_e=_t):(ye=mt,_e=bt),Ut(pl(ye,_e),sl(_e-ye)),Et||Ht(0,c)),Et||St||(Ht(0,0),Ut(0,0))}if(At._x=Et,At._y=St,null==e){if(o){if(null!=ln){var we=Ft(un.scales,2),ke=we[0],Se=we[1];un.values[0]=null!=ke?zt(0==F.ori?_t:bt,ke):null,un.values[1]=null!=Se?zt(1==F.ori?_t:bt,Se):null}sn(Du,r,_t,bt,ue,le,a)}if(Ae){var Ne=o&&un.setSeries,Fe=Ce.prox;null==Tt?Nt<=Fe&&Pt(Mt,Rt,!0,Ne):Nt>Fe?Pt(null,Rt,!0,Ne):Mt!=Tt&&Pt(Mt,Rt,!0,Ne)}}!1!==n&&an("setCursor")}r.setLegend=Yt;var Wt=null;function Qt(e){!0===e?Wt=null:an("syncRect",Wt=v.getBoundingClientRect())}function Gt(e,t,n,r,i,o,a){xe._lock||Ct&&null!=e&&0==e.movementX&&0==e.movementY||(Jt(e,t,n,r,i,o,a,!1,null!=e),null!=e?qt(null,!0,!0):qt(t,!0,!1))}function Jt(e,t,n,i,o,a,u,c,s){if(null==Wt&&Qt(!1),null!=e)n=e.clientX-Wt.left,i=e.clientY-Wt.top;else{if(n<0||i<0)return _t=-10,void(bt=-10);var f=Ft(un.scales,2),d=f[0],h=f[1],p=t.cursor.sync,v=Ft(p.values,2),m=v[0],g=v[1],y=Ft(p.scales,2),_=y[0],b=y[1],w=Ft(un.match,2),x=w[0],k=w[1],C=t.axes[0].side%2==1,A=0==F.ori?ue:le,E=1==F.ori?ue:le,S=C?a:o,N=C?o:a,M=C?i:n,T=C?n:i;if(n=null!=_?x(d,_)?l(m,D[d],A,0):-10:A*(M/S),i=null!=b?k(h,b)?l(g,D[h],E,0):-10:E*(T/N),1==F.ori){var O=n;n=i,i=O}}if(s&&((n<=1||n>=ue-1)&&(n=xl(n,ue)),(i<=1||i>=le-1)&&(i=xl(i,le))),c){ht=n,pt=i;var B=Ft(xe.move(r,n,i),2);vt=B[0],mt=B[1]}else _t=n,bt=i}var Zt={width:0,height:0,left:0,top:0};function Kt(){Lt(Zt,!1)}function Xt(e,t,n,i,o,a,u){Ct=!0,Et=St=At._x=At._y=!1,Jt(e,t,n,i,o,a,0,!0,!1),null!=e&&(re(xu,Fu,en),sn(wu,r,vt,mt,ue,le,null))}function en(e,t,n,i,o,a,u){Ct=At._x=At._y=!1,Jt(e,t,n,i,o,a,0,!1,!0);var l=Ot.left,c=Ot.top,s=Ot.width,f=Ot.height,d=s>0||f>0;if(d&&Lt(Ot),At.setScale&&d){var h=l,p=s,v=c,m=f;if(1==F.ori&&(h=c,p=f,v=l,m=s),Et&&It(x,zt(h,x),zt(h+p,x)),St)for(var g in D){var y=D[g];g!=x&&null==y.from&&y.min!=Dl&&It(g,zt(v+m,g),zt(v,g))}Kt()}else xe.lock&&(xe._lock=!xe._lock,xe._lock||qt(null,!0,!1));null!=e&&(ie(xu,Fu),sn(xu,r,_t,bt,ue,le,null))}function tn(e,t,n,i,o,a,u){Je(),Kt(),null!=e&&sn(Au,r,_t,bt,ue,le,null)}function nn(){b.forEach(tf),De(r.width,r.height,!0)}qu(Su,Mu,nn);var rn={};rn.mousedown=Xt,rn.mousemove=Gt,rn.mouseup=en,rn.dblclick=tn,rn.setSeries=function(e,t,n,r){Pt(n,r,!0,!1)},xe.show&&(re(wu,v,Xt),re(Du,v,Gt),re(ku,v,Qt),re(Cu,v,(function(e,t,n,r,i,o,a){if(!xe._lock){var u=Ct;if(Ct){var l,c,s=!0,f=!0;0==F.ori?(l=Et,c=St):(l=St,c=Et),l&&c&&(s=_t<=10||_t>=ue-10,f=bt<=10||bt>=le-10),l&&s&&(_t=_t<vt?0:ue),c&&f&&(bt=bt<mt?0:le),qt(null,!0,!0),Ct=!1}_t=-10,bt=-10,qt(null,!0,!0),u&&(Ct=u)}})),re(Au,v,tn),js.add(r),r.syncRect=Qt);var on=r.hooks=e.hooks||{};function an(e,t,n){e in on&&on[e].forEach((function(e){e.call(null,r,t,n)}))}(e.plugins||[]).forEach((function(e){for(var t in e.hooks)on[t]=(on[t]||[]).concat(e.hooks[t])}));var un=Wl({key:null,setSeries:!1,filters:{pub:Nl,sub:Nl},scales:[x,_[1]?_[1].scale:null],match:[Fl,Fl],values:[null,null]},xe.sync);xe.sync=un;var ln=un.key,cn=vs(ln);function sn(e,t,n,r,i,o,a){un.filters.pub(e,t,n,r,i,o,a)&&cn.pub(e,t,n,r,i,o,a)}function fn(){an("init",e,t),Ge(t||e.data,!1),T[x]?kt(x,T[x]):Je(),_e=Ot.show,ye=be=!0,De(e.width,e.height)}return cn.sub(r),r.pub=function(e,t,n,r,i,o,a){un.filters.sub(e,t,n,r,i,o,a)&&rn[e](null,t,n,r,i,o,a)},r.destroy=function(){var e;cn.unsub(r),js.delete(r),ne.clear(),Wu(Su,Mu,nn),s.remove(),null===(e=L)||void 0===e||e.remove(),an("destroy")},_.forEach(Se),b.forEach((function(e,t){if(e._show=e.show,e.show){var n=e.side%2,i=D[e.scale];null==i&&(e.scale=n?_[1].scale:x,i=D[e.scale]);var o=i.time;e.size=Cl(e.size),e.space=Cl(e.space),e.rotate=Cl(e.rotate),e.incrs=Cl(e.incrs||(2==i.distr?sc:o?1==y?kc:Sc:fc)),e.splits=Cl(e.splits||(o&&1==i.distr?R:3==i.distr?Zc:4==i.distr?Kc:Jc)),e.stroke=Cl(e.stroke),e.grid.stroke=Cl(e.grid.stroke),e.ticks.stroke=Cl(e.ticks.stroke),e.border.stroke=Cl(e.border.stroke);var a=e.values;e.values=jl(a)&&!jl(a[0])?Cl(a):o?jl(a)?Tc(I,Mc(a,P)):Hl(a)?function(e,t){var n=ic(t);return function(t,r,i,o,a){return r.map((function(t){return n(e(t))}))}}(I,a):a||z:a||Gc,e.filter=Cl(e.filter||(i.distr>=3&&10==i.log?rs:El)),e.font=ef(e.font),e.labelFont=ef(e.labelFont),e._size=e.size(r,null,t,0),e._space=e._rotate=e._incrs=e._found=e._splits=e._values=null,e._size>0&&(Ne[t]=!0,e._el=Pu("u-axis",h))}})),n?n instanceof HTMLElement?(n.appendChild(s),fn()):n(r,fn):fn(),r}nf.assign=Wl,nf.fmtNum=ul,nf.rangeNum=rl,nf.rangeLog=Ku,nf.rangeAsinh=Xu,nf.orient=ms,nf.pxRatio=nu,nf.join=function(e,t){for(var n=new Set,r=0;r<e.length;r++)for(var i=e[r][0],o=i.length,a=0;a<o;a++)n.add(i[a]);for(var u=[Array.from(n).sort((function(e,t){return e-t}))],l=u[0].length,c=new Map,s=0;s<l;s++)c.set(u[0][s],s);for(var f=0;f<e.length;f++)for(var d=e[f],h=d[0],p=1;p<d.length;p++){for(var v=d[p],m=Array(l).fill(void 0),g=t?t[f][p]:1,y=[],_=0;_<v.length;_++){var b=v[_],D=c.get(h[_]);null===b?0!=g&&(m[D]=b,2==g&&y.push(D)):m[D]=b}Ql(m,y,l),u.push(m)}return u},nf.fmtDate=ic,nf.tzDate=function(e,t){var n;return"UTC"==t||"Etc/UTC"==t?n=new Date(+e+6e4*e.getTimezoneOffset()):t==oc?n=e:(n=new Date(e.toLocaleString("en-US",{timeZone:t}))).setMilliseconds(e.getMilliseconds()),n},nf.sync=vs,nf.addGap=function(e,t,n){var r=e[e.length-1];r&&r[0]==t?r[1]=n:e.push([t,n])},nf.clipGaps=bs;var rf=nf.paths={points:Bs};rf.linear=Rs,rf.stepped=function(e){var t=il(e.align,1),n=il(e.ascDesc,!1),r=il(e.alignGaps,0),i=il(e.extend,!1);return function(e,o,a,u){return ms(e,o,(function(l,c,s,f,d,h,p,v,m,g,y){var _=l.pxRound,b=e.bbox,D=b.left,w=b.width,x=function(e){return _(h(e,f,g,v))},k=function(e){return _(p(e,d,y,m))},C=0==f.ori?As:Es,A={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},E=A.stroke,S=f.dir*(0==f.ori?1:-1);a=Gu(s,a,u,1),u=Gu(s,a,u,-1);var N=k(s[1==S?a:u]),F=x(c[1==S?a:u]),M=F,T=F;i&&-1==t&&C(E,T=D,N),C(E,F,N);for(var O=1==S?a:u;O>=a&&O<=u;O+=S){var B=s[O];if(null!=B){var L=x(c[O]),I=k(B);1==t?C(E,L,N):C(E,M,I),C(E,L,I),N=I,M=L}}var P=M;i&&1==t&&C(E,P=D+w,N);var R=Ft(gs(e,o),2),z=R[0],j=R[1];if(null!=l.fill||0!=z){var $=A.fill=new Path2D(E),H=k(l.fillTo(e,o,l.min,l.max,z));C($,P,H),C($,T,H)}if(!l.spanGaps){var U,Y=[];(U=Y).push.apply(U,Ot(Ds(c,s,a,u,S,x,r)));var V=l.width*nu/2,q=n||1==t?V:-V,W=n||-1==t?-V:V;Y.forEach((function(e){e[0]+=q,e[1]+=W})),A.gaps=Y=l.gaps(e,o,a,u,Y),A.clip=bs(Y,f.ori,v,m,g,y)}return 0!=j&&(A.band=2==j?[_s(e,o,a,u,E,-1),_s(e,o,a,u,E,1)]:_s(e,o,a,u,E,j)),A}))}},rf.bars=function(e){var t=il((e=e||Pl).size,[.6,Dl,1]),n=e.align||0,r=(e.gap||0)*nu,i=il(e.radius,0),o=1-t[0],a=il(t[1],Dl)*nu,u=il(t[2],1)*nu,l=il(e.disp,Pl),c=il(e.each,(function(e){})),s=l.fill,f=l.stroke;return function(e,t,d,h){return ms(e,t,(function(p,v,m,g,y,_,b,D,w,x,k){var C,A,E=p.pxRound,S=g.dir*(0==g.ori?1:-1),N=y.dir*(1==y.ori?1:-1),F=0==g.ori?Ss:Ns,M=0==g.ori?c:function(e,t,n,r,i,o,a){c(e,t,n,i,r,a,o)},T=Ft(gs(e,t),2),O=T[0],B=T[1],L=3==y.distr?1==O?y.max:y.min:0,I=b(L,y,k,w),P=E(p.width*nu),R=!1,z=null,j=null,$=null,H=null;null==s||0!=P&&null==f||(R=!0,z=s.values(e,t,d,h),j=new Map,new Set(z).forEach((function(e){null!=e&&j.set(e,new Path2D)})),P>0&&($=f.values(e,t,d,h),H=new Map,new Set($).forEach((function(e){null!=e&&H.set(e,new Path2D)}))));var U=l.x0,Y=l.size;if(null!=U&&null!=Y){v=U.values(e,t,d,h),2==U.unit&&(v=v.map((function(t){return e.posToVal(D+t*x,g.key,!0)})));var V=Y.values(e,t,d,h);A=E((A=2==Y.unit?V[0]*x:_(V[0],g,x,D)-_(0,g,x,D))-P),C=1==S?-P/2:A+P/2}else{var q=x;if(v.length>1)for(var W=null,Q=0,G=1/0;Q<v.length;Q++)if(void 0!==m[Q]){if(null!=W){var J=sl(v[Q]-v[W]);J<G&&(G=J,q=sl(_(v[Q],g,x,D)-_(v[W],g,x,D)))}W=Q}A=E(pl(a,vl(u,q-q*o))-P-r),C=(0==n?A/2:n==S?0:A)-n*S*r/2}var Z,K={stroke:null,fill:null,clip:null,band:null,gaps:null,flags:3};0!=B&&(K.band=new Path2D,Z=E(b(1==B?y.max:y.min,y,k,w)));var X=R?null:new Path2D,ee=K.band,te=l.y0,ne=l.y1,re=null;null!=te&&null!=ne&&(m=ne.values(e,t,d,h),re=te.values(e,t,d,h));for(var ie=1==S?d:h;ie>=d&&ie<=h;ie+=S){var oe=m[ie];if(void 0!==oe){var ae=_(2!=g.distr||null!=l?v[ie]:ie,g,x,D),ue=b(il(oe,L),y,k,w);null!=re&&null!=oe&&(I=b(re[ie],y,k,w));var le=E(ae-C),ce=E(vl(ue,I)),se=E(pl(ue,I)),fe=ce-se,de=i*A;null!=oe&&(R?(P>0&&null!=$[ie]&&F(H.get($[ie]),le,se+fl(P/2),A,vl(0,fe-P),de),null!=z[ie]&&F(j.get(z[ie]),le,se+fl(P/2),A,vl(0,fe-P),de)):F(X,le,se+fl(P/2),A,vl(0,fe-P),de),M(e,t,ie,le-P/2,se,A+P,fe)),0!=B&&(N*B==1?(ce=se,se=Z):(se=ce,ce=Z),F(ee,le-P/2,se,A+P,vl(0,fe=ce-se),0))}}return P>0&&(K.stroke=R?H:X),K.fill=R?j:X,K}))}},rf.spline=function(e){return function(e,t){var n=il(null===t||void 0===t?void 0:t.alignGaps,0);return function(t,r,i,o){return ms(t,r,(function(a,u,l,c,s,f,d,h,p,v,m){var g,y,_,b=a.pxRound,D=function(e){return b(f(e,c,v,h))},w=function(e){return b(d(e,s,m,p))};0==c.ori?(g=ks,_=As,y=Ts):(g=Cs,_=Es,y=Os);var x=c.dir*(0==c.ori?1:-1);i=Gu(l,i,o,1),o=Gu(l,i,o,-1);for(var k=D(u[1==x?i:o]),C=k,A=[],E=[],S=1==x?i:o;S>=i&&S<=o;S+=x)if(null!=l[S]){var N=D(u[S]);A.push(C=N),E.push(w(l[S]))}var F={stroke:e(A,E,g,_,y,b),fill:null,clip:null,band:null,gaps:null,flags:1},M=F.stroke,T=Ft(gs(t,r),2),O=T[0],B=T[1];if(null!=a.fill||0!=O){var L=F.fill=new Path2D(M),I=w(a.fillTo(t,r,a.min,a.max,O));_(L,C,I),_(L,k,I)}if(!a.spanGaps){var P,R=[];(P=R).push.apply(P,Ot(Ds(u,l,i,o,x,D,n))),F.gaps=R=a.gaps(t,r,i,o,R),F.clip=bs(R,c.ori,h,p,v,m)}return 0!=B&&(F.band=2==B?[_s(t,r,i,o,M,-1),_s(t,r,i,o,M,1)]:_s(t,r,i,o,M,B)),F}))}}(zs,e)};var of,af={legend:{show:!1},cursor:{drag:{x:!0,y:!1},focus:{prox:30},points:{size:5.6,width:1.4},bind:{click:function(){return null},dblclick:function(){return null}}}},uf=function(e,t,n){if(void 0===e||null===e)return"";n=n||0,t=t||0;var r=Math.abs(n-t);if(isNaN(r)||0==r)return Math.abs(e)>=1e3?e.toLocaleString("en-US"):e.toString();var i=3+Math.floor(1+Math.log10(Math.max(Math.abs(t),Math.abs(n)))-Math.log10(r));return(isNaN(i)||i>20)&&(i=20),e.toLocaleString("en-US",{minimumSignificantDigits:i,maximumSignificantDigits:i})},lf=function(e,t,n,r){var i,o=e.axes[n];if(r>1)return o._size||60;var a=6+((null===o||void 0===o||null===(i=o.ticks)||void 0===i?void 0:i.size)||0)+(o.gap||0),u=(null!==t&&void 0!==t?t:[]).reduce((function(e,t){return t.length>e.length?t:e}),"");return""!=u&&(a+=function(e,t){var n=document.createElement("span");n.innerText=e,n.style.cssText="position: absolute; z-index: -1; pointer-events: none; opacity: 0; font: ".concat(t),document.body.appendChild(n);var r=n.offsetWidth;return n.remove(),r}(u,"10px Arial")),Math.ceil(a)},cf=function(e){var t=e.e,n=e.factor,r=void 0===n?.85:n,i=e.u,o=e.setPanning,a=e.setPlotScale;t.preventDefault();var u=t instanceof MouseEvent;o(!0);var l=u?t.clientX:t.touches[0].clientX,c=i.posToVal(1,"x")-i.posToVal(0,"x"),s=i.scales.x.min||0,f=i.scales.x.max||0,d=function(e){var t=e instanceof MouseEvent;if(t||!(e.touches.length>1)){e.preventDefault();var n=t?e.clientX:e.touches[0].clientX,o=c*((n-l)*r);a({u:i,min:s-o,max:f-o})}},h=function e(){o(!1),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",e),document.removeEventListener("touchmove",d),document.removeEventListener("touchend",e)};document.addEventListener("mousemove",d),document.addEventListener("mouseup",h),document.addEventListener("touchmove",d),document.addEventListener("touchend",h)},sf=function(e){for(var t=e.length,n=-1/0;t--;){var r=e[t];Number.isFinite(r)&&r>n&&(n=r)}return Number.isFinite(n)?n:null},ff=function(e){for(var t=e.length,n=1/0;t--;){var r=e[t];Number.isFinite(r)&&r<n&&(n=r)}return Number.isFinite(n)?n:null},df=[[31536e3,"{YYYY}",null,null,null,null,null,null,1],[2419200,"{MMM}","\n{YYYY}",null,null,null,null,null,1],[86400,"{MM}-{DD}","\n{YYYY}",null,null,null,null,null,1],[3600,"{HH}:{mm}","\n{YYYY}-{MM}-{DD}",null,"\n{MM}-{DD}",null,null,null,1],[60,"{HH}:{mm}","\n{YYYY}-{MM}-{DD}",null,"\n{MM}-{DD}",null,null,null,1],[1,"{HH}:{mm}:{ss}","\n{YYYY}-{MM}-{DD}",null,"\n{MM}-{DD} {HH}:{mm}",null,null,null,1],[.001,":{ss}.{fff}","\n{YYYY}-{MM}-{DD} {HH}:{mm}",null,"\n{MM}-{DD} {HH}:{mm}",null,"\n{HH}:{mm}",null,1]],hf=function(e,t){return Array.from(new Set(e.map((function(e){return e.scale})))).map((function(e){var n={scale:e,show:!0,size:lf,stroke:Rr("color-text"),font:"10px Arial",values:function(e,n){return function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=t[0],i=t[t.length-1];return n?t.map((function(e){return"".concat(uf(e,r,i)," ").concat(n)})):t.map((function(e){return uf(e,r,i)}))}(e,n,t)}};return e?Number(e)%2?n:yr(yr({},n),{},{side:1}):{space:80,values:df,stroke:Rr("color-text")}}))},pf=function(e,t){if(null==e||null==t)return[-1,1];var n=.02*(Math.abs(t-e)||Math.abs(e)||1);return[e-n,t+n]},vf=n(61),mf=n.n(vf),gf=function(e){var t,n,r,i=e.u,o=e.id,a=e.unit,u=void 0===a?"":a,l=e.metrics,c=e.series,s=e.yRange,f=e.tooltipIdx,d=e.tooltipOffset,h=e.isSticky,p=e.onClose,v=ie(null),m=Ft(ee({top:-999,left:-999}),2),y=m[0],_=m[1],b=Ft(ee(!1),2),D=b[0],w=b[1],x=Ft(ee(!1),2),k=x[0],C=x[1],A=Ft(ee(f.seriesIdx),2),E=A[0],S=A[1],N=Ft(ee(f.dataIdx),2),F=N[0],M=N[1],T=ae((function(){return i.root.querySelector(".u-wrap")}),[i]),O=Mr()(i,["data",E,F],0),B=uf(O,Mr()(s,[0]),Mr()(s,[1])),L=i.data[0][F],I=_t()(1e3*L).tz().format("YYYY-MM-DD HH:mm:ss:SSS (Z)"),P=(null===(t=c[E])||void 0===t?void 0:t.stroke)+"",R=(null===(n=c[E])||void 0===n?void 0:n.calculations)||{},z=new Set(l.map((function(e){return e.group}))),j=z.size>1,$=(null===(r=l[E-1])||void 0===r?void 0:r.group)||0,H=ae((function(){var e,t=(null===(e=l[E-1])||void 0===e?void 0:e.metric)||{},n=Object.keys(t).filter((function(e){return"__name__"!=e})),r=n.map((function(e){return"".concat(e,"=").concat(JSON.stringify(t[e]))})),i=t.__name__||"";return r.length>0&&(i+="{"+r.join(",")+"}"),i}),[l,E]),U=function(e){if(D){var t=e.clientX,n=e.clientY;_({top:n,left:t})}},Y=function(){w(!1)};return ne((function(){var e;if(v.current){var t=i.valToPos(O||0,(null===(e=c[E])||void 0===e?void 0:e.scale)||"1"),n=i.valToPos(L,"x"),r=v.current.getBoundingClientRect(),o=r.width,a=r.height,u=i.over.getBoundingClientRect(),l=n+o>=u.width?o+20:0,s=t+a>=u.height?a+20:0,f={top:t+d.top+10-s,left:n+d.left+10-l};f.left<0&&(f.left=20),f.top<0&&(f.top=20),_(f)}}),[i,O,L,E,d,v]),ne((function(){S(f.seriesIdx),M(f.dataIdx)}),[f]),ne((function(){return D&&(document.addEventListener("mousemove",U),document.addEventListener("mouseup",Y)),function(){document.removeEventListener("mousemove",U),document.removeEventListener("mouseup",Y)}}),[D]),!T||f.seriesIdx<0||f.dataIdx<0?null:gt.createPortal(Vr("div",{className:wo()({"vm-chart-tooltip":!0,"vm-chart-tooltip_sticky":h,"vm-chart-tooltip_moved":k}),ref:v,style:y,children:[Vr("div",{className:"vm-chart-tooltip-header",children:[Vr("div",{className:"vm-chart-tooltip-header__date",children:[j&&Vr("div",{children:["Query ",$]}),I]}),h&&Vr(g,{children:[Vr(fa,{className:"vm-chart-tooltip-header__drag",variant:"text",size:"small",startIcon:Vr(fo,{}),onMouseDown:function(e){C(!0),w(!0);var t=e.clientX,n=e.clientY;_({top:n,left:t})}}),Vr(fa,{className:"vm-chart-tooltip-header__close",variant:"text",size:"small",startIcon:Vr(ji,{}),onClick:function(){p&&p(o)}})]})]}),Vr("div",{className:"vm-chart-tooltip-data",children:[Vr("div",{className:"vm-chart-tooltip-data__marker",style:{background:P}}),Vr("div",{children:[Vr("b",{children:[B,u]}),Vr("br",{}),"median:",Vr("b",{children:R.median}),", min:",Vr("b",{children:R.min}),", max:",Vr("b",{children:R.max})]})]}),Vr("div",{className:"vm-chart-tooltip-info",children:H})]}),T)};!function(e){e.xRange="xRange",e.yRange="yRange",e.data="data"}(of||(of={}));var yf=function(e){var t=e.data,n=e.series,r=e.metrics,i=void 0===r?[]:r,o=e.period,a=e.yaxis,u=e.unit,l=e.setPeriod,c=e.container,s=e.height,f=Wr().isDarkTheme,d=ie(null),h=Ft(ee(!1),2),v=h[0],m=h[1],g=Ft(ee({min:o.start,max:o.end}),2),y=g[0],_=g[1],b=Ft(ee([0,1]),2),D=b[0],w=b[1],x=Ft(ee(),2),k=x[0],C=x[1],A=Ft(ee(0),2),E=A[0],S=A[1],N=bo(c),F=Ft(ee(!1),2),M=F[0],T=F[1],O=Ft(ee({seriesIdx:-1,dataIdx:-1}),2),B=O[0],L=O[1],I=Ft(ee({left:0,top:0}),2),P=I[0],R=I[1],z=Ft(ee([]),2),j=z[0],$=z[1],H=ae((function(){return"".concat(B.seriesIdx,"_").concat(B.dataIdx)}),[B]),U=ue(mf()((function(e){var t=e.min,n=e.max;l({from:_t()(1e3*t).toDate(),to:_t()(1e3*n).toDate()})}),500),[]),Y=function(e){var t=e.u,n=e.min,r=e.max,i=1e3*(r-n);i<ei||i>ti||(t.setScale("x",{min:n,max:r}),_({min:n,max:r}),U({min:n,max:r}))},V=function(e){var t=e.target,n=e.ctrlKey,r=e.metaKey,i=e.key,o=t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement;if(k&&!o){var a="+"===i||"="===i;if(("-"===i||a)&&!n&&!r){e.preventDefault();var u=(y.max-y.min)/10*(a?1:-1);Y({u:k,min:y.min+u,max:y.max-u})}}},q=function(){var e="".concat(B.seriesIdx,"_").concat(B.dataIdx),t={id:e,unit:u,series:n,metrics:i,yRange:D,tooltipIdx:B,tooltipOffset:P};if(!j.find((function(t){return t.id===e}))){var r=JSON.parse(JSON.stringify(t));$((function(e){return[].concat(Ot(e),[r])}))}},W=function(e){$((function(t){return t.filter((function(t){return t.id!==e}))}))},Q=function(){return[y.min,y.max]},G=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3?arguments[3]:void 0;return"1"==r&&w([t,n]),a.limits.enable?a.limits.range[r]:pf(t,n)},J=yr(yr({},af),{},{tzDate:function(e){return _t()(fi(hi(e))).local().toDate()},series:n,axes:hf([{},{scale:"1"}],u),scales:yr({},function(){var e={x:{range:Q}},t=Object.keys(a.limits.range);return(t.length?t:["1"]).forEach((function(t){e[t]={range:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return G(e,n,r,t)}}})),e}()),width:N.width||400,height:s||500,plugins:[{hooks:{ready:function(e){var t=.9;R({left:parseFloat(e.over.style.left),top:parseFloat(e.over.style.top)}),e.over.addEventListener("mousedown",(function(n){var r=n.ctrlKey,i=n.metaKey;0===n.button&&(r||i)&&cf({u:e,e:n,setPanning:m,setPlotScale:Y,factor:t})})),e.over.addEventListener("touchstart",(function(n){cf({u:e,e:n,setPanning:m,setPlotScale:Y,factor:t})})),e.over.addEventListener("wheel",(function(n){if(n.ctrlKey||n.metaKey){n.preventDefault();var r=e.over.getBoundingClientRect().width,i=e.cursor.left&&e.cursor.left>0?e.cursor.left:0,o=e.posToVal(i,"x"),a=(e.scales.x.max||0)-(e.scales.x.min||0),u=n.deltaY<0?a*t:a/t,l=o-i/r*u,c=l+u;e.batch((function(){return Y({u:e,min:l,max:c})}))}}))},setCursor:function(e){var t,n=null!==(t=e.cursor.idx)&&void 0!==t?t:-1;L((function(e){return yr(yr({},e),{},{dataIdx:n})}))},setSeries:function(e,t){var n=null!==t&&void 0!==t?t:-1;L((function(e){return yr(yr({},e),{},{seriesIdx:n})}))}}}],hooks:{setSelect:[function(e){var t=e.posToVal(e.select.left,"x"),n=e.posToVal(e.select.left+e.select.width,"x");Y({u:e,min:t,max:n})}]}}),Z=function(e){if(k){switch(e){case of.xRange:k.scales.x.range=Q;break;case of.yRange:Object.keys(a.limits.range).forEach((function(e){k.scales[e]&&(k.scales[e].range=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return G(t,n,r,e)})}));break;case of.data:k.setData(t)}v||k.redraw()}};ne((function(){return _({min:o.start,max:o.end})}),[o]),ne((function(){if($([]),L({seriesIdx:-1,dataIdx:-1}),d.current){var e=new nf(J,t,d.current);return C(e),_({min:o.start,max:o.end}),e.destroy}}),[d.current,n,N,s,f]),ne((function(){return window.addEventListener("keydown",V),function(){window.removeEventListener("keydown",V)}}),[y]);var K=function(e){if(2===e.touches.length){e.preventDefault();var t=e.touches[0].clientX-e.touches[1].clientX,n=e.touches[0].clientY-e.touches[1].clientY;S(Math.sqrt(t*t+n*n))}},X=function(e){if(2===e.touches.length&&k){e.preventDefault();var t=e.touches[0].clientX-e.touches[1].clientX,n=e.touches[0].clientY-e.touches[1].clientY,r=Math.sqrt(t*t+n*n),i=E-r,o=k.scales.x.max||y.max,a=k.scales.x.min||y.min,u=(o-a)/50*(i>0?-1:1);k.batch((function(){return Y({u:k,min:a+u,max:o-u})}))}};return ne((function(){return window.addEventListener("touchmove",X),window.addEventListener("touchstart",K),function(){window.removeEventListener("touchmove",X),window.removeEventListener("touchstart",K)}}),[k,E]),ne((function(){return Z(of.data)}),[t]),ne((function(){return Z(of.xRange)}),[y]),ne((function(){return Z(of.yRange)}),[a]),ne((function(){var e=-1!==B.dataIdx&&-1!==B.seriesIdx;return T(e),e&&window.addEventListener("click",q),function(){window.removeEventListener("click",q)}}),[B,j]),Vr("div",{className:wo()({"vm-line-chart":!0,"vm-line-chart_panning":v}),style:{minWidth:"".concat(N.width||400,"px"),minHeight:"".concat(s||500,"px")},children:[Vr("div",{className:"vm-line-chart__u-plot",ref:d}),k&&M&&Vr(gf,{unit:u,u:k,series:n,metrics:i,yRange:D,tooltipIdx:B,tooltipOffset:P,id:H}),k&&j.map((function(e){return p(gf,yr(yr({},e),{},{isSticky:!0,u:k,key:e.id,onClose:W}))}))]})},_f=function(e){var t=e.legend,n=e.onChange,r=Ft(ee(""),2),i=r[0],o=r[1],a=ae((function(){return function(e){var t=Object.keys(e.freeFormFields).filter((function(e){return"__name__"!==e}));return t.map((function(t){var n="".concat(t,"=").concat(JSON.stringify(e.freeFormFields[t]));return{id:"".concat(e.label,".").concat(n),freeField:n,key:t}}))}(t)}),[t]),u=t.calculations,l=function(){var e=tu(Xa().mark((function e(t,n){return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,navigator.clipboard.writeText(t);case 2:o(n),setTimeout((function(){return o("")}),2e3);case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}();return Vr("div",{className:wo()({"vm-legend-item":!0,"vm-legend-row":!0,"vm-legend-item_hide":!t.checked}),onClick:function(e){return function(t){n(e,t.ctrlKey||t.metaKey)}}(t),children:[Vr("div",{className:"vm-legend-item__marker",style:{backgroundColor:t.color}}),Vr("div",{className:"vm-legend-item-info",children:Vr("span",{className:"vm-legend-item-info__label",children:[t.freeFormFields.__name__,"{",a.map((function(e,t){return Vr(ma,{open:i===e.id,title:"copied!",placement:"top-center",children:Vr("span",{className:"vm-legend-item-info__free-fields",onClick:(n=e.freeField,r=e.id,function(e){e.stopPropagation(),l(n,r)}),title:"copy to clipboard",children:[e.freeField,t+1<a.length&&","]},e.key)},e.id);var n,r})),"}"]})}),Vr("div",{className:"vm-legend-item-values",children:["median:",u.median,", min:",u.min,", max:",u.max,", last:",u.last]})]})},bf=function(e){var t=e.labels,n=e.query,r=e.onChange,i=ae((function(){return Array.from(new Set(t.map((function(e){return e.group}))))}),[t]),o=i.length>1;return Vr(g,{children:Vr("div",{className:"vm-legend",children:i.map((function(e){return Vr("div",{className:"vm-legend-group",children:[Vr("div",{className:"vm-legend-group-title",children:[o&&Vr("span",{className:"vm-legend-group-title__count",children:["Query ",e,": "]}),Vr("span",{className:"vm-legend-group-title__query",children:n[e-1]})]}),Vr("div",{children:t.filter((function(t){return t.group===e})).map((function(e){return Vr(_f,{legend:e,onChange:r},e.label)}))})]},e)}))})})},Df=["__name__"],wf=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=e.metric,i=r.__name__,o=xo(r,Df),a=t||"".concat(n?"[Query ".concat(e.group,"] "):"").concat(i||"");return 0==Object.keys(o).length?a||"value":"".concat(a,"{").concat(Object.entries(o).map((function(e){return"".concat(e[0],"=").concat(JSON.stringify(e[1]))})).join(", "),"}")},xf=function(e){switch(e){case"NaN":return NaN;case"Inf":case"+Inf":return 1/0;case"-Inf":return-1/0;default:return parseFloat(e)}},kf=["#e54040","#32a9dc","#2ee329","#7126a1","#e38f0f","#3d811a","#ffea00","#2d2d2d","#da42a6","#a44e0c"],Cf=function(e){var t=16777215,n=1,r=0,i=1;if(e.length>0)for(var o=0;o<e.length;o++)e[o].charCodeAt(0)>r&&(r=e[o].charCodeAt(0)),i=parseInt(String(t/r)),n=(n+e[o].charCodeAt(0)*i*49979693)%t;var a=(n*e.length%t).toString(16);return a=a.padEnd(6,a),"#".concat(a)},Af=function(){var e={};return function(t,n,r){var i=wf(t,r[t.group-1]),o=Object.keys(e).length;o<kf.length&&(e[i]=e[i]||kf[o]);var a=t.values.map((function(e){return xf(e[1])})),u=ff(a),l=sf(a),c=function(e){for(var t=e.length,n=[];t--;){var r=e[t];Number.isFinite(r)&&n.push(r)}return n.sort(),n[n.length>>1]}(a),s=function(e){for(var t=e.length;t--;){var n=e[t];if(Number.isFinite(n))return n}}(a);return{label:i,freeFormFields:t.metric,width:1.4,stroke:e[i]||Cf(i),show:!Sf(i,n),scale:"1",points:{size:4.2,width:1.4},calculations:{min:uf(u,u,l),max:uf(l,u,l),median:uf(c,u,l),last:uf(s,u,l)}}}},Ef=function(e,t){return{group:t,label:e.label||"",color:e.stroke,checked:e.show||!1,freeFormFields:e.freeFormFields,calculations:e.calculations}},Sf=function(e,t){return t.includes("".concat(e))},Nf=function(e){var t=e.data,n=void 0===t?[]:t,r=e.period,i=e.customStep,o=e.query,a=e.yaxis,u=e.unit,l=e.showLegend,c=void 0===l||l,s=e.setYaxisLimits,f=e.setPeriod,d=e.alias,h=void 0===d?[]:d,p=e.fullWidth,v=void 0===p||p,m=e.height,g=Xo().isMobile,y=Ni().timezone,_=ae((function(){return i||r.step||"1s"}),[r.step,i]),b=ue(Af(),[n]),D=Ft(ee([[]]),2),w=D[0],x=D[1],k=Ft(ee([]),2),C=k[0],A=k[1],E=Ft(ee([]),2),S=E[0],N=E[1],F=Ft(ee([]),2),M=F[0],T=F[1],O=function(e){var t=function(e){var t={},n=Object.values(e).flat(),r=ff(n),i=sf(n);return t[1]=pf(r,i),t}(e);s(t)};ne((function(){var e=[],t={},i=[],o=[{}];null===n||void 0===n||n.forEach((function(n){var r=b(n,M,h);o.push(r),i.push(Ef(r,n.group));var a,u=t[n.group]||[],l=Mt(n.values);try{for(l.s();!(a=l.n()).done;){var c=a.value;e.push(c[0]),u.push(xf(c[1]))}}catch(s){l.e(s)}finally{l.f()}t[n.group]=u}));var a=function(e,t,n){for(var r=li(t)||1,i=Array.from(new Set(e)).sort((function(e,t){return e-t})),o=n.start,a=ai(n.end+r),u=0,l=[];o<=a;){for(;u<i.length&&i[u]<=o;)o=i[u],u++,l.push(o);o=ai(o+r),(u>=i.length||i[u]>o)&&l.push(o)}for(;l.length<2;)l.push(o),o=ai(o+r);return l}(e,_,r),u=n.map((function(e){var t,n=[],r=e.values,i=r.length,o=0,u=Mt(a);try{for(u.s();!(t=u.n()).done;){for(var l=t.value;o<i&&r[o][0]<l;)o++;var c=null;o<i&&r[o][0]==l&&(c=xf(r[o][1]),Number.isFinite(c)||(c=null)),n.push(c)}}catch(p){u.e(p)}finally{u.f()}var s=n.filter((function(e){return null!==e})),f=Math.abs(function(e){for(var t=e[0],n=1,r=1;r<e.length;r++){var i=e[r];Number.isFinite(i)&&(t=t*(n-1)/n+i/n,n++)}return t}(s)),d=pf(ff(s),sf(s)),h=Math.abs(d[1]-d[0]);return f>1e10*h?n.map((function(){return f})):n}));u.unshift(a),O(t),x(u),A(o),N(i)}),[n,y]),ne((function(){var e=[],t=[{}];null===n||void 0===n||n.forEach((function(n){var r=b(n,M,h);t.push(r),e.push(Ef(r,n.group))})),A(t),N(e)}),[M]);var B=ie(null);return Vr("div",{className:wo()({"vm-graph-view":!0,"vm-graph-view_full-width":v,"vm-graph-view_full-width_mobile":v&&g}),ref:B,children:[(null===B||void 0===B?void 0:B.current)&&Vr(yf,{data:w,series:C,metrics:n,period:r,yaxis:a,unit:u,setPeriod:f,container:null===B||void 0===B?void 0:B.current,height:m}),c&&Vr(bf,{labels:S,query:o,onChange:function(e,t){T(function(e){var t=e.hideSeries,n=e.legend,r=e.metaKey,i=e.series,o=n.label,a=Sf(o,t),u=i.map((function(e){return e.label||""}));return r?a?t.filter((function(e){return e!==o})):[].concat(Ot(t),[o]):t.length?a?Ot(u.filter((function(e){return e!==o}))):[]:Ot(u.filter((function(e){return e!==o})))}({hideSeries:M,legend:e,metaKey:t,series:C}))}})]})},Ff=function(e){var t=e.value,n=e.options,r=e.anchor,i=e.disabled,o=e.maxWords,a=void 0===o?1:o,u=e.minLength,l=void 0===u?2:u,c=e.fullWidth,f=e.selected,d=e.noOptionsText,h=e.label,p=e.disabledFullScreen,v=e.onSelect,m=e.onOpenAutocomplete,g=Xo().isMobile,y=ie(null),_=Ft(ee(!1),2),b=_[0],D=_[1],w=Ft(ee(-1),2),x=w[0],k=w[1],C=ae((function(){if(!b)return[];try{var e=new RegExp(String(t),"i");return n.filter((function(n){return e.test(n)&&n!==t})).sort((function(t,n){var r,i;return((null===(r=t.match(e))||void 0===r?void 0:r.index)||0)-((null===(i=n.match(e))||void 0===i?void 0:i.index)||0)}))}catch(s){return[]}}),[b,n,t]),A=ae((function(){return d&&!C.length}),[d,C]),E=function(){D(!1)},S=function(e){var t=e.key,n=e.ctrlKey,r=e.metaKey,i=e.shiftKey,o=n||r||i,a=C.length;if("ArrowUp"===t&&!o&&a&&(e.preventDefault(),k((function(e){return e<=0?0:e-1}))),"ArrowDown"===t&&!o&&a){e.preventDefault();var u=C.length-1;k((function(e){return e>=u?u:e+1}))}if("Enter"===t){var l=C[x];l&&v(l),f||E()}"Escape"===t&&E()};return ne((function(){var e=(t.match(/[a-zA-Z_:.][a-zA-Z0-9_:.]*/gm)||[]).length;D(t.length>l&&e<=a)}),[t]),ne((function(){return function(){if(y.current){var e=y.current.childNodes[x];null!==e&&void 0!==e&&e.scrollIntoView&&e.scrollIntoView({block:"center"})}}(),window.addEventListener("keydown",S),function(){window.removeEventListener("keydown",S)}}),[x,C]),ne((function(){k(-1)}),[C]),ne((function(){m&&m(b)}),[b]),Vr(da,{open:b,buttonRef:r,placement:"bottom-left",onClose:E,fullWidth:c,title:g?h:void 0,disabledFullScreen:p,children:Vr("div",{className:wo()({"vm-autocomplete":!0,"vm-autocomplete_mobile":g&&!p}),ref:y,children:[A&&Vr("div",{className:"vm-autocomplete__no-options",children:d}),C.map((function(e,t){return Vr("div",{className:wo()({"vm-list-item":!0,"vm-list-item_mobile":g,"vm-list-item_active":t===x,"vm-list-item_multiselect":f,"vm-list-item_multiselect_selected":null===f||void 0===f?void 0:f.includes(e)}),id:"$autocomplete$".concat(e),onClick:(n=e,function(){i||(v(n),f||E())}),children:[(null===f||void 0===f?void 0:f.includes(e))&&Vr(uo,{}),Vr("span",{children:e})]},e);var n}))]})})},Mf=function(e){var t=e.value,n=e.onChange,r=e.onEnter,i=e.onArrowUp,o=e.onArrowDown,a=e.autocomplete,u=e.error,l=e.options,c=e.label,s=e.disabled,f=void 0!==s&&s,d=Ft(ee(!1),2),h=d[0],p=d[1],v=ie(null);return Vr("div",{className:"vm-query-editor",ref:v,children:[Vr(xa,{value:t,label:c,type:"textarea",autofocus:!!t,error:u,onKeyDown:function(e){var t=e.key,n=e.ctrlKey,a=e.metaKey,u=e.shiftKey,l=n||a,c="ArrowDown"===t,s="Enter"===t;"ArrowUp"===t&&l&&(e.preventDefault(),i()),c&&l&&(e.preventDefault(),o()),!s||u||h||r()},onChange:n,disabled:f,inputmode:"search"}),a&&Vr(Ff,{disabledFullScreen:!0,value:t,options:l,anchor:v,onSelect:function(e){n(e)},onOpenAutocomplete:p})]})},Tf=function(e){var t,n=e.value,r=void 0!==n&&n,i=e.disabled,o=void 0!==i&&i,a=e.label,u=e.color,l=void 0===u?"secondary":u,c=e.fullWidth,s=e.onChange;return Vr("div",{className:wo()((mr(t={"vm-switch":!0,"vm-switch_full-width":c,"vm-switch_disabled":o,"vm-switch_active":r},"vm-switch_".concat(l,"_active"),r),mr(t,"vm-switch_".concat(l),l),t)),onClick:function(){o||s(!r)},children:[Vr("div",{className:"vm-switch-track",children:Vr("div",{className:"vm-switch-track__thumb"})}),a&&Vr("span",{className:"vm-switch__label",children:a})]})},Of=function(e){var t=e.isMobile,n=Li().autocomplete,r=Ii(),i=Io(),o=i.nocache,a=i.isTracingEnabled,u=Po();return Vr("div",{className:wo()({"vm-additional-settings":!0,"vm-additional-settings_mobile":t}),children:[Vr(Tf,{label:"Autocomplete",value:n,onChange:function(){r({type:"TOGGLE_AUTOCOMPLETE"})},fullWidth:t}),Vr(Tf,{label:"Disable cache",value:o,onChange:function(){u({type:"TOGGLE_NO_CACHE"})},fullWidth:t}),Vr(Tf,{label:"Trace query",value:a,onChange:function(){u({type:"TOGGLE_QUERY_TRACING"})},fullWidth:t})]})},Bf=function(){var e=Xo().isMobile,t=Ft(ee(!1),2),n=t[0],r=t[1],i=ie(null);return e?Vr(g,{children:[Vr("div",{ref:i,children:Vr(fa,{variant:"outlined",startIcon:Vr(_o,{}),onClick:function(){r((function(e){return!e}))}})}),Vr(da,{open:n,buttonRef:i,placement:"bottom-left",onClose:function(){r(!1)},title:"Query settings",children:Vr(Of,{isMobile:e})})]}):Vr(Of,{})},Lf=function(e,t){return e.length===t.length&&e.every((function(e,n){return e===t[n]}))},If=function(e){var t=e.error,n=e.queryOptions,r=e.onHideQuery,i=e.onRunQuery,o=Xo().isMobile,a=Li(),u=a.query,l=a.queryHistory,c=a.autocomplete,s=Ii(),f=Fi(),d=Ft(ee(u||[]),2),h=d[0],p=d[1],v=Ft(ee([]),2),m=v[0],g=v[1],y=Aa(h),_=function(){s({type:"SET_QUERY_HISTORY",payload:h.map((function(e,t){var n=l[t]||{values:[]},r=e===n.values[n.values.length-1];return{index:n.values.length-Number(r),values:!r&&e?[].concat(Ot(n.values),[e]):n.values}}))}),s({type:"SET_QUERY",payload:h}),f({type:"RUN_QUERY"}),i()},b=function(e,t){p((function(n){return n.map((function(n,r){return r===t?e:n}))}))},D=function(e,t){return function(){!function(e,t){var n=l[t],r=n.index,i=n.values,o=r+e;o<0||o>=i.length||(b(i[o]||"",t),s({type:"SET_QUERY_HISTORY_BY_INDEX",payload:{value:{values:i,index:o},queryNumber:t}}))}(e,t)}},w=function(e){return function(t){b(t,e)}},x=function(e){return function(){var t;t=e,p((function(e){return e.filter((function(e,n){return n!==t}))})),g((function(t){return t.includes(e)?t.filter((function(t){return t!==e})):t.map((function(t){return t>e?t-1:t}))}))}},k=function(e){return function(t){!function(e,t){var n=e.ctrlKey,r=e.metaKey;if(n||r){var i=h.map((function(e,t){return t})).filter((function(e){return e!==t}));g((function(e){return Lf(i,e)?[]:i}))}else g((function(e){return e.includes(t)?e.filter((function(e){return e!==t})):[].concat(Ot(e),[t])}))}(t,e)}};return ne((function(){y&&h.length<y.length&&_()}),[h]),ne((function(){r(m)}),[m]),Vr("div",{className:wo()({"vm-query-configurator":!0,"vm-block":!0,"vm-block_mobile":o}),children:[Vr("div",{className:"vm-query-configurator-list",children:h.map((function(e,r){return Vr("div",{className:wo()({"vm-query-configurator-list-row":!0,"vm-query-configurator-list-row_disabled":m.includes(r),"vm-query-configurator-list-row_mobile":o}),children:[Vr(Mf,{value:h[r],autocomplete:c,options:n,error:t,onArrowUp:D(-1,r),onArrowDown:D(1,r),onEnter:_,onChange:w(r),label:"Query ".concat(r+1),disabled:m.includes(r)}),Vr(ma,{title:m.includes(r)?"Enable query":"Disable query",children:Vr("div",{className:"vm-query-configurator-list-row__button",children:Vr(fa,{variant:"text",color:"gray",startIcon:m.includes(r)?Vr(co,{}):Vr(lo,{}),onClick:k(r)})})}),h.length>1&&Vr(ma,{title:"Remove Query",children:Vr("div",{className:"vm-query-configurator-list-row__button",children:Vr(fa,{variant:"text",color:"error",startIcon:Vr(io,{}),onClick:x(r)})})})]},r)}))}),Vr("div",{className:"vm-query-configurator-settings",children:[Vr(Bf,{}),Vr("div",{className:"vm-query-configurator-settings__buttons",children:[h.length<4&&Vr(fa,{variant:"outlined",onClick:function(){p((function(e){return[].concat(Ot(e),[""])}))},startIcon:Vr(oo,{}),children:"Add Query"}),Vr(fa,{variant:"contained",onClick:_,startIcon:Vr(Xi,{}),children:o?"Execute":"Execute Query"})]})]})]})};function Pf(e){var t,n,r,i=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);i--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new Rf(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function Rf(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return Rf=function(e){this.s=e,this.n=e.next},Rf.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new Rf(e)}var zf=n(936),jf=n.n(zf),$f=0,Hf=function(){function e(t,n){Bt(this,e),this.tracing=void 0,this.query=void 0,this.tracingChildren=void 0,this.originalTracing=void 0,this.id=void 0,this.tracing=t,this.originalTracing=JSON.parse(JSON.stringify(t)),this.query=n,this.id=$f++;var r=t.children||[];this.tracingChildren=r.map((function(t){return new e(t,n)}))}return Rt(e,[{key:"queryValue",get:function(){return this.query}},{key:"idValue",get:function(){return this.id}},{key:"children",get:function(){return this.tracingChildren}},{key:"message",get:function(){return this.tracing.message}},{key:"duration",get:function(){return this.tracing.duration_msec}},{key:"JSON",get:function(){return JSON.stringify(this.tracing,null,2)}},{key:"originalJSON",get:function(){return JSON.stringify(this.originalTracing,null,2)}},{key:"setTracing",value:function(t){var n=this;this.tracing=t;var r=t.children||[];this.tracingChildren=r.map((function(t){return new e(t,n.query)}))}},{key:"setQuery",value:function(e){this.query=e}},{key:"resetTracing",value:function(){this.tracing=this.originalTracing}}]),e}(),Uf=function(e){var t=e.predefinedQuery,n=e.visible,r=e.display,i=e.customStep,o=e.hideQuery,a=e.showAllSeries,u=Li().query,l=Ni().period,c=Io(),s=c.displayType,f=c.nocache,d=c.isTracingEnabled,h=c.seriesLimits,p=Wr().serverUrl,v=Ft(ee(!1),2),m=v[0],g=v[1],y=Ft(ee(),2),_=y[0],b=y[1],D=Ft(ee(),2),w=D[0],x=D[1],k=Ft(ee(),2),C=k[0],A=k[1],E=Ft(ee(),2),S=E[0],N=E[1],F=Ft(ee(),2),M=F[0],T=F[1],O=Ft(ee([]),2),B=O[0],L=O[1];ne((function(){S&&(b(void 0),x(void 0),A(void 0))}),[S]);var I=function(){var e=tu(Xa().mark((function e(t){var n,r,i,o,a,u,l,c,s,f,d,h,p,v,m,y,_,D,w,k,C,E,S,F,M;return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.fetchUrl,r=t.fetchQueue,i=t.displayType,o=t.query,a=t.stateSeriesLimits,u=t.showAllSeries,l=t.hideQuery,c=new AbortController,L([].concat(Ot(r),[c])),e.prev=3,s="chart"===i,f=u?1/0:a[i],d=[],h=[],p=1,v=0,m=!1,y=!1,e.prev=12,D=Pf(n);case 14:return e.next=16,D.next();case 16:if(!(m=!(w=e.sent).done)){e.next=32;break}if(k=w.value,!(null===l||void 0===l?void 0:l.includes(p-1))){e.next=22;break}return p++,e.abrupt("continue",29);case 22:return e.next=24,fetch(k,{signal:c.signal});case 24:return C=e.sent,e.next=27,C.json();case 27:E=e.sent,C.ok?(N(void 0),E.trace&&(S=new Hf(E.trace,o[p-1]),h.push(S)),F=f-d.length,E.data.result.slice(0,F).forEach((function(e){e.group=p,d.push(e)})),v+=E.data.result.length,p++):N("".concat(E.errorType,"\r\n").concat(null===E||void 0===E?void 0:E.error));case 29:m=!1,e.next=14;break;case 32:e.next=38;break;case 34:e.prev=34,e.t0=e.catch(12),y=!0,_=e.t0;case 38:if(e.prev=38,e.prev=39,!m||null==D.return){e.next=43;break}return e.next=43,D.return();case 43:if(e.prev=43,!y){e.next=46;break}throw _;case 46:return e.finish(43);case 47:return e.finish(38);case 48:M="Showing ".concat(f," series out of ").concat(v," series due to performance reasons. Please narrow down the query, so it returns less series"),T(v>f?M:""),s?b(d):x(d),A(h),e.next=57;break;case 54:e.prev=54,e.t1=e.catch(3),e.t1 instanceof Error&&"AbortError"!==e.t1.name&&N("".concat(e.t1.name,": ").concat(e.t1.message));case 57:g(!1);case 58:case"end":return e.stop()}}),e,null,[[3,54],[12,34,38,48],[39,,43,47]])})));return function(t){return e.apply(this,arguments)}}(),P=ue(jf()(I,300),[]),R=ae((function(){var e=null!==t&&void 0!==t?t:u,n="chart"===(r||s);if(l)if(p)if(e.every((function(e){return!e.trim()})))N(_r.validQuery);else{if(Ha(p)){var o=yr({},l);return o.step=i,e.map((function(e){return n?function(e,t,n,r,i){return"".concat(e,"/api/v1/query_range?query=").concat(encodeURIComponent(t),"&start=").concat(n.start,"&end=").concat(n.end,"&step=").concat(n.step).concat(r?"&nocache=1":"").concat(i?"&trace=1":"")}(p,e,o,f,d):function(e,t,n,r){return"".concat(e,"/api/v1/query?query=").concat(encodeURIComponent(t),"&time=").concat(n.end).concat(r?"&trace=1":"")}(p,e,o,d)}))}N(_r.validServer)}else N(_r.emptyServer)}),[p,l,s,i,o]),z=Ft(ee([]),2),j=z[0],$=z[1];return ne((function(){var e=R===j&&!!t;n&&null!==R&&void 0!==R&&R.length&&!e&&(g(!0),P({fetchUrl:R,fetchQueue:B,displayType:r||s,query:null!==t&&void 0!==t?t:u,stateSeriesLimits:h,showAllSeries:a,hideQuery:o}),$(R))}),[R,n,h,a]),ne((function(){var e=B.slice(0,-1);e.length&&(e.map((function(e){return e.abort()})),L(B.filter((function(e){return!e.signal.aborted}))))}),[B]),{fetchUrl:R,isLoading:m,graphData:_,liveData:w,error:S,warning:M,traces:C}},Yf=function(e){var t=e.data,n=ra().showInfoMessage,r=ae((function(){return JSON.stringify(t,null,2)}),[t]);return Vr("div",{className:"vm-json-view",children:[Vr("div",{className:"vm-json-view__copy",children:Vr(fa,{variant:"outlined",onClick:function(){navigator.clipboard.writeText(r),n({text:"Formatted JSON has been copied",type:"success"})},children:"Copy JSON"})}),Vr("pre",{className:"vm-json-view__code",children:Vr("code",{children:r})})]})},Vf=function(e){var t=e.yaxis,n=e.setYaxisLimits,r=e.toggleEnableLimits,i=Xo().isMobile,o=ae((function(){return Object.keys(t.limits.range)}),[t.limits.range]),a=ue(jf()((function(e,r,i){var o=t.limits.range;o[r][i]=+e,o[r][0]===o[r][1]||o[r][0]>o[r][1]||n(o)}),500),[t.limits.range]),u=function(e,t){return function(n){a(n,e,t)}};return Vr("div",{className:wo()({"vm-axes-limits":!0,"vm-axes-limits_mobile":i}),children:[Vr(Tf,{value:t.limits.enable,onChange:r,label:"Fix the limits for y-axis",fullWidth:i}),Vr("div",{className:"vm-axes-limits-list",children:o.map((function(e){return Vr("div",{className:"vm-axes-limits-list__inputs",children:[Vr(xa,{label:"Min ".concat(e),type:"number",disabled:!t.limits.enable,value:t.limits.range[e][0],onChange:u(e,0)}),Vr(xa,{label:"Max ".concat(e),type:"number",disabled:!t.limits.enable,value:t.limits.range[e][1],onChange:u(e,1)})]},e)}))})]})},qf="Axes settings",Wf=function(e){var t=e.yaxis,n=e.setYaxisLimits,r=e.toggleEnableLimits,i=ie(null),o=Ft(ee(!1),2),a=o[0],u=o[1],l=ie(null);return Vr("div",{className:"vm-graph-settings",children:[Vr(ma,{title:qf,children:Vr("div",{ref:l,children:Vr(fa,{variant:"text",startIcon:Vr(zi,{}),onClick:function(){u((function(e){return!e}))}})})}),Vr(da,{open:a,buttonRef:l,placement:"bottom-right",onClose:function(){u(!1)},title:qf,children:Vr("div",{className:"vm-graph-settings-popper",ref:i,children:Vr("div",{className:"vm-graph-settings-popper__body",children:Vr(Vf,{yaxis:t,setYaxisLimits:n,toggleEnableLimits:r})})})})]})},Qf=function(e){var t=e.containerStyles,n=void 0===t?{}:t,r=e.message,i=Wr().isDarkTheme;return Vr("div",{className:wo()({"vm-spinner":!0,"vm-spinner_dark":i}),style:n&&{},children:[Vr("div",{className:"half-circle-spinner",children:[Vr("div",{className:"circle circle-1"}),Vr("div",{className:"circle circle-2"})]}),r&&Vr("div",{className:"vm-spinner__message",children:r})]})},Gf=function(){var e=Wr().serverUrl,t=Ft(ee([]),2),n=t[0],r=t[1],i=function(){var t=tu(Xa().mark((function t(){var n,i,o;return Xa().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}return t.abrupt("return");case 2:return n="".concat(e,"/api/v1/label/__name__/values"),t.prev=3,t.next=6,fetch(n);case 6:return i=t.sent,t.next=9,i.json();case 9:o=t.sent,i.ok&&r(o.data),t.next=16;break;case 13:t.prev=13,t.t0=t.catch(3),console.error(t.t0);case 16:case"end":return t.stop()}}),t,null,[[3,13]])})));return function(){return t.apply(this,arguments)}}();return ne((function(){i()}),[e]),{queryOptions:n}},Jf=function(e){var t=e.value;return Vr("div",{className:"vm-line-progress",children:[Vr("div",{className:"vm-line-progress-track",children:Vr("div",{className:"vm-line-progress-track__thumb",style:{width:"".concat(t,"%")}})}),Vr("span",{children:[t.toFixed(2),"%"]})]})},Zf=function e(t){var n,r=t.trace,i=t.totalMsec,o=Wr().isDarkTheme,a=Xo().isMobile,u=Ft(ee({}),2),l=u[0],c=u[1],s=r.children&&!!r.children.length,f=r.duration/i*100;return Vr("div",{className:wo()({"vm-nested-nav":!0,"vm-nested-nav_dark":o,"vm-nested-nav_mobile":a}),children:[Vr("div",{className:"vm-nested-nav-header",onClick:(n=r.idValue,function(){c((function(e){return yr(yr({},e),{},mr({},n,!e[n]))}))}),children:[s&&Vr("div",{className:wo()({"vm-nested-nav-header__icon":!0,"vm-nested-nav-header__icon_open":l[r.idValue]}),children:Vr(Wi,{})}),Vr("div",{className:"vm-nested-nav-header__progress",children:Vr(Jf,{value:f})}),Vr("div",{className:"vm-nested-nav-header__message",children:r.message}),Vr("div",{className:"vm-nested-nav-header__duration",children:"duration: ".concat(r.duration," ms")})]}),l[r.idValue]&&Vr("div",{children:s&&r.children.map((function(t){return Vr(e,{trace:t,totalMsec:i},t.duration)}))})]})},Kf=function(e){var t=e.editable,n=void 0!==t&&t,r=e.defaultTile,i=void 0===r?"JSON":r,o=e.displayTitle,a=void 0===o||o,u=e.defaultJson,l=void 0===u?"":u,c=e.resetValue,f=void 0===c?"":c,d=e.onClose,h=e.onUpload,p=ra().showInfoMessage,v=Xo().isMobile,m=Ft(ee(l),2),g=m[0],y=m[1],_=Ft(ee(i),2),b=_[0],D=_[1],w=Ft(ee(""),2),x=w[0],k=w[1],C=Ft(ee(""),2),A=C[0],E=C[1],S=ae((function(){try{var e=JSON.parse(g),t=e.trace||e;return t.duration_msec?(new Hf(t,""),""):_r.traceNotFound}catch(s){return s instanceof Error?s.message:"Unknown error"}}),[g]),N=function(){var e=tu(Xa().mark((function e(){return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,navigator.clipboard.writeText(g);case 2:p({text:"Formatted JSON has been copied",type:"success"});case 3:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),F=function(){E(S),b.trim()||k(_r.emptyTitle),S||x||(h(g,b),d())};return Vr("div",{className:wo()({"vm-json-form":!0,"vm-json-form_one-field":!a,"vm-json-form_one-field_mobile":!a&&v,"vm-json-form_mobile":v}),children:[a&&Vr(xa,{value:b,label:"Title",error:x,onEnter:F,onChange:function(e){D(e)}}),Vr(xa,{value:g,label:"JSON",type:"textarea",error:A,autofocus:!0,onChange:function(e){E(""),y(e)},disabled:!n}),Vr("div",{className:"vm-json-form-footer",children:[Vr("div",{className:"vm-json-form-footer__controls",children:[Vr(fa,{variant:"outlined",startIcon:Vr(so,{}),onClick:N,children:"Copy JSON"}),f&&Vr(fa,{variant:"text",startIcon:Vr($i,{}),onClick:function(){y(f)},children:"Reset JSON"})]}),Vr("div",{className:"vm-json-form-footer__controls vm-json-form-footer__controls_right",children:[Vr(fa,{variant:"outlined",color:"error",onClick:d,children:"Cancel"}),Vr(fa,{variant:"contained",onClick:F,children:"apply"})]})]})]})},Xf=function(e){var t=e.traces,n=e.jsonEditor,r=void 0!==n&&n,i=e.onDeleteClick,o=Xo().isMobile,a=Ft(ee(null),2),u=a[0],l=a[1],c=function(){l(null)};if(!t.length)return Vr(ta,{variant:"info",children:"Please re-run the query to see results of the tracing"});var f=function(e){return function(){i(e)}};return Vr(g,{children:[Vr("div",{className:"vm-tracings-view",children:t.map((function(e){return Vr("div",{className:"vm-tracings-view-trace vm-block vm-block_empty-padding",children:[Vr("div",{className:"vm-tracings-view-trace-header",children:[Vr("h3",{className:"vm-tracings-view-trace-header-title",children:["Trace for ",Vr("b",{className:"vm-tracings-view-trace-header-title__query",children:e.queryValue})]}),Vr(ma,{title:"Open JSON",children:Vr(fa,{variant:"text",startIcon:Vr(ro,{}),onClick:(t=e,function(){l(t)})})}),Vr(ma,{title:"Remove trace",children:Vr(fa,{variant:"text",color:"error",startIcon:Vr(io,{}),onClick:f(e)})})]}),Vr("nav",{className:wo()({"vm-tracings-view-trace__nav":!0,"vm-tracings-view-trace__nav_mobile":o}),children:Vr(Zf,{trace:e,totalMsec:e.duration})})]},e.idValue);var t}))}),u&&Vr(va,{title:u.queryValue,onClose:c,children:Vr(Kf,{editable:r,displayTitle:r,defaultTile:u.queryValue,defaultJson:u.JSON,resetValue:u.originalJSON,onClose:c,onUpload:function(e,t){if(r&&u)try{u.setTracing(JSON.parse(e)),u.setQuery(t),l(null)}catch(s){console.error(s)}}})})]})},ed=function(e,t){return ae((function(){var n={};e.forEach((function(e){return Object.entries(e.metric).forEach((function(e){return n[e[0]]?n[e[0]].options.add(e[1]):n[e[0]]={options:new Set([e[1]])}}))}));var r=Object.entries(n).map((function(e){return{key:e[0],variations:e[1].options.size}})).sort((function(e,t){return e.variations-t.variations}));return t?r.filter((function(e){return t.includes(e.key)})):r}),[e,t])},td=function(e){var t,n=e.checked,r=void 0!==n&&n,i=e.disabled,o=void 0!==i&&i,a=e.label,u=e.color,l=void 0===u?"secondary":u,c=e.onChange;return Vr("div",{className:wo()((mr(t={"vm-checkbox":!0,"vm-checkbox_disabled":o,"vm-checkbox_active":r},"vm-checkbox_".concat(l,"_active"),r),mr(t,"vm-checkbox_".concat(l),l),t)),onClick:function(){o||c(!r)},children:[Vr("div",{className:"vm-checkbox-track",children:Vr("div",{className:"vm-checkbox-track__thumb",children:Vr(uo,{})})}),a&&Vr("span",{className:"vm-checkbox__label",children:a})]})},nd="Table settings",rd=function(e){var t=e.data,n=e.defaultColumns,r=void 0===n?[]:n,i=e.onChange,o=Xo().isMobile,a=Io().tableCompact,u=Po(),l=ed(t),c=ie(null),s=Ft(ee(!1),2),f=s[0],d=s[1],h=ae((function(){return!l.length}),[l]),p=function(e){return function(){!function(e){i(r.includes(e)?r.filter((function(t){return t!==e})):[].concat(Ot(r),[e]))}(e)}};return ne((function(){var e=l.map((function(e){return e.key}));Lf(e,r)||i(e)}),[l]),Vr("div",{className:"vm-table-settings",children:[Vr(ma,{title:nd,children:Vr("div",{ref:c,children:Vr(fa,{variant:"text",startIcon:Vr(zi,{}),onClick:function(){d((function(e){return!e}))},disabled:h})})}),Vr(da,{open:f,onClose:function(){d(!1)},placement:"bottom-right",buttonRef:c,title:nd,children:Vr("div",{className:wo()({"vm-table-settings-popper":!0,"vm-table-settings-popper_mobile":o}),children:[Vr("div",{className:"vm-table-settings-popper-list vm-table-settings-popper-list_first",children:Vr(Tf,{label:"Compact view",value:a,onChange:function(){u({type:"TOGGLE_TABLE_COMPACT"})}})}),Vr("div",{className:"vm-table-settings-popper-list",children:[Vr("div",{className:"vm-table-settings-popper-list-header",children:[Vr("h3",{className:"vm-table-settings-popper-list-header__title",children:"Display columns"}),Vr(ma,{title:"Reset to default",children:Vr(fa,{color:"primary",variant:"text",size:"small",onClick:function(){d(!1),i(l.map((function(e){return e.key})))},startIcon:Vr($i,{})})})]}),l.map((function(e){return Vr("div",{className:"vm-table-settings-popper-list__item",children:Vr(td,{checked:r.includes(e.key),onChange:p(e.key),label:e.key,disabled:a})},e.key)}))]})]})})]})};function id(e){return function(e,t){return Object.fromEntries(Object.entries(e).filter(t))}(e,(function(e){return!!e[1]}))}var od=["__name__"],ad=function(e){var t=e.data,n=e.displayColumns,r=ra().showInfoMessage,i=Xo().isMobile,o=Io().tableCompact,a=bo(document.body),u=ie(null),l=Ft(ee(0),2),c=l[0],s=l[1],f=Ft(ee(0),2),d=f[0],h=f[1],p=Ft(ee(""),2),v=p[0],m=p[1],g=Ft(ee("asc"),2),y=g[0],_=g[1],b=o?ed([{group:0,metric:{Data:"Data"}}],["Data"]):ed(t,n),D=function(e){var t=e.__name__,n=xo(e,od);return t||Object.keys(n).length?"".concat(t," ").concat(JSON.stringify(n)):""},w=new Set(null===t||void 0===t?void 0:t.map((function(e){return e.group}))),x=w.size>1,k=ae((function(){var e=null===t||void 0===t?void 0:t.map((function(e){return{metadata:b.map((function(t){return o?wf(e,"",x):e.metric[t.key]||"-"})),value:e.value?e.value[1]:"-",values:e.values?e.values.map((function(e){var t=Ft(e,2),n=t[0],r=t[1];return"".concat(r," @").concat(n)})):[],copyValue:D(e.metric)}})),n="Value"===v,r=b.findIndex((function(e){return e.key===v}));return n||-1!==r?e.sort((function(e,t){var i=n?Number(e.value):e.metadata[r],o=n?Number(t.value):t.metadata[r];return("asc"===y?i<o:i>o)?-1:1})):e}),[b,t,v,y,o]),C=ae((function(){return k.some((function(e){return e.copyValue}))}),[k]),A=function(){var e=tu(Xa().mark((function e(t){return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,navigator.clipboard.writeText(t);case 2:r({text:"Row has been copied",type:"success"});case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),E=function(e){return function(){!function(e){_((function(t){return"asc"===t&&v===e?"desc":"asc"})),m(e)}(e)}},S=function(){if(u.current){var e=u.current.getBoundingClientRect().top;h(e<0?window.scrollY-c:0)}};return ne((function(){return window.addEventListener("scroll",S),function(){window.removeEventListener("scroll",S)}}),[u,c,a]),ne((function(){if(u.current){var e=u.current.getBoundingClientRect().top;s(e+window.scrollY)}}),[u,a]),k.length?Vr("div",{className:wo()({"vm-table-view":!0,"vm-table-view_mobile":i}),children:Vr("table",{className:"vm-table",ref:u,children:[Vr("thead",{className:"vm-table-header",children:Vr("tr",{className:"vm-table__row vm-table__row_header",style:{transform:"translateY(".concat(d,"px)")},children:[b.map((function(e,t){return Vr("td",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:E(e.key),children:Vr("div",{className:"vm-table-cell__content",children:[e.key,Vr("div",{className:wo()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":v===e.key,"vm-table__sort-icon_desc":"desc"===y&&v===e.key}),children:Vr(Qi,{})})]})},t)})),Vr("td",{className:"vm-table-cell vm-table-cell_header vm-table-cell_right vm-table-cell_sort",onClick:E("Value"),children:Vr("div",{className:"vm-table-cell__content",children:[Vr("div",{className:wo()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":"Value"===v,"vm-table__sort-icon_desc":"desc"===y}),children:Vr(Qi,{})}),"Value"]})}),C&&Vr("td",{className:"vm-table-cell vm-table-cell_header"})]})}),Vr("tbody",{className:"vm-table-body",children:k.map((function(e,t){return Vr("tr",{className:"vm-table__row",children:[e.metadata.map((function(e,n){return Vr("td",{className:wo()({"vm-table-cell vm-table-cell_no-wrap":!0,"vm-table-cell_gray":k[t-1]&&k[t-1].metadata[n]===e}),children:e},n)})),Vr("td",{className:"vm-table-cell vm-table-cell_right vm-table-cell_no-wrap",children:e.values.length?e.values.map((function(e){return Vr("p",{children:e},e)})):e.value}),C&&Vr("td",{className:"vm-table-cell vm-table-cell_right",children:e.copyValue&&Vr("div",{className:"vm-table-cell__content",children:Vr(ma,{title:"Copy row",children:Vr(fa,{variant:"text",color:"gray",size:"small",startIcon:Vr(so,{}),onClick:(n=e.copyValue,function(){A(n)})})})})})]},t);var n}))})]})}):Vr(ta,{variant:"warning",children:"No data to show"})},ud=function(){var e=Io(),t=e.displayType,n=e.isTracingEnabled,r=Li().query,i=Ni().period,o=Fi(),a=Xo().isMobile;!function(){var e=Wr().tenantId,t=Io().displayType,n=Li().query,r=Ni(),i=r.duration,o=r.relativeTime,a=r.period,u=a.date,l=a.step,c=$o().customStep,s=Ft(pr(),2)[1],f=function(){var r={};n.forEach((function(n,a){var s,f="g".concat(a);r["".concat(f,".expr")]=n,r["".concat(f,".range_input")]=i,r["".concat(f,".end_input")]=u,r["".concat(f,".tab")]=(null===(s=So.find((function(e){return e.value===t})))||void 0===s?void 0:s.prometheusCode)||0,r["".concat(f,".relative_time")]=o,r["".concat(f,".tenantID")]=e,l!==c&&c&&(r["".concat(f,".step_input")]=c)})),s(id(r))};ne(f,[e,t,n,i,o,u,l,c]),ne(f,[])}();var u=Ft(ee(),2),l=u[0],c=u[1],s=Ft(ee([]),2),f=s[0],d=s[1],h=Ft(ee([]),2),p=h[0],v=h[1],m=Ft(ee(!1),2),g=m[0],y=m[1],_=Ft(ee(!r[0]),2),b=_[0],D=_[1],w=$o(),x=w.customStep,k=w.yaxis,C=Ho(),A=Gf().queryOptions,E=Uf({visible:!0,customStep:x,hideQuery:p,showAllSeries:g}),S=E.isLoading,N=E.liveData,F=E.graphData,M=E.error,T=E.warning,O=E.traces,B=function(e){C({type:"SET_YAXIS_LIMITS",payload:e})};return ne((function(){O&&d([].concat(Ot(f),Ot(O)))}),[O]),ne((function(){d([])}),[t]),ne((function(){y(!1)}),[r]),Vr("div",{className:wo()({"vm-custom-panel":!0,"vm-custom-panel_mobile":a}),children:[Vr(If,{error:b?"":M,queryOptions:A,onHideQuery:function(e){v(e)},onRunQuery:function(){D(!1)}}),n&&Vr("div",{className:"vm-custom-panel__trace",children:Vr(Xf,{traces:f,onDeleteClick:function(e){var t=f.filter((function(t){return t.idValue!==e.idValue}));d(Ot(t))}})}),S&&Vr(Qf,{}),!b&&M&&Vr(ta,{variant:"error",children:M}),T&&Vr(ta,{variant:"warning",children:Vr("div",{className:wo()({"vm-custom-panel__warning":!0,"vm-custom-panel__warning_mobile":a}),children:[Vr("p",{children:T}),Vr(fa,{color:"warning",variant:"outlined",onClick:function(){y(!0)},children:"Show all"})]})}),Vr("div",{className:wo()({"vm-custom-panel-body":!0,"vm-custom-panel-body_mobile":a,"vm-block":!0,"vm-block_mobile":a}),children:[Vr("div",{className:"vm-custom-panel-body-header",children:[Vr(No,{}),"chart"===t&&Vr(Wf,{yaxis:k,setYaxisLimits:B,toggleEnableLimits:function(){C({type:"TOGGLE_ENABLE_YAXIS_LIMITS"})}}),"table"===t&&Vr(rd,{data:N||[],defaultColumns:l,onChange:c})]}),F&&i&&"chart"===t&&Vr(Nf,{data:F,period:i,customStep:x,query:r,yaxis:k,setYaxisLimits:B,setPeriod:function(e){var t=e.from,n=e.to;o({type:"SET_PERIOD",payload:{from:t,to:n}})},height:a?.5*window.innerHeight:500}),N&&"code"===t&&Vr(Yf,{data:N}),N&&"table"===t&&Vr(ad,{data:N,displayColumns:l})]})]})};function ld(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var cd={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};var sd=/[&<>"']/,fd=new RegExp(sd.source,"g"),dd=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,hd=new RegExp(dd.source,"g"),pd={"&":"&","<":"<",">":">",'"':""","'":"'"},vd=function(e){return pd[e]};function md(e,t){if(t){if(sd.test(e))return e.replace(fd,vd)}else if(dd.test(e))return e.replace(hd,vd);return e}var gd=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function yd(e){return e.replace(gd,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var _d=/(^|[^\[])\^/g;function bd(e,t){e="string"===typeof e?e:e.source,t=t||"";var n={replace:function(t,r){return r=(r=r.source||r).replace(_d,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n}var Dd=/[^\w:]/g,wd=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function xd(e,t,n){if(e){var r;try{r=decodeURIComponent(yd(n)).replace(Dd,"").toLowerCase()}catch(s){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!wd.test(n)&&(n=function(e,t){kd[" "+e]||(Cd.test(e)?kd[" "+e]=e+"/":kd[" "+e]=Md(e,"/",!0));e=kd[" "+e];var n=-1===e.indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(Ad,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(Ed,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(s){return null}return n}var kd={},Cd=/^[^:]+:\/*[^/]*$/,Ad=/^([^:]+:)[\s\S]*$/,Ed=/^([^:]+:\/*[^/]*)[\s\S]*$/;var Sd={exec:function(){}};function Nd(e){for(var t,n,r=1;r<arguments.length;r++)for(n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}function Fd(e,t){var n=e.replace(/\|/g,(function(e,t,n){for(var r=!1,i=t;--i>=0&&"\\"===n[i];)r=!r;return r?"|":" |"})).split(/ \|/),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(/\\\|/g,"|");return n}function Md(e,t,n){var r=e.length;if(0===r)return"";for(var i=0;i<r;){var o=e.charAt(r-i-1);if(o!==t||n){if(o===t||!n)break;i++}else i++}return e.slice(0,r-i)}function Td(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}function Od(e,t){if(t<1)return"";for(var n="";t>1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}function Bd(e,t,n,r){var i=t.href,o=t.title?md(t.title):null,a=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){r.state.inLink=!0;var u={type:"link",raw:n,href:i,title:o,text:a,tokens:r.inlineTokens(a)};return r.state.inLink=!1,u}return{type:"image",raw:n,href:i,title:o,text:md(a)}}var Ld=function(){function e(t){Bt(this,e),this.options=t||cd}return Rt(e,[{key:"space",value:function(e){var t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}},{key:"code",value:function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Md(n,"\n")}}}},{key:"fences",value:function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:Ft(t,1)[0].length>=r.length?e.slice(r.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline._escapes,"$1"):t[2],text:r}}}},{key:"heading",value:function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var r=Md(n,"#");this.options.pedantic?n=r.trim():r&&!/ $/.test(r)||(n=r.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}},{key:"hr",value:function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}},{key:"blockquote",value:function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *>[ \t]?/gm,""),r=this.lexer.state.top;this.lexer.state.top=!0;var i=this.lexer.blockTokens(n);return this.lexer.state.top=r,{type:"blockquote",raw:t[0],tokens:i,text:n}}}},{key:"list",value:function(e){var t=this.rules.block.list.exec(e);if(t){var n,r,i,o,a,u,l,c,s,f,d,h,p=t[1].trim(),v=p.length>1,m={type:"list",raw:"",ordered:v,start:v?+p.slice(0,-1):"",loose:!1,items:[]};p=v?"\\d{1,9}\\".concat(p.slice(-1)):"\\".concat(p),this.options.pedantic&&(p=v?p:"[*+-]");for(var g=new RegExp("^( {0,3}".concat(p,")((?:[\t ][^\\n]*)?(?:\\n|$))"));e&&(h=!1,t=g.exec(e))&&!this.rules.block.hr.test(e);){if(n=t[0],e=e.substring(n.length),c=t[2].split("\n",1)[0].replace(/^\t+/,(function(e){return" ".repeat(3*e.length)})),s=e.split("\n",1)[0],this.options.pedantic?(o=2,d=c.trimLeft()):(o=(o=t[2].search(/[^ ]/))>4?1:o,d=c.slice(o),o+=t[1].length),u=!1,!c&&/^ *$/.test(s)&&(n+=s+"\n",e=e.substring(s.length+1),h=!0),!h)for(var y=new RegExp("^ {0,".concat(Math.min(3,o-1),"}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))")),_=new RegExp("^ {0,".concat(Math.min(3,o-1),"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)")),b=new RegExp("^ {0,".concat(Math.min(3,o-1),"}(?:```|~~~)")),D=new RegExp("^ {0,".concat(Math.min(3,o-1),"}#"));e&&(s=f=e.split("\n",1)[0],this.options.pedantic&&(s=s.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!b.test(s))&&!D.test(s)&&!y.test(s)&&!_.test(e);){if(s.search(/[^ ]/)>=o||!s.trim())d+="\n"+s.slice(o);else{if(u)break;if(c.search(/[^ ]/)>=4)break;if(b.test(c))break;if(D.test(c))break;if(_.test(c))break;d+="\n"+s}u||s.trim()||(u=!0),n+=f+"\n",e=e.substring(f.length+1),c=s.slice(o)}m.loose||(l?m.loose=!0:/\n *\n *$/.test(n)&&(l=!0)),this.options.gfm&&(r=/^\[[ xX]\] /.exec(d))&&(i="[ ] "!==r[0],d=d.replace(/^\[[ xX]\] +/,"")),m.items.push({type:"list_item",raw:n,task:!!r,checked:i,loose:!1,text:d}),m.raw+=n}m.items[m.items.length-1].raw=n.trimRight(),m.items[m.items.length-1].text=d.trimRight(),m.raw=m.raw.trimRight();var w=m.items.length;for(a=0;a<w;a++)if(this.lexer.state.top=!1,m.items[a].tokens=this.lexer.blockTokens(m.items[a].text,[]),!m.loose){var x=m.items[a].tokens.filter((function(e){return"space"===e.type})),k=x.length>0&&x.some((function(e){return/\n.*\n/.test(e.raw)}));m.loose=k}if(m.loose)for(a=0;a<w;a++)m.items[a].loose=!0;return m}}},{key:"html",value:function(e){var t=this.rules.block.html.exec(e);if(t){var n={type:"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:t[0]};if(this.options.sanitize){var r=this.options.sanitizer?this.options.sanitizer(t[0]):md(t[0]);n.type="paragraph",n.text=r,n.tokens=this.lexer.inline(r)}return n}}},{key:"def",value:function(e){var t=this.rules.block.def.exec(e);if(t){var n=t[1].toLowerCase().replace(/\s+/g," "),r=t[2]?t[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline._escapes,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:r,title:i}}}},{key:"table",value:function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:Fd(t[1]).map((function(e){return{text:e}})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,i,o,a,u=n.align.length;for(r=0;r<u;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(u=n.rows.length,r=0;r<u;r++)n.rows[r]=Fd(n.rows[r],n.header.length).map((function(e){return{text:e}}));for(u=n.header.length,i=0;i<u;i++)n.header[i].tokens=this.lexer.inline(n.header[i].text);for(u=n.rows.length,i=0;i<u;i++)for(a=n.rows[i],o=0;o<a.length;o++)a[o].tokens=this.lexer.inline(a[o].text);return n}}}},{key:"lheading",value:function(e){var t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}},{key:"paragraph",value:function(e){var t=this.rules.block.paragraph.exec(e);if(t){var n="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}},{key:"text",value:function(e){var t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}},{key:"escape",value:function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:md(t[1])}}},{key:"tag",value:function(e){var t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^<a /i.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):md(t[0]):t[0]}}},{key:"link",value:function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^</.test(n)){if(!/>$/.test(n))return;var r=Md(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{var i=function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,i=0;i<n;i++)if("\\"===e[i])i++;else if(e[i]===t[0])r++;else if(e[i]===t[1]&&--r<0)return i;return-1}(t[2],"()");if(i>-1){var o=(0===t[0].indexOf("!")?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,o).trim(),t[3]=""}}var a=t[2],u="";if(this.options.pedantic){var l=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);l&&(a=l[1],u=l[3])}else u=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^</.test(a)&&(a=this.options.pedantic&&!/>$/.test(n)?a.slice(1):a.slice(1,-1)),Bd(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:u?u.replace(this.rules.inline._escapes,"$1"):u},t[0],this.lexer)}}},{key:"reflink",value:function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])){var i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return Bd(n,r,n[0],this.lexer)}}},{key:"emStrong",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=this.rules.inline.emStrong.lDelim.exec(e);if(r&&(!r[3]||!n.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])/))){var i=r[1]||r[2]||"";if(!i||i&&(""===n||this.rules.inline.punctuation.exec(n))){var o,a,u=r[0].length-1,l=u,c=0,s="*"===r[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(s.lastIndex=0,t=t.slice(-1*e.length+u);null!=(r=s.exec(t));)if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6])if(a=o.length,r[3]||r[4])l+=a;else if(!((r[5]||r[6])&&u%3)||(u+a)%3){if(!((l-=a)>0)){a=Math.min(a,a+l+c);var f=e.slice(0,u+r.index+(r[0].length-o.length)+a);if(Math.min(u,a)%2){var d=f.slice(1,-1);return{type:"em",raw:f,text:d,tokens:this.lexer.inlineTokens(d)}}var h=f.slice(2,-2);return{type:"strong",raw:f,text:h,tokens:this.lexer.inlineTokens(h)}}}else c+=a}}}},{key:"codespan",value:function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return r&&i&&(n=n.substring(1,n.length-1)),n=md(n,!0),{type:"codespan",raw:t[0],text:n}}}},{key:"br",value:function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}},{key:"del",value:function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}},{key:"autolink",value:function(e,t){var n,r,i=this.rules.inline.autolink.exec(e);if(i)return r="@"===i[2]?"mailto:"+(n=md(this.options.mangle?t(i[1]):i[1])):n=md(i[1]),{type:"link",raw:i[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},{key:"url",value:function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,i;if("@"===n[2])i="mailto:"+(r=md(this.options.mangle?t(n[0]):n[0]));else{var o;do{o=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(o!==n[0]);r=md(n[0]),i="www."===n[1]?"http://"+n[0]:n[0]}return{type:"link",raw:n[0],text:r,href:i,tokens:[{type:"text",raw:r,text:r}]}}}},{key:"inlineText",value:function(e,t){var n,r=this.rules.inline.text.exec(e);if(r)return n=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):md(r[0]):r[0]:md(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:n}}}]),e}(),Id={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Sd,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};Id.def=bd(Id.def).replace("label",Id._label).replace("title",Id._title).getRegex(),Id.bullet=/(?:[*+-]|\d{1,9}[.)])/,Id.listItemStart=bd(/^( *)(bull) */).replace("bull",Id.bullet).getRegex(),Id.list=bd(Id.list).replace(/bull/g,Id.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Id.def.source+")").getRegex(),Id._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Id._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,Id.html=bd(Id.html,"i").replace("comment",Id._comment).replace("tag",Id._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Id.paragraph=bd(Id._paragraph).replace("hr",Id.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Id._tag).getRegex(),Id.blockquote=bd(Id.blockquote).replace("paragraph",Id.paragraph).getRegex(),Id.normal=Nd({},Id),Id.gfm=Nd({},Id.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),Id.gfm.table=bd(Id.gfm.table).replace("hr",Id.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Id._tag).getRegex(),Id.gfm.paragraph=bd(Id._paragraph).replace("hr",Id.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",Id.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Id._tag).getRegex(),Id.pedantic=Nd({},Id.normal,{html:bd("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Id._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Sd,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:bd(Id.normal._paragraph).replace("hr",Id.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Id.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var Pd={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Sd,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Sd,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};function Rd(e){return e.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201c").replace(/"/g,"\u201d").replace(/\.{3}/g,"\u2026")}function zd(e){var t,n,r="",i=e.length;for(t=0;t<i;t++)n=e.charCodeAt(t),Math.random()>.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}Pd._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",Pd.punctuation=bd(Pd.punctuation).replace(/punctuation/g,Pd._punctuation).getRegex(),Pd.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,Pd.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,Pd._comment=bd(Id._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),Pd.emStrong.lDelim=bd(Pd.emStrong.lDelim).replace(/punct/g,Pd._punctuation).getRegex(),Pd.emStrong.rDelimAst=bd(Pd.emStrong.rDelimAst,"g").replace(/punct/g,Pd._punctuation).getRegex(),Pd.emStrong.rDelimUnd=bd(Pd.emStrong.rDelimUnd,"g").replace(/punct/g,Pd._punctuation).getRegex(),Pd._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,Pd._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Pd._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,Pd.autolink=bd(Pd.autolink).replace("scheme",Pd._scheme).replace("email",Pd._email).getRegex(),Pd._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Pd.tag=bd(Pd.tag).replace("comment",Pd._comment).replace("attribute",Pd._attribute).getRegex(),Pd._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Pd._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Pd._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Pd.link=bd(Pd.link).replace("label",Pd._label).replace("href",Pd._href).replace("title",Pd._title).getRegex(),Pd.reflink=bd(Pd.reflink).replace("label",Pd._label).replace("ref",Id._label).getRegex(),Pd.nolink=bd(Pd.nolink).replace("ref",Id._label).getRegex(),Pd.reflinkSearch=bd(Pd.reflinkSearch,"g").replace("reflink",Pd.reflink).replace("nolink",Pd.nolink).getRegex(),Pd.normal=Nd({},Pd),Pd.pedantic=Nd({},Pd.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:bd(/^!?\[(label)\]\((.*?)\)/).replace("label",Pd._label).getRegex(),reflink:bd(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Pd._label).getRegex()}),Pd.gfm=Nd({},Pd.normal,{escape:bd(Pd.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/}),Pd.gfm.url=bd(Pd.gfm.url,"i").replace("email",Pd.gfm._extended_email).getRegex(),Pd.breaks=Nd({},Pd.gfm,{br:bd(Pd.br).replace("{2,}","*").getRegex(),text:bd(Pd.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var jd=function(){function e(t){Bt(this,e),this.tokens=[],this.tokens.links=Object.create(null),this.options=t||cd,this.options.tokenizer=this.options.tokenizer||new Ld,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var n={block:Id.normal,inline:Pd.normal};this.options.pedantic?(n.block=Id.pedantic,n.inline=Pd.pedantic):this.options.gfm&&(n.block=Id.gfm,this.options.breaks?n.inline=Pd.breaks:n.inline=Pd.gfm),this.tokenizer.rules=n}return Rt(e,[{key:"lex",value:function(e){var t;for(e=e.replace(/\r\n|\r/g,"\n"),this.blockTokens(e,this.tokens);t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens}},{key:"blockTokens",value:function(e){var t,n,r,i,o=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];e=this.options.pedantic?e.replace(/\t/g," ").replace(/^ +$/gm,""):e.replace(/^( *)(\t+)/gm,(function(e,t,n){return t+" ".repeat(n.length)}));for(var u=function(){if(o.options.extensions&&o.options.extensions.block&&o.options.extensions.block.some((function(n){return!!(t=n.call({lexer:o},e,a))&&(e=e.substring(t.raw.length),a.push(t),!0)})))return"continue";if(t=o.tokenizer.space(e))return e=e.substring(t.raw.length),1===t.raw.length&&a.length>0?a[a.length-1].raw+="\n":a.push(t),"continue";if(t=o.tokenizer.code(e))return e=e.substring(t.raw.length),!(n=a[a.length-1])||"paragraph"!==n.type&&"text"!==n.type?a.push(t):(n.raw+="\n"+t.raw,n.text+="\n"+t.text,o.inlineQueue[o.inlineQueue.length-1].src=n.text),"continue";if(t=o.tokenizer.fences(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.heading(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.hr(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.blockquote(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.list(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.html(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.def(e))return e=e.substring(t.raw.length),!(n=a[a.length-1])||"paragraph"!==n.type&&"text"!==n.type?o.tokens.links[t.tag]||(o.tokens.links[t.tag]={href:t.href,title:t.title}):(n.raw+="\n"+t.raw,n.text+="\n"+t.raw,o.inlineQueue[o.inlineQueue.length-1].src=n.text),"continue";if(t=o.tokenizer.table(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.lheading(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(r=e,o.options.extensions&&o.options.extensions.startBlock){var u,l=1/0,c=e.slice(1);o.options.extensions.startBlock.forEach((function(e){"number"===typeof(u=e.call({lexer:this},c))&&u>=0&&(l=Math.min(l,u))})),l<1/0&&l>=0&&(r=e.substring(0,l+1))}if(o.state.top&&(t=o.tokenizer.paragraph(r)))return n=a[a.length-1],i&&"paragraph"===n.type?(n.raw+="\n"+t.raw,n.text+="\n"+t.text,o.inlineQueue.pop(),o.inlineQueue[o.inlineQueue.length-1].src=n.text):a.push(t),i=r.length!==e.length,e=e.substring(t.raw.length),"continue";if(t=o.tokenizer.text(e))return e=e.substring(t.raw.length),(n=a[a.length-1])&&"text"===n.type?(n.raw+="\n"+t.raw,n.text+="\n"+t.text,o.inlineQueue.pop(),o.inlineQueue[o.inlineQueue.length-1].src=n.text):a.push(t),"continue";if(e){var s="Infinite loop on byte: "+e.charCodeAt(0);if(o.options.silent)return console.error(s),"break";throw new Error(s)}};e;){var l=u();if("continue"!==l&&"break"===l)break}return this.state.top=!0,a}},{key:"inline",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this.inlineQueue.push({src:e,tokens:t}),t}},{key:"inlineTokens",value:function(e){var t,n,r,i,o,a,u=this,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=e;if(this.tokens.links){var s=Object.keys(this.tokens.links);if(s.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(c));)s.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(c=c.slice(0,i.index)+"["+Od("a",i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(c));)c=c.slice(0,i.index)+"["+Od("a",i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.escapedEmSt.exec(c));)c=c.slice(0,i.index+i[0].length-2)+"++"+c.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(var f=function(){if(o||(a=""),o=!1,u.options.extensions&&u.options.extensions.inline&&u.options.extensions.inline.some((function(n){return!!(t=n.call({lexer:u},e,l))&&(e=e.substring(t.raw.length),l.push(t),!0)})))return"continue";if(t=u.tokenizer.escape(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.tag(e))return e=e.substring(t.raw.length),(n=l[l.length-1])&&"text"===t.type&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(t=u.tokenizer.link(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.reflink(e,u.tokens.links))return e=e.substring(t.raw.length),(n=l[l.length-1])&&"text"===t.type&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(t=u.tokenizer.emStrong(e,c,a))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.codespan(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.br(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.del(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.autolink(e,zd))return e=e.substring(t.raw.length),l.push(t),"continue";if(!u.state.inLink&&(t=u.tokenizer.url(e,zd)))return e=e.substring(t.raw.length),l.push(t),"continue";if(r=e,u.options.extensions&&u.options.extensions.startInline){var i,s=1/0,f=e.slice(1);u.options.extensions.startInline.forEach((function(e){"number"===typeof(i=e.call({lexer:this},f))&&i>=0&&(s=Math.min(s,i))})),s<1/0&&s>=0&&(r=e.substring(0,s+1))}if(t=u.tokenizer.inlineText(r,Rd))return e=e.substring(t.raw.length),"_"!==t.raw.slice(-1)&&(a=t.raw.slice(-1)),o=!0,(n=l[l.length-1])&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(e){var d="Infinite loop on byte: "+e.charCodeAt(0);if(u.options.silent)return console.error(d),"break";throw new Error(d)}};e;){var d=f();if("continue"!==d&&"break"===d)break}return l}}],[{key:"rules",get:function(){return{block:Id,inline:Pd}}},{key:"lex",value:function(t,n){return new e(n).lex(t)}},{key:"lexInline",value:function(t,n){return new e(n).inlineTokens(t)}}]),e}(),$d=function(){function e(t){Bt(this,e),this.options=t||cd}return Rt(e,[{key:"code",value:function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return e=e.replace(/\n$/,"")+"\n",r?'<pre><code class="'+this.options.langPrefix+md(r)+'">'+(n?e:md(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:md(e,!0))+"</code></pre>\n"}},{key:"blockquote",value:function(e){return"<blockquote>\n".concat(e,"</blockquote>\n")}},{key:"html",value:function(e){return e}},{key:"heading",value:function(e,t,n,r){if(this.options.headerIds){var i=this.options.headerPrefix+r.slug(n);return"<h".concat(t,' id="').concat(i,'">').concat(e,"</h").concat(t,">\n")}return"<h".concat(t,">").concat(e,"</h").concat(t,">\n")}},{key:"hr",value:function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"}},{key:"list",value:function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"}},{key:"listitem",value:function(e){return"<li>".concat(e,"</li>\n")}},{key:"checkbox",value:function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "}},{key:"paragraph",value:function(e){return"<p>".concat(e,"</p>\n")}},{key:"table",value:function(e,t){return t&&(t="<tbody>".concat(t,"</tbody>")),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"}},{key:"tablerow",value:function(e){return"<tr>\n".concat(e,"</tr>\n")}},{key:"tablecell",value:function(e,t){var n=t.header?"th":"td";return(t.align?"<".concat(n,' align="').concat(t.align,'">'):"<".concat(n,">"))+e+"</".concat(n,">\n")}},{key:"strong",value:function(e){return"<strong>".concat(e,"</strong>")}},{key:"em",value:function(e){return"<em>".concat(e,"</em>")}},{key:"codespan",value:function(e){return"<code>".concat(e,"</code>")}},{key:"br",value:function(){return this.options.xhtml?"<br/>":"<br>"}},{key:"del",value:function(e){return"<del>".concat(e,"</del>")}},{key:"link",value:function(e,t,n){if(null===(e=xd(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+e+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"}},{key:"image",value:function(e,t,n){if(null===(e=xd(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'.concat(e,'" alt="').concat(n,'"');return t&&(r+=' title="'.concat(t,'"')),r+=this.options.xhtml?"/>":">"}},{key:"text",value:function(e){return e}}]),e}(),Hd=function(){function e(){Bt(this,e)}return Rt(e,[{key:"strong",value:function(e){return e}},{key:"em",value:function(e){return e}},{key:"codespan",value:function(e){return e}},{key:"del",value:function(e){return e}},{key:"html",value:function(e){return e}},{key:"text",value:function(e){return e}},{key:"link",value:function(e,t,n){return""+n}},{key:"image",value:function(e,t,n){return""+n}},{key:"br",value:function(){return""}}]),e}(),Ud=function(){function e(){Bt(this,e),this.seen={}}return Rt(e,[{key:"serialize",value:function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}},{key:"getNextSafeSlug",value:function(e,t){var n=e,r=0;if(this.seen.hasOwnProperty(n)){r=this.seen[e];do{n=e+"-"+ ++r}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=r,this.seen[n]=0),n}},{key:"slug",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)}}]),e}(),Yd=function(){function e(t){Bt(this,e),this.options=t||cd,this.options.renderer=this.options.renderer||new $d,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Hd,this.slugger=new Ud}return Rt(e,[{key:"parse",value:function(e){var t,n,r,i,o,a,u,l,c,s,f,d,h,p,v,m,g,y,_,b=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],D="",w=e.length;for(t=0;t<w;t++)if(s=e[t],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[s.type])||!1===(_=this.options.extensions.renderers[s.type].call({parser:this},s))&&["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(s.type))switch(s.type){case"space":continue;case"hr":D+=this.renderer.hr();continue;case"heading":D+=this.renderer.heading(this.parseInline(s.tokens),s.depth,yd(this.parseInline(s.tokens,this.textRenderer)),this.slugger);continue;case"code":D+=this.renderer.code(s.text,s.lang,s.escaped);continue;case"table":for(l="",u="",i=s.header.length,n=0;n<i;n++)u+=this.renderer.tablecell(this.parseInline(s.header[n].tokens),{header:!0,align:s.align[n]});for(l+=this.renderer.tablerow(u),c="",i=s.rows.length,n=0;n<i;n++){for(u="",o=(a=s.rows[n]).length,r=0;r<o;r++)u+=this.renderer.tablecell(this.parseInline(a[r].tokens),{header:!1,align:s.align[r]});c+=this.renderer.tablerow(u)}D+=this.renderer.table(l,c);continue;case"blockquote":c=this.parse(s.tokens),D+=this.renderer.blockquote(c);continue;case"list":for(f=s.ordered,d=s.start,h=s.loose,i=s.items.length,c="",n=0;n<i;n++)m=(v=s.items[n]).checked,g=v.task,p="",v.task&&(y=this.renderer.checkbox(m),h?v.tokens.length>0&&"paragraph"===v.tokens[0].type?(v.tokens[0].text=y+" "+v.tokens[0].text,v.tokens[0].tokens&&v.tokens[0].tokens.length>0&&"text"===v.tokens[0].tokens[0].type&&(v.tokens[0].tokens[0].text=y+" "+v.tokens[0].tokens[0].text)):v.tokens.unshift({type:"text",text:y}):p+=y),p+=this.parse(v.tokens,h),c+=this.renderer.listitem(p,g,m);D+=this.renderer.list(c,f,d);continue;case"html":D+=this.renderer.html(s.text);continue;case"paragraph":D+=this.renderer.paragraph(this.parseInline(s.tokens));continue;case"text":for(c=s.tokens?this.parseInline(s.tokens):s.text;t+1<w&&"text"===e[t+1].type;)c+="\n"+((s=e[++t]).tokens?this.parseInline(s.tokens):s.text);D+=b?this.renderer.paragraph(c):c;continue;default:var x='Token with "'+s.type+'" type was not found.';if(this.options.silent)return void console.error(x);throw new Error(x)}else D+=_||"";return D}},{key:"parseInline",value:function(e,t){t=t||this.renderer;var n,r,i,o="",a=e.length;for(n=0;n<a;n++)if(r=e[n],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[r.type])||!1===(i=this.options.extensions.renderers[r.type].call({parser:this},r))&&["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type))switch(r.type){case"escape":case"text":o+=t.text(r.text);break;case"html":o+=t.html(r.text);break;case"link":o+=t.link(r.href,r.title,this.parseInline(r.tokens,t));break;case"image":o+=t.image(r.href,r.title,r.text);break;case"strong":o+=t.strong(this.parseInline(r.tokens,t));break;case"em":o+=t.em(this.parseInline(r.tokens,t));break;case"codespan":o+=t.codespan(r.text);break;case"br":o+=t.br();break;case"del":o+=t.del(this.parseInline(r.tokens,t));break;default:var u='Token with "'+r.type+'" type was not found.';if(this.options.silent)return void console.error(u);throw new Error(u)}else o+=i||"";return o}}],[{key:"parse",value:function(t,n){return new e(n).parse(t)}},{key:"parseInline",value:function(t,n){return new e(n).parseInline(t)}}]),e}();function Vd(e,t,n){if("undefined"===typeof e||null===e)throw new Error("marked(): input parameter is undefined or null");if("string"!==typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"===typeof t&&(n=t,t=null),Td(t=Nd({},Vd.defaults,t||{})),n){var r,i=t.highlight;try{r=jd.lex(e,t)}catch(s){return n(s)}var o=function(e){var o;if(!e)try{t.walkTokens&&Vd.walkTokens(r,t.walkTokens),o=Yd.parse(r,t)}catch(s){e=s}return t.highlight=i,e?n(e):n(null,o)};if(!i||i.length<3)return o();if(delete t.highlight,!r.length)return o();var a=0;return Vd.walkTokens(r,(function(e){"code"===e.type&&(a++,setTimeout((function(){i(e.text,e.lang,(function(t,n){if(t)return o(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),0===--a&&o()}))}),0))})),void(0===a&&o())}function u(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+md(e.message+"",!0)+"</pre>";throw e}try{var l=jd.lex(e,t);if(t.walkTokens){if(t.async)return Promise.all(Vd.walkTokens(l,t.walkTokens)).then((function(){return Yd.parse(l,t)})).catch(u);Vd.walkTokens(l,t.walkTokens)}return Yd.parse(l,t)}catch(s){u(s)}}Vd.options=Vd.setOptions=function(e){var t;return Nd(Vd.defaults,e),t=Vd.defaults,cd=t,Vd},Vd.getDefaults=ld,Vd.defaults=cd,Vd.use=function(){for(var e=Vd.defaults.extensions||{renderers:{},childTokens:{}},t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.forEach((function(t){var n=Nd({},t);if(n.async=Vd.defaults.async||n.async,t.extensions&&(t.extensions.forEach((function(t){if(!t.name)throw new Error("extension name required");if(t.renderer){var n=e.renderers[t.name];e.renderers[t.name]=n?function(){for(var e=arguments.length,r=new Array(e),i=0;i<e;i++)r[i]=arguments[i];var o=t.renderer.apply(this,r);return!1===o&&(o=n.apply(this,r)),o}:t.renderer}if(t.tokenizer){if(!t.level||"block"!==t.level&&"inline"!==t.level)throw new Error("extension level must be 'block' or 'inline'");e[t.level]?e[t.level].unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&("block"===t.level?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:"inline"===t.level&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}t.childTokens&&(e.childTokens[t.name]=t.childTokens)})),n.extensions=e),t.renderer){var r=Vd.defaults.renderer||new $d,i=function(e){var n=r[e];r[e]=function(){for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];var u=t.renderer[e].apply(r,o);return!1===u&&(u=n.apply(r,o)),u}};for(var o in t.renderer)i(o);n.renderer=r}if(t.tokenizer){var a=Vd.defaults.tokenizer||new Ld,u=function(e){var n=a[e];a[e]=function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var u=t.tokenizer[e].apply(a,i);return!1===u&&(u=n.apply(a,i)),u}};for(var l in t.tokenizer)u(l);n.tokenizer=a}if(t.walkTokens){var c=Vd.defaults.walkTokens;n.walkTokens=function(e){var n=[];return n.push(t.walkTokens.call(this,e)),c&&(n=n.concat(c.call(this,e))),n}}Vd.setOptions(n)}))},Vd.walkTokens=function(e,t){var n,r=[],i=Mt(e);try{var o=function(){var e=n.value;switch(r=r.concat(t.call(Vd,e)),e.type){case"table":var i,o=Mt(e.header);try{for(o.s();!(i=o.n()).done;){var a=i.value;r=r.concat(Vd.walkTokens(a.tokens,t))}}catch(d){o.e(d)}finally{o.f()}var u,l=Mt(e.rows);try{for(l.s();!(u=l.n()).done;){var c,s=Mt(u.value);try{for(s.s();!(c=s.n()).done;){var f=c.value;r=r.concat(Vd.walkTokens(f.tokens,t))}}catch(d){s.e(d)}finally{s.f()}}}catch(d){l.e(d)}finally{l.f()}break;case"list":r=r.concat(Vd.walkTokens(e.items,t));break;default:Vd.defaults.extensions&&Vd.defaults.extensions.childTokens&&Vd.defaults.extensions.childTokens[e.type]?Vd.defaults.extensions.childTokens[e.type].forEach((function(n){r=r.concat(Vd.walkTokens(e[n],t))})):e.tokens&&(r=r.concat(Vd.walkTokens(e.tokens,t)))}};for(i.s();!(n=i.n()).done;)o()}catch(a){i.e(a)}finally{i.f()}return r},Vd.parseInline=function(e,t){if("undefined"===typeof e||null===e)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!==typeof e)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");Td(t=Nd({},Vd.defaults,t||{}));try{var n=jd.lexInline(e,t);return t.walkTokens&&Vd.walkTokens(n,t.walkTokens),Yd.parseInline(n,t)}catch(s){if(s.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+md(s.message+"",!0)+"</pre>";throw s}},Vd.Parser=Yd,Vd.parser=Yd.parse,Vd.Renderer=$d,Vd.TextRenderer=Hd,Vd.Lexer=jd,Vd.lexer=jd.lex,Vd.Tokenizer=Ld,Vd.Slugger=Ud,Vd.parse=Vd;Vd.options,Vd.setOptions,Vd.use,Vd.walkTokens,Vd.parseInline,Yd.parse,jd.lex;var qd=function(e){var t=e.title,n=e.description,r=e.unit,i=e.expr,o=e.showLegend,a=e.filename,u=e.alias,l=Xo().isMobile,c=Ni().period,s=$o().customStep,f=Fi(),d=ie(null),h=Ft(ee(!1),2),p=h[0],v=h[1],m=Ft(ee({limits:{enable:!1,range:{1:[0,0]}}}),2),y=m[0],_=m[1],b=ae((function(){return Array.isArray(i)&&i.every((function(e){return e}))}),[i]),D=Uf({predefinedQuery:b?i:[],display:"chart",visible:p,customStep:s}),w=D.isLoading,x=D.graphData,k=D.error,C=D.warning,A=function(e){var t=yr({},y);t.limits.range=e,_(t)};if(ne((function(){var e=new IntersectionObserver((function(e){e.forEach((function(e){return v(e.isIntersecting)}))}),{threshold:.1});return d.current&&e.observe(d.current),function(){d.current&&e.unobserve(d.current)}}),[d]),!b)return Vr(ta,{variant:"error",children:[Vr("code",{children:'"expr"'})," not found. Check the configuration file ",Vr("b",{children:a}),"."]});var E=function(){return Vr("div",{className:"vm-predefined-panel-header__description vm-default-styles",children:[n&&Vr(g,{children:[Vr("div",{children:[Vr("span",{children:"Description:"}),Vr("div",{dangerouslySetInnerHTML:{__html:Vd.parse(n)}})]}),Vr("hr",{})]}),Vr("div",{children:[Vr("span",{children:"Queries:"}),Vr("div",{children:i.map((function(e,t){return Vr("div",{children:e},"".concat(t,"_").concat(e))}))})]})]})};return Vr("div",{className:"vm-predefined-panel",ref:d,children:[Vr("div",{className:"vm-predefined-panel-header",children:[Vr(ma,{title:Vr(E,{}),children:Vr("div",{className:"vm-predefined-panel-header__info",children:Vr(Hi,{})})}),Vr("h3",{className:"vm-predefined-panel-header__title",children:t||""}),Vr(Wf,{yaxis:y,setYaxisLimits:A,toggleEnableLimits:function(){var e=yr({},y);e.limits.enable=!e.limits.enable,_(e)}})]}),Vr("div",{className:"vm-predefined-panel-body",children:[w&&Vr(Qf,{}),k&&Vr(ta,{variant:"error",children:k}),C&&Vr(ta,{variant:"warning",children:C}),x&&Vr(Nf,{data:x,period:c,customStep:s,query:i,yaxis:y,unit:r,alias:u,showLegend:o,setYaxisLimits:A,setPeriod:function(e){var t=e.from,n=e.to;f({type:"SET_PERIOD",payload:{from:t,to:n}})},fullWidth:!1,height:l?.5*window.innerHeight:500})]})]})},Wd=function(e){var t=e.index,n=e.title,r=e.panels,i=e.filename,o=bo(document.body),a=ae((function(){return o.width/12}),[o]),u=Ft(ee(!t),2),l=u[0],c=u[1],s=Ft(ee([]),2),f=s[0],d=s[1];ne((function(){d(r&&r.map((function(e){return e.width||12})))}),[r]);var h=Ft(ee({start:0,target:0,enable:!1}),2),p=h[0],v=h[1],m=function(e){if(p.enable){var t=p.start,n=Math.ceil((t-e.clientX)/a);if(!(Math.abs(n)>=12)){var r=f.map((function(e,t){return e-(t===p.target?n:0)}));d(r)}}},g=function(){v(yr(yr({},p),{},{enable:!1}))},y=function(e){return function(t){!function(e,t){v({start:e.clientX,target:t,enable:!0})}(t,e)}};return ne((function(){return window.addEventListener("mousemove",m),window.addEventListener("mouseup",g),function(){window.removeEventListener("mousemove",m),window.removeEventListener("mouseup",g)}}),[p]),Vr("div",{className:"vm-predefined-dashboard",children:Vr(qa,{defaultExpanded:l,onChange:function(e){return c(e)},title:Vr((function(){return Vr("div",{className:wo()({"vm-predefined-dashboard-header":!0,"vm-predefined-dashboard-header_open":l}),children:[(n||i)&&Vr("span",{className:"vm-predefined-dashboard-header__title",children:n||"".concat(t+1,". ").concat(i)}),r&&Vr("span",{className:"vm-predefined-dashboard-header__count",children:["(",r.length," panels)"]})]})}),{}),children:Vr("div",{className:"vm-predefined-dashboard-panels",children:Array.isArray(r)&&r.length?r.map((function(e,t){return Vr("div",{className:"vm-predefined-dashboard-panels-panel vm-block vm-block_empty-padding",style:{gridColumn:"span ".concat(f[t])},children:[Vr(qd,{title:e.title,description:e.description,unit:e.unit,expr:e.expr,alias:e.alias,filename:i,showLegend:e.showLegend}),Vr("button",{className:"vm-predefined-dashboard-panels-panel__resizer",onMouseDown:y(t)})]},t)})):Vr("div",{className:"vm-predefined-dashboard-panels-panel__alert",children:Vr(ta,{variant:"error",children:[Vr("code",{children:'"panels"'})," not found. Check the configuration file ",Vr("b",{children:i}),"."]})})})})})},Qd=function(){!function(){var e=Ni(),t=e.duration,n=e.relativeTime,r=e.period.date,i=$o().customStep,o=Ft(pr(),2)[1],a=function(){var e,a=id((mr(e={},"g0.range_input",t),mr(e,"g0.end_input",r),mr(e,"g0.step_input",i),mr(e,"g0.relative_time",n),e));o(a)};ne(a,[t,n,r,i]),ne(a,[])}();var e=Xo().isMobile,t=ua(),n=t.dashboardsSettings,r=t.dashboardsLoading,i=t.dashboardsError,o=Ft(ee(0),2),a=o[0],u=o[1],l=ae((function(){return n.map((function(e,t){return{label:e.title||"",value:t}}))}),[n]),c=ae((function(){return n[a]||{}}),[n,a]),s=ae((function(){return null===c||void 0===c?void 0:c.rows}),[c]),f=ae((function(){return c.title||c.filename||""}),[c]),d=ae((function(){return Array.isArray(s)&&!!s.length}),[s]),h=function(e){return function(){!function(e){u(e)}(e)}};return Vr("div",{className:"vm-predefined-panels",children:[r&&Vr(Qf,{}),!n.length&&i&&Vr(ta,{variant:"error",children:i}),!n.length&&Vr(ta,{variant:"info",children:"Dashboards not found"}),l.length>1&&Vr("div",{className:wo()({"vm-predefined-panels-tabs":!0,"vm-predefined-panels-tabs_mobile":e}),children:l.map((function(e){return Vr("div",{className:wo()({"vm-predefined-panels-tabs__tab":!0,"vm-predefined-panels-tabs__tab_active":e.value==a}),onClick:h(e.value),children:e.label},e.value)}))}),Vr("div",{className:"vm-predefined-panels__dashboards",children:[d&&s.map((function(e,t){return Vr(Wd,{index:t,filename:f,title:e.title,panels:e.panels},"".concat(a,"_").concat(t))})),!!n.length&&!d&&Vr(ta,{variant:"error",children:[Vr("code",{children:'"rows"'})," not found. Check the configuration file ",Vr("b",{children:f}),"."]})]})]})},Gd=function(e,t){var n=t.match?"&match[]="+encodeURIComponent(t.match):"",r=t.focusLabel?"&focusLabel="+encodeURIComponent(t.focusLabel):"";return"".concat(e,"/api/v1/status/tsdb?topN=").concat(t.topN,"&date=").concat(t.date).concat(n).concat(r)},Jd=function(){function e(){Bt(this,e),this.tsdbStatus=void 0,this.tabsNames=void 0,this.tsdbStatus=this.defaultTSDBStatus,this.tabsNames=["table","graph"]}return Rt(e,[{key:"tsdbStatusData",get:function(){return this.tsdbStatus},set:function(e){this.tsdbStatus=e}},{key:"defaultTSDBStatus",get:function(){return{totalSeries:0,totalLabelValuePairs:0,seriesCountByMetricName:[],seriesCountByLabelName:[],seriesCountByFocusLabelValue:[],seriesCountByLabelValuePair:[],labelValueCountByLabelName:[]}}},{key:"keys",value:function(e){var t=[];return e&&(t=t.concat("seriesCountByFocusLabelValue")),t=t.concat("seriesCountByMetricName","seriesCountByLabelName","seriesCountByLabelValuePair","labelValueCountByLabelName"),t}},{key:"defaultState",get:function(){var e=this;return this.keys("job").reduce((function(t,n){return yr(yr({},t),{},{tabs:yr(yr({},t.tabs),{},mr({},n,e.tabsNames)),containerRefs:yr(yr({},t.containerRefs),{},mr({},n,ie(null))),defaultActiveTab:yr(yr({},t.defaultActiveTab),{},mr({},n,0))})}),{tabs:{},containerRefs:{},defaultActiveTab:{}})}},{key:"sectionsTitles",value:function(e){return{seriesCountByMetricName:"Metric names with the highest number of series",seriesCountByLabelName:"Labels with the highest number of series",seriesCountByFocusLabelValue:'Values for "'.concat(e,'" label with the highest number of series'),seriesCountByLabelValuePair:"Label=value pairs with the highest number of series",labelValueCountByLabelName:"Labels with the highest number of unique values"}}},{key:"tablesHeaders",get:function(){return{seriesCountByMetricName:Zd,seriesCountByLabelName:Kd,seriesCountByFocusLabelValue:Xd,seriesCountByLabelValuePair:eh,labelValueCountByLabelName:th}}},{key:"totalSeries",value:function(e){return"labelValueCountByLabelName"===e?-1:this.tsdbStatus.totalSeries}}]),e}(),Zd=[{id:"name",label:"Metric name"},{id:"value",label:"Number of series"},{id:"percentage",label:"Percent of series"},{id:"action",label:"Action"}],Kd=[{id:"name",label:"Label name"},{id:"value",label:"Number of series"},{id:"percentage",label:"Percent of series"},{id:"action",label:"Action"}],Xd=[{id:"name",label:"Label value"},{id:"value",label:"Number of series"},{id:"percentage",label:"Percent of series"},{disablePadding:!1,id:"action",label:"Action",numeric:!1}],eh=[{id:"name",label:"Label=value pair"},{id:"value",label:"Number of series"},{id:"percentage",label:"Percent of series"},{id:"action",label:"Action"}],th=[{id:"name",label:"Label name"},{id:"value",label:"Number of unique values"},{id:"action",label:"Action"}],nh={seriesCountByMetricName:function(e,t){return rh("__name__",t)},seriesCountByLabelName:function(e,t){return"{".concat(t,'!=""}')},seriesCountByFocusLabelValue:function(e,t){return rh(e,t)},seriesCountByLabelValuePair:function(e,t){var n=t.split("="),r=n[0],i=n.slice(1).join("=");return rh(r,i)},labelValueCountByLabelName:function(e,t){return"{".concat(t,'!=""}')}},rh=function(e,t){return e?"{"+e+"="+JSON.stringify(t)+"}":""},ih=function(e){var t=e.topN,n=e.error,r=e.query,i=e.onSetHistory,o=e.onRunQuery,a=e.onSetQuery,u=e.onTopNChange,l=e.onFocusLabelChange,c=e.totalSeries,s=e.totalLabelValuePairs,f=e.date,d=e.match,h=e.focusLabel,p=Li().autocomplete,v=Ii(),m=Xo().isMobile,g=Gf().queryOptions,y=ae((function(){return t<1?"Number must be bigger than zero":""}),[t]);return Vr("div",{className:wo()({"vm-cardinality-configurator":!0,"vm-block":!0,"vm-block_mobile":m}),children:[Vr("div",{className:"vm-cardinality-configurator-controls",children:[Vr("div",{className:"vm-cardinality-configurator-controls__query",children:Vr(Mf,{value:r,autocomplete:p,options:g,error:n,onArrowUp:function(){i(-1)},onArrowDown:function(){i(1)},onEnter:o,onChange:a,label:"Time series selector"})}),Vr("div",{className:"vm-cardinality-configurator-controls__item",children:Vr(xa,{label:"Number of entries per table",type:"number",value:t,error:y,onChange:u})}),Vr("div",{className:"vm-cardinality-configurator-controls__item",children:Vr(xa,{label:"Focus label",type:"text",value:h||"",onChange:l,endIcon:Vr(ma,{title:Vr("div",{children:[Vr("p",{children:"To identify values with the highest number of series for the selected label."}),Vr("p",{children:"Adds a table showing the series with the highest number of series."})]}),children:Vr(Hi,{})})})})]}),Vr("div",{className:"vm-cardinality-configurator-additional",children:Vr(Tf,{label:"Autocomplete",value:p,onChange:function(){v({type:"TOGGLE_AUTOCOMPLETE"})}})}),Vr("div",{className:wo()({"vm-cardinality-configurator-bottom":!0,"vm-cardinality-configurator-bottom_mobile":m}),children:[Vr("div",{className:"vm-cardinality-configurator-bottom__info",children:["Analyzed ",Vr("b",{children:c})," series with ",Vr("b",{children:s}),' "label=value" pairs at ',Vr("b",{children:f}),d&&Vr("span",{children:[" for series selector ",Vr("b",{children:d})]}),". Show top ",t," entries per table."]}),Vr("div",{className:"vm-cardinality-configurator-bottom__docs",children:[Vr("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/#cardinality-explorer",rel:"help noreferrer",children:[Vr(po,{}),"Documentation"]}),Vr("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://victoriametrics.com/blog/cardinality-explorer/",rel:"help noreferrer",children:[Vr(mo,{}),"Example of using"]})]}),Vr(fa,{startIcon:Vr(Xi,{}),onClick:o,fullWidth:!0,children:"Execute Query"})]})]})};function oh(e){var t=e.order,n=e.orderBy,r=e.onRequestSort,i=e.headerCells;return Vr("thead",{className:"vm-table-header",children:Vr("tr",{className:"vm-table__row vm-table__row_header",children:i.map((function(e){return Vr("th",{className:wo()({"vm-table-cell vm-table-cell_header":!0,"vm-table-cell_sort":"action"!==e.id&&"percentage"!==e.id,"vm-table-cell_right":"action"===e.id}),onClick:(i=e.id,function(e){r(e,i)}),children:Vr("div",{className:"vm-table-cell__content",children:[e.label,"action"!==e.id&&"percentage"!==e.id&&Vr("div",{className:wo()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":n===e.id,"vm-table__sort-icon_desc":"desc"===t&&n===e.id}),children:Vr(Qi,{})})]})},e.id);var i}))})})}function ah(e,t,n){return t[n]<e[n]?-1:t[n]>e[n]?1:0}function uh(e,t){return"desc"===e?function(e,n){return ah(e,n,t)}:function(e,n){return-ah(e,n,t)}}function lh(e,t){var n=e.map((function(e,t){return[e,t]}));return n.sort((function(e,n){var r=t(e[0],n[0]);return 0!==r?r:e[1]-n[1]})),n.map((function(e){return e[0]}))}var ch=function(e){var t=e.rows,n=e.headerCells,r=e.defaultSortColumn,i=e.tableCells,o=Ft(ee("desc"),2),a=o[0],u=o[1],l=Ft(ee(r),2),c=l[0],s=l[1],f=Ft(ee([]),2),d=f[0],h=f[1],p=function(e){return function(){var t=d.indexOf(e),n=[];-1===t?n=n.concat(d,e):0===t?n=n.concat(d.slice(1)):t===d.length-1?n=n.concat(d.slice(0,-1)):t>0&&(n=n.concat(d.slice(0,t),d.slice(t+1))),h(n)}},v=lh(t,uh(a,c));return Vr("table",{className:"vm-table",children:[Vr(oh,{numSelected:d.length,order:a,orderBy:c,onSelectAllClick:function(e){if(e.target.checked){var n=t.map((function(e){return e.name}));h(n)}else h([])},onRequestSort:function(e,t){u(c===t&&"asc"===a?"desc":"asc"),s(t)},rowCount:t.length,headerCells:n}),Vr("tbody",{className:"vm-table-header",children:v.map((function(e){return Vr("tr",{className:wo()({"vm-table__row":!0,"vm-table__row_selected":(t=e.name,-1!==d.indexOf(t))}),onClick:p(e.name),children:i(e)},e.name);var t}))})]})},sh=function(e){var t=e.row,n=e.totalSeries,r=e.onActionClick,i=n>0?t.value/n*100:-1;return Vr(g,{children:[Vr("td",{className:"vm-table-cell",children:t.name},t.name),Vr("td",{className:"vm-table-cell",children:t.value},t.value),i>0&&Vr("td",{className:"vm-table-cell",children:Vr(Jf,{value:i})},t.progressValue),Vr("td",{className:"vm-table-cell vm-table-cell_right",children:Vr("div",{className:"vm-table-cell__content",children:Vr(ma,{title:"Filter by ".concat(t.name),children:Vr(fa,{variant:"text",size:"small",onClick:function(){r(t.name)},children:Vr(eo,{})})})})},"action")]})},fh=function(e){var t=e.data,n=e.container,r=e.configs,i=Wr().isDarkTheme,o=ie(null),a=Ft(ee(),2),u=a[0],l=a[1],c=bo(n),s=yr(yr({},r),{},{width:c.width||400});return ne((function(){if(o.current){var e=new nf(s,t,o.current);return l(e),e.destroy}}),[o.current,c,i]),ne((function(){u&&u.setData(t)}),[t]),Vr("div",{style:{height:"100%"},children:Vr("div",{ref:o})})},dh=function(e,t){return Math.round(e*(t=Math.pow(10,t)))/t},hh=1,ph=function(e,t,n,r){return dh(t+e*(n+r),6)},vh=function(e,t,n,r,i){var o=1-t,a=n===hh?o/(e-1):2===n?o/e:3===n?o/(e+1):0;(isNaN(a)||a===1/0)&&(a=0);var u=n===hh?0:2===n?a/2:3===n?a:0,l=t/e,c=dh(l,6);if(null==r)for(var s=0;s<e;s++)i(s,ph(s,u,l,a),c);else i(r,ph(r,u,l,a),c)},mh=function(e,t,n,r,i,o){return e>=n&&e<=i&&t>=r&&t<=o};function gh(e,t,n,r,i){var o=this;o.x=e,o.y=t,o.w=n,o.h=r,o.l=i||0,o.o=[],o.q=null}var yh={split:function(){var e=this,t=e.x,n=e.y,r=e.w/2,i=e.h/2,o=e.l+1;e.q=[new gh(t+r,n,r,i,o),new gh(t,n,r,i,o),new gh(t,n+i,r,i,o),new gh(t+r,n+i,r,i,o)]},quads:function(e,t,n,r,i){var o=this,a=o.q,u=o.x+o.w/2,l=o.y+o.h/2,c=t<l,s=e<u,f=e+n>u,d=t+r>l;c&&f&&i(a[0]),s&&c&&i(a[1]),s&&d&&i(a[2]),f&&d&&i(a[3])},add:function(e){var t=this;if(null!=t.q)t.quads(e.x,e.y,e.w,e.h,(function(t){t.add(e)}));else{var n=t.o;if(n.push(e),n.length>10&&t.l<4){t.split();for(var r=function(){var e=n[i];t.quads(e.x,e.y,e.w,e.h,(function(t){t.add(e)}))},i=0;i<n.length;i++)r();t.o.length=0}}},get:function(e,t,n,r,i){for(var o=this,a=o.o,u=0;u<a.length;u++)i(a[u]);null!=o.q&&o.quads(e,t,n,r,(function(o){o.get(e,t,n,r,i)}))},clear:function(){this.o.length=0,this.q=null}};Object.assign(gh.prototype,yh),n.g.Quadtree=gh;var _h,bh,Dh,wh,xh,kh={height:500,width:500,padding:[null,0,null,0],axes:[{show:!1}],series:[{label:"",value:function(e,t){return t}},{label:" ",width:0,fill:"",values:function(e,t){var n=e.legend.idxs||[];if(null===e.data||0===n.length)return{Name:null,Value:null};var r=n[t]||0;return{Name:e.data[0][r],Value:e.data[t][r]}}}],plugins:[function(e){var t,n,r,i=e.ignore,o=void 0===i?[]:i,a=null!==(t=e.radius)&&void 0!==t?t:0;function u(){n=devicePixelRatio,r=Math.round(10*n)+"px Arial"}u(),window.addEventListener("dppxchange",u);var l,c,s=e.ori,f=e.dir,d=e.stacked,h=.9,p=hh,v=hh;function m(e,t){var n=Array.from({length:t},(function(){return{offs:Array(e).fill(0),size:Array(e).fill(0)}}));return vh(e,h,p,null,(function(e,r,i){vh(t,1,v,null,(function(t){n[t].offs[e]=r,n[t].size[e]=i}))})),n}var g,y=nf.paths.bars({radius:a,disp:yr({x0:{unit:2,values:function(e,t){return l[t].offs}},size:{unit:2,values:function(e,t){return l[t].size}}},e.disp),each:function(e,t,n,r,i,o,a){r-=e.bbox.left,i-=e.bbox.top,g.add({x:r,y:i,w:o,h:a,sidx:t,didx:n})}});function _(e,t){e.ctx.save(),e.ctx.font=r,e.ctx.fillStyle=Rr("color-text"),nf.orient(e,t,(function(n,r,i,o,a,u,c,d,h,p,v){var m=f*(0===s?1:-1),g=Math.round(l[t].size[0]*p);l[t].offs.forEach((function(t,n){if(null!==i[n]){var r=p*t,o=Math.round(d+(1===m?r:p-r-g)),u=Math.round(g),l=c(i[n],a,v,h),f=0===s?Math.round(o+u/2):Math.round(l),y=0===s?Math.round(l):Math.round(o+u/2);e.ctx.textAlign=0===s?"center":i[n]>=0?"left":"right",e.ctx.textBaseline=1===s?"middle":i[n]>=0?"bottom":"top",e.ctx.fillText(i[n],f,y)}}))})),e.ctx.restore()}function b(e,t,n){return[0,nf.rangeNum(0,n,.05,!0)[1]]}return{hooks:{drawClear:function(t){var n;if((g=g||new gh(0,0,t.bbox.width,t.bbox.height)).clear(),t.series.forEach((function(e){e._paths=null})),l=d?[null].concat(m(t.data.length-1-o.length,t.data[0].length)):2===t.series.length?[null].concat(m(t.data[0].length,1)):[null].concat(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h,r=Array.from({length:t},(function(){return{offs:Array(e).fill(0),size:Array(e).fill(0)}}));return vh(e,n,p,null,(function(e,n,i){vh(t,1,v,null,(function(t,o,a){r[t].offs[e]=n+i*o,r[t].size[e]=i*a}))})),r}(t.data[0].length,t.data.length-1-o.length,1===t.data[0].length?1:h)),null!=(null===(n=e.disp)||void 0===n?void 0:n.fill)){c=[null];for(var r=1;r<t.data.length;r++)c.push({fill:e.disp.fill.values(t,r),stroke:e.disp.stroke.values(t,r)})}}},opts:function(e,t){var r,i={range:b,ori:0===s?1:0};nf.assign(t,{select:{show:!1},cursor:{x:!1,y:!1,dataIdx:function(e,t){if(1===t){r=null;var i=e.cursor.left*n,o=e.cursor.top*n;g.get(i,o,1,1,(function(e){mh(i,o,e.x,e.y,e.x+e.w,e.y+e.h)&&(r=e)}))}return r&&t===r.sidx?r.didx:null},points:{bbox:function(e,t){var i=r&&t===r.sidx;return{left:i?r.x/n:-10,top:i?r.y/n:-10,width:i?r.w/n:0,height:i?r.h/n:0}}}},scales:{x:{time:!1,distr:2,ori:s,dir:f,range:function(e,t,n){t=0,n=Math.max(1,e.data[0].length-1);var r=0;vh(e.data[0].length,h,p,0,(function(e,t,n){r=t+n/2}));var i=n-t;if(.5===r)t-=i;else{var o=(1/(1-2*r)*i-i)/2;t-=o,n+=o}return[t,n]}},rend:i,size:i,mem:i,inter:i,toggle:i}}),1===s&&(t.padding=[0,null,0,null]),nf.assign(t.axes[0],{splits:function(e){var t=f*(0===s?1:-1),n=e._data[0].slice();return 1===t?n:n.reverse()},values:function(e){return e.data[0]},gap:15,size:lf,stroke:Rr("color-text"),font:"10px Arial",labelSize:20,grid:{show:!1},ticks:{show:!1},side:0===s?2:3}),t.series.forEach((function(e,t){t>0&&!o.includes(t)&&nf.assign(e,{paths:y,points:{show:_}})}))}}}((_h=[1],bh=0,Dh=1,wh=0,xh=function(e,t){return{stroke:e,fill:t}}({unit:3,values:function(e){return e.data[1].map((function(e,t){return 0!==t?"#33BB55":"#F79420"}))}},{unit:3,values:function(e){return e.data[1].map((function(e,t){return 0!==t?"#33BB55":"#F79420"}))}}),{which:_h,ori:bh,dir:Dh,radius:wh,disp:xh}))]},Ch=function(e){var t=e.rows,n=e.activeTab,r=e.onChange,i=e.tabs,o=e.chartContainer,a=e.totalSeries,u=e.tabId,l=e.onActionClick,c=e.sectionTitle,s=e.tableHeaderCells,f=Xo().isMobile,d=ae((function(){return i.map((function(e,t){return{value:String(t),label:e,icon:Vr(0===t?no:to,{})}}))}),[i]);return Vr("div",{className:wo()({"vm-metrics-content":!0,"vm-metrics-content_mobile":f,"vm-block":!0,"vm-block_mobile":f}),children:[Vr("div",{className:"vm-metrics-content-header vm-section-header",children:[Vr("h5",{className:wo()({"vm-section-header__title":!0,"vm-section-header__title_mobile":f}),children:c}),Vr("div",{className:"vm-section-header__tabs",children:Vr(Eo,{activeItem:String(n),items:d,onChange:function(e){r(e,u)}})})]}),Vr("div",{ref:o,className:wo()({"vm-metrics-content__table":!0,"vm-metrics-content__table_mobile":f}),children:[0===n&&Vr(ch,{rows:t,headerCells:s,defaultSortColumn:"value",tableCells:function(e){return Vr(sh,{row:e,totalSeries:a,onActionClick:l})}}),1===n&&Vr(fh,{data:[t.map((function(e){return e.name})),t.map((function(e){return e.value})),t.map((function(e,t){return t%12==0?1:t%10==0?2:0}))],container:(null===o||void 0===o?void 0:o.current)||null,configs:kh})]})]})},Ah=function(){var e=Xo().isMobile,t=qo(),n=t.topN,r=t.match,i=t.date,o=t.focusLabel,a=Wo();!function(){var e=qo(),t=e.topN,n=e.match,r=e.date,i=e.focusLabel,o=e.extraLabel,a=Ft(pr(),2)[1],u=function(){var e=id({topN:t,date:r,match:n,extraLabel:o,focusLabel:i});a(e)};ne(u,[t,n,r,i,o]),ne(u,[])}();var u=Ft(ee(r||""),2),l=u[0],c=u[1],s=Ft(ee(0),2),f=s[0],d=s[1],h=Ft(ee([]),2),p=h[0],v=h[1],m=function(){var e=new Jd,t=qo(),n=t.topN,r=t.extraLabel,i=t.match,o=t.date,a=t.runQuery,u=t.focusLabel,l=Wr().serverUrl,c=Ft(ee(!1),2),s=c[0],f=c[1],d=Ft(ee(),2),h=d[0],p=d[1],v=Ft(ee(e.defaultTSDBStatus),2),m=v[0],g=v[1];ne((function(){h&&(g(e.defaultTSDBStatus),f(!1))}),[h]);var y=function(){var t=tu(Xa().mark((function t(n){var r,i,o,a;return Xa().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(l){t.next=2;break}return t.abrupt("return");case 2:return p(""),f(!0),g(e.defaultTSDBStatus),r=Gd(l,n),t.prev=6,t.next=9,fetch(r);case 9:return i=t.sent,t.next=12,i.json();case 12:o=t.sent,i.ok?(a=o.data,g(yr({},a)),f(!1)):(p(o.error),g(e.defaultTSDBStatus),f(!1)),t.next=20;break;case 16:t.prev=16,t.t0=t.catch(6),f(!1),t.t0 instanceof Error&&p("".concat(t.t0.name,": ").concat(t.t0.message));case 20:case"end":return t.stop()}}),t,null,[[6,16]])})));return function(e){return t.apply(this,arguments)}}();return ne((function(){y({topN:n,extraLabel:r,match:i,date:o,focusLabel:u})}),[l,a,o]),e.tsdbStatusData=m,{isLoading:s,appConfigurator:e,error:h}}(),g=m.isLoading,y=m.appConfigurator,_=m.error,b=Ft(ee(y.defaultState.defaultActiveTab),2),D=b[0],w=b[1],x=y.tsdbStatusData,k=y.defaultState,C=y.tablesHeaders,A=function(e,t){w(yr(yr({},D),{},mr({},t,+e)))};return Vr("div",{className:wo()({"vm-cardinality-panel":!0,"vm-cardinality-panel_mobile":e}),children:[g&&Vr(Qf,{message:"Please wait while cardinality stats is calculated. \n This may take some time if the db contains big number of time series."}),Vr(ih,{error:"",query:l,topN:n,date:i,match:r,totalSeries:x.totalSeries,totalLabelValuePairs:x.totalLabelValuePairs,focusLabel:o,onRunQuery:function(){v((function(e){return[].concat(Ot(e),[l])})),d((function(e){return e+1})),a({type:"SET_MATCH",payload:l}),a({type:"RUN_QUERY"})},onSetQuery:c,onSetHistory:function(e){var t=f+e;t<0||t>=p.length||(d(t),c(p[t]))},onTopNChange:function(e){a({type:"SET_TOP_N",payload:+e})},onFocusLabelChange:function(e){a({type:"SET_FOCUS_LABEL",payload:e})}}),_&&Vr(ta,{variant:"error",children:_}),y.keys(o).map((function(e){return Vr(Ch,{sectionTitle:y.sectionsTitles(o)[e],activeTab:D[e],rows:x[e],onChange:A,onActionClick:(t=e,function(e){var n=nh[t](o,e);c(n),v((function(e){return[].concat(Ot(e),[n])})),d((function(e){return e+1})),a({type:"SET_MATCH",payload:n});var r="";"labelValueCountByLabelName"!==t&&"seriesCountByLabelName"!=t||(r=e),a({type:"SET_FOCUS_LABEL",payload:r}),a({type:"RUN_QUERY"})}),tabs:k.tabs[e],chartContainer:k.containerRefs[e],totalSeries:y.totalSeries(e),tabId:e,tableHeaderCells:C[e]},e);var t}))]})},Eh=function(e){var t=e.rows,n=e.columns,r=Ft(ee(e.defaultOrderBy||"count"),2),i=r[0],o=r[1],a=Ft(ee("desc"),2),u=a[0],l=a[1],c=ae((function(){return lh(t,uh(u,i))}),[t,i,u]),s=function(e){return function(){var t;t=e,l((function(e){return"asc"===e&&i===t?"desc":"asc"})),o(t)}};return Vr("table",{className:"vm-table",children:[Vr("thead",{className:"vm-table-header",children:Vr("tr",{className:"vm-table__row vm-table__row_header",children:n.map((function(e){return Vr("th",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:s(e.key),children:Vr("div",{className:"vm-table-cell__content",children:[e.title||e.key,Vr("div",{className:wo()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":i===e.key,"vm-table__sort-icon_desc":"desc"===u&&i===e.key}),children:Vr(Qi,{})})]})},e.key)}))})}),Vr("tbody",{className:"vm-table-body",children:c.map((function(e,t){return Vr("tr",{className:"vm-table__row",children:n.map((function(t){return Vr("td",{className:"vm-table-cell",children:e[t.key]||"-"},t.key)}))},t)}))})]})},Sh=["table","JSON"].map((function(e,t){return{value:String(t),label:e,icon:Vr(0===t?no:ro,{})}})),Nh=function(e){var t=e.rows,n=e.title,r=e.columns,i=e.defaultOrderBy,o=Xo().isMobile,a=Ft(ee(0),2),u=a[0],l=a[1];return Vr("div",{className:wo()({"vm-top-queries-panel":!0,"vm-block":!0,"vm-block_mobile":o}),children:[Vr("div",{className:wo()({"vm-top-queries-panel-header":!0,"vm-section-header":!0,"vm-top-queries-panel-header_mobile":o}),children:[Vr("h5",{className:wo()({"vm-section-header__title":!0,"vm-section-header__title_mobile":o}),children:n}),Vr("div",{className:"vm-section-header__tabs",children:Vr(Eo,{activeItem:String(u),items:Sh,onChange:function(e){l(+e)}})})]}),Vr("div",{className:wo()({"vm-top-queries-panel__table":!0,"vm-top-queries-panel__table_mobile":o}),children:[0===u&&Vr(Eh,{rows:t,columns:r,defaultOrderBy:i}),1===u&&Vr(Yf,{data:t})]})]})},Fh=function(){var e=Xo().isMobile,t=function(){var e=Wr().serverUrl,t=Zo(),n=t.topN,r=t.maxLifetime,i=t.runQuery,o=Ft(ee(null),2),a=o[0],u=o[1],l=Ft(ee(!1),2),c=l[0],s=l[1],f=Ft(ee(),2),d=f[0],h=f[1],p=ae((function(){return function(e,t,n){return"".concat(e,"/api/v1/status/top_queries?topN=").concat(t||"","&maxLifetime=").concat(n||"")}(e,n,r)}),[e,n,r]),v=function(){var e=tu(Xa().mark((function e(){var t,n;return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s(!0),e.prev=1,e.next=4,fetch(p);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,t.ok&&["topByAvgDuration","topByCount","topBySumDuration"].forEach((function(e){var t=n[e];Array.isArray(t)&&t.forEach((function(e){return e.timeRangeHours=+(e.timeRangeSeconds/3600).toFixed(2)}))})),u(t.ok?n:null),h(String(n.error||"")),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&"AbortError"!==e.t0.name&&h("".concat(e.t0.name,": ").concat(e.t0.message));case 16:s(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();return ne((function(){v()}),[i]),{data:a,error:d,loading:c}}(),n=t.data,r=t.error,i=t.loading,o=Zo(),a=o.topN,u=o.maxLifetime,l=le(Jo).dispatch;!function(){var e=Zo(),t=e.topN,n=e.maxLifetime,r=Ft(pr(),2)[1],i=function(){var e=id({topN:String(t),maxLifetime:n});r(e)};ne(i,[t,n]),ne(i,[])}();var c=ae((function(){var e=u.trim().split(" ").reduce((function(e,t){var n=ui(t);return n?yr(yr({},e),n):yr({},e)}),{});return!!_t().duration(e).asMilliseconds()}),[u]),s=ae((function(){return!!a&&a<1}),[a]),f=ae((function(){return s?"Number must be bigger than zero":""}),[s]),d=ae((function(){return c?"":"Invalid duration value"}),[c]),h=function(e){if(!n)return e;var t=n[e];return"number"===typeof t?uf(t,t,t):t||e},p=function(){l({type:"SET_RUN_QUERY"})},v=function(e){"Enter"===e.key&&p()};return ne((function(){n&&(a||l({type:"SET_TOP_N",payload:+n.topN}),u||l({type:"SET_MAX_LIFE_TIME",payload:n.maxLifetime}))}),[n]),Vr("div",{className:wo()({"vm-top-queries":!0,"vm-top-queries_mobile":e}),children:[i&&Vr(Qf,{containerStyles:{height:"500px"}}),Vr("div",{className:wo()({"vm-top-queries-controls":!0,"vm-block":!0,"vm-block_mobile":e}),children:[Vr("div",{className:"vm-top-queries-controls-fields",children:[Vr("div",{className:"vm-top-queries-controls-fields__item",children:Vr(xa,{label:"Max lifetime",value:u,error:d,helperText:"For example ".concat("30ms, 15s, 3d4h, 1y2w"),onChange:function(e){l({type:"SET_MAX_LIFE_TIME",payload:e})},onKeyDown:v})}),Vr("div",{className:"vm-top-queries-controls-fields__item",children:Vr(xa,{label:"Number of returned queries",type:"number",value:a||"",error:f,onChange:function(e){l({type:"SET_TOP_N",payload:+e})},onKeyDown:v})})]}),Vr("div",{className:wo()({"vm-top-queries-controls-bottom":!0,"vm-top-queries-controls-bottom_mobile":e}),children:[Vr("div",{className:"vm-top-queries-controls-bottom__info",children:["VictoriaMetrics tracks the last\xa0",Vr(ma,{title:"search.queryStats.lastQueriesCount",children:Vr("b",{children:h("search.queryStats.lastQueriesCount")})}),"\xa0queries with durations at least\xa0",Vr(ma,{title:"search.queryStats.minQueryDuration",children:Vr("b",{children:h("search.queryStats.minQueryDuration")})})]}),Vr("div",{className:"vm-top-queries-controls-bottom__button",children:Vr(fa,{startIcon:Vr(Xi,{}),onClick:p,children:"Execute"})})]})]}),r&&Vr(ta,{variant:"error",children:r}),n&&Vr(g,{children:Vr("div",{className:"vm-top-queries-panels",children:[Vr(Nh,{rows:n.topByCount,title:"Most frequently executed queries",columns:[{key:"query"},{key:"timeRangeHours",title:"time range, hours"},{key:"count"}]}),Vr(Nh,{rows:n.topByAvgDuration,title:"Most heavy queries",columns:[{key:"query"},{key:"avgDurationSeconds",title:"avg duration, seconds"},{key:"timeRangeHours",title:"time range, hours"},{key:"count"}],defaultOrderBy:"avgDurationSeconds"}),Vr(Nh,{rows:n.topBySumDuration,title:"Queries with most summary time to execute",columns:[{key:"query"},{key:"sumDurationSeconds",title:"sum duration, seconds"},{key:"timeRangeHours",title:"time range, hours"},{key:"count"}],defaultOrderBy:"sumDurationSeconds"})]})})]})},Mh={"color-primary":"#589DF6","color-secondary":"#316eca","color-error":"#e5534b","color-warning":"#c69026","color-info":"#539bf5","color-success":"#57ab5a","color-background-body":"#22272e","color-background-block":"#2d333b","color-background-tooltip":"rgba(22, 22, 22, 0.8)","color-text":"#cdd9e5","color-text-secondary":"#768390","color-text-disabled":"#636e7b","box-shadow":"rgba(0, 0, 0, 0.16) 1px 2px 6px","box-shadow-popper":"rgba(0, 0, 0, 0.2) 0px 2px 8px 0px","border-divider":"1px solid rgba(99, 110, 123, 0.5)","color-hover-black":"rgba(0, 0, 0, 0.12)"},Th={"color-primary":"#3F51B5","color-secondary":"#E91E63","color-error":"#FD080E","color-warning":"#FF8308","color-info":"#03A9F4","color-success":"#4CAF50","color-background-body":"#FEFEFF","color-background-block":"#FFFFFF","color-background-tooltip":"rgba(97,97,97, 0.92)","color-text":"#110f0f","color-text-secondary":"#706F6F","color-text-disabled":"#A09F9F","box-shadow":"rgba(0, 0, 0, 0.08) 1px 2px 6px","box-shadow-popper":"rgba(0, 0, 0, 0.1) 0px 2px 8px 0px","border-divider":"1px solid rgba(0, 0, 0, 0.15)","color-hover-black":"rgba(0, 0, 0, 0.06)"},Oh=function(){var e=Ft(ee(jr()),2),t=e[0],n=e[1],r=function(e){n(e.matches)};return ne((function(){var e=window.matchMedia("(prefers-color-scheme: dark)");return e.addEventListener("change",r),function(){return e.removeEventListener("change",r)}}),[]),t},Bh=["primary","secondary","error","warning","info","success"],Lh=function(e){var t,n=e.onLoaded,r=Ar(),i=Cr().palette,o=void 0===i?{}:i,a=Wr().theme,u=Oh(),l=Qr(),c=bo(document.body),s=Ft(ee((mr(t={},br.dark,Mh),mr(t,br.light,Th),mr(t,br.system,jr()?Mh:Th),t)),2),f=s[0],d=s[1],h=function(){var e=window,t=e.innerWidth,n=e.innerHeight,r=document.documentElement,i=r.clientWidth,o=r.clientHeight;zr("scrollbar-width","".concat(t-i,"px")),zr("scrollbar-height","".concat(n-o,"px")),zr("vh","".concat(.01*n,"px"))},p=function(){Bh.forEach((function(e,t){var r=function(e){var t=e.replace("#","").trim();if(3===t.length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6!==t.length)throw new Error("Invalid HEX color.");return(299*parseInt(t.slice(0,2),16)+587*parseInt(t.slice(2,4),16)+114*parseInt(t.slice(4,6),16))/1e3>=128?"#000000":"#FFFFFF"}(Rr("color-".concat(e)));zr("".concat(e,"-text"),r),t===Bh.length-1&&(l({type:"SET_DARK_THEME"}),n(!0))}))},v=function(){var e=Ir("THEME")||br.system,t=f[e];Object.entries(t).forEach((function(e){var t=Ft(e,2),n=t[0],r=t[1];zr(n,r)})),p(),r&&(Bh.forEach((function(e){var t=o[e];t&&zr("color-".concat(e),t)})),p())};return ne((function(){h(),v()}),[f]),ne(h,[c]),ne((function(){var e=jr()?Mh:Th;f[br.system]!==e?d((function(t){return yr(yr({},t),{},mr({},br.system,e))})):v()}),[a,u]),ne((function(){r&&l({type:"SET_THEME",payload:br.light})}),[]),null},Ih=function(){var e=Ft(ee(!1),2),t=e[0],n=e[1],r=Ft(ee([]),2),i=r[0],o=r[1],a=Ft(ee([]),2),u=a[0],l=a[1],c=ae((function(){return!!i.length}),[i]),f=Ft(pr(),2)[1],d=function(){n(!0)},h=function(){n(!1)},p=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";l((function(n){return[{filename:t,text:": ".concat(e.message)}].concat(Ot(n))}))},v=function(e,t){try{var n=JSON.parse(e),r=n.trace||n;if(!r.duration_msec)return void p(new Error(_r.traceNotFound),t);var i=new Hf(r,t);o((function(e){return[i].concat(Ot(e))}))}catch(s){s instanceof Error&&p(s,t)}},m=function(e){l([]),Array.from(e.target.files||[]).map((function(e){var t=new FileReader,n=(null===e||void 0===e?void 0:e.name)||"";t.onload=function(e){var t,r=String(null===(t=e.target)||void 0===t?void 0:t.result);v(r,n)},t.readAsText(e)})),e.target.value=""},g=function(e){return function(){!function(e){l((function(t){return t.filter((function(t,n){return n!==e}))}))}(e)}};ne((function(){f({})}),[]);var y=function(){return Vr("div",{className:"vm-trace-page-controls",children:[Vr(fa,{variant:"outlined",onClick:d,children:"Paste JSON"}),Vr(ma,{title:"The file must contain tracing information in JSON format",children:Vr(fa,{children:["Upload Files",Vr("input",{id:"json",type:"file",accept:"application/json",multiple:!0,title:" ",onChange:m})]})})]})};return Vr("div",{className:"vm-trace-page",children:[Vr("div",{className:"vm-trace-page-header",children:[Vr("div",{className:"vm-trace-page-header-errors",children:u.map((function(e,t){return Vr("div",{className:"vm-trace-page-header-errors-item",children:[Vr(ta,{variant:"error",children:[Vr("b",{className:"vm-trace-page-header-errors-item__filename",children:e.filename}),Vr("span",{children:e.text})]}),Vr(fa,{className:"vm-trace-page-header-errors-item__close",startIcon:Vr(ji,{}),variant:"text",color:"error",onClick:g(t)})]},"".concat(e,"_").concat(t))}))}),Vr("div",{children:c&&Vr(y,{})})]}),c&&Vr("div",{children:Vr(Xf,{jsonEditor:!0,traces:i,onDeleteClick:function(e){var t=i.filter((function(t){return t.idValue!==e.idValue}));o(Ot(t))}})}),!c&&Vr("div",{className:"vm-trace-page-preview",children:[Vr("p",{className:"vm-trace-page-preview__text",children:["Please, upload file with JSON response content.","\n","The file must contain tracing information in JSON format.","\n","In order to use tracing please refer to the doc:\xa0",Vr("a",{className:"vm-link vm-link_colored",href:"https://docs.victoriametrics.com/#query-tracing",target:"_blank",rel:"help noreferrer",children:"https://docs.victoriametrics.com/#query-tracing"}),"\n","Tracing graph will be displayed after file upload."]}),Vr(y,{})]}),t&&Vr(va,{title:"Paste JSON",onClose:h,children:Vr(Kf,{editable:!0,displayTitle:!0,defaultTile:"JSON ".concat(i.length+1),onClose:h,onUpload:v})})]})},Ph=function(e){var t=Wr().serverUrl,n=Ni().period,r=Ft(ee([]),2),i=r[0],o=r[1],a=Ft(ee(!1),2),u=a[0],l=a[1],c=Ft(ee(),2),s=c[0],f=c[1],d=ae((function(){return function(e,t,n){var r="{job=".concat(JSON.stringify(n),"}");return"".concat(e,"/api/v1/label/instance/values?match[]=").concat(encodeURIComponent(r),"&start=").concat(t.start,"&end=").concat(t.end)}(t,n,e)}),[t,n,e]);return ne((function(){if(e){var t=function(){var e=tu(Xa().mark((function e(){var t,n,r;return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),e.prev=1,e.next=4,fetch(d);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],o(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?f(void 0):f("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&f("".concat(e.t0.name,": ").concat(e.t0.message));case 16:l(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[d]),{instances:i,isLoading:u,error:s}},Rh=function(e,t){var n=Wr().serverUrl,r=Ni().period,i=Ft(ee([]),2),o=i[0],a=i[1],u=Ft(ee(!1),2),l=u[0],c=u[1],s=Ft(ee(),2),f=s[0],d=s[1],h=ae((function(){return function(e,t,n,r){var i=Object.entries({job:n,instance:r}).filter((function(e){return e[1]})).map((function(e){var t=Ft(e,2),n=t[0],r=t[1];return"".concat(n,"=").concat(JSON.stringify(r))})).join(","),o="{".concat(i,"}");return"".concat(e,"/api/v1/label/__name__/values?match[]=").concat(encodeURIComponent(o),"&start=").concat(t.start,"&end=").concat(t.end)}(n,r,e,t)}),[n,r,e,t]);return ne((function(){if(e){var t=function(){var e=tu(Xa().mark((function e(){var t,n,r;return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c(!0),e.prev=1,e.next=4,fetch(h);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],a(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?d(void 0):d("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&d("".concat(e.t0.name,": ").concat(e.t0.message));case 16:c(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[h]),{names:o,isLoading:l,error:f}},zh=function(e){var t=e.name,n=e.job,r=e.instance,i=e.rateEnabled,o=e.isBucket,a=e.height,u=Xo().isMobile,l=$o(),c=l.customStep,s=l.yaxis,f=Ni().period,d=Ho(),h=Fi(),p=Ft(ee(!1),2),v=p[0],m=p[1],g=ae((function(){var e=Object.entries({job:n,instance:r}).filter((function(e){return e[1]})).map((function(e){var t=Ft(e,2),n=t[0],r=t[1];return"".concat(n,"=").concat(JSON.stringify(r))}));e.push("__name__=".concat(JSON.stringify(t))),"node_cpu_seconds_total"==t&&e.push('mode!="idle"');var a="{".concat(e.join(","),"}");if(o)return r?'\nlabel_map(\n histogram_quantiles("__name__", 0.5, 0.95, 0.99, sum(rate('.concat(a,')) by (vmrange, le)),\n "__name__",\n "0.5", "q50",\n "0.95", "q95",\n "0.99", "q99",\n)'):"\nwith (q = histogram_quantile(0.95, sum(rate(".concat(a,')) by (instance, vmrange, le))) (\n alias(min(q), "q95min"),\n alias(max(q), "q95max"),\n alias(avg(q), "q95avg"),\n)');var u=i?"rollup_rate(".concat(a,")"):"rollup(".concat(a,")");return"\nwith (q = ".concat(u,') (\n alias(min(label_match(q, "rollup", "min")), "min"),\n alias(max(label_match(q, "rollup", "max")), "max"),\n alias(avg(label_match(q, "rollup", "avg")), "avg"),\n)')}),[t,n,r,i,o]),y=Uf({predefinedQuery:[g],visible:!0,customStep:c,showAllSeries:v}),_=y.isLoading,b=y.graphData,D=y.error,w=y.warning;return Vr("div",{className:wo()({"vm-explore-metrics-graph":!0,"vm-explore-metrics-graph_mobile":u}),children:[_&&Vr(Qf,{}),D&&Vr(ta,{variant:"error",children:D}),w&&Vr(ta,{variant:"warning",children:Vr("div",{className:"vm-explore-metrics-graph__warning",children:[Vr("p",{children:w}),Vr(fa,{color:"warning",variant:"outlined",onClick:function(){m(!0)},children:"Show all"})]})}),b&&f&&Vr(Nf,{data:b,period:f,customStep:c,query:[g],yaxis:s,setYaxisLimits:function(e){d({type:"SET_YAXIS_LIMITS",payload:e})},setPeriod:function(e){var t=e.from,n=e.to;h({type:"SET_PERIOD",payload:{from:t,to:n}})},showLegend:!1,height:a})]})},jh=function(e){var t=e.name,n=e.index,r=e.length,i=e.isBucket,o=e.rateEnabled,a=e.onChangeRate,u=e.onRemoveItem,l=e.onChangeOrder,c=Xo().isMobile,s=Ft(ee(!1),2),f=s[0],d=s[1],h=function(){u(t)},p=function(){l(t,n,n+1)},v=function(){l(t,n,n-1)};return Vr("div",c?{className:"vm-explore-metrics-item-header vm-explore-metrics-item-header_mobile",children:[Vr("div",{className:"vm-explore-metrics-item-header__name",children:t}),Vr(fa,{variant:"text",size:"small",startIcon:Vr(yo,{}),onClick:function(){d(!0)}}),f&&Vr(va,{title:t,onClose:function(){d(!1)},children:Vr("div",{className:"vm-explore-metrics-item-header-modal",children:[Vr("div",{className:"vm-explore-metrics-item-header-modal-order",children:[Vr(fa,{startIcon:Vr(ao,{}),variant:"outlined",onClick:v,disabled:0===n}),Vr("p",{children:["position:",Vr("span",{className:"vm-explore-metrics-item-header-modal-order__index",children:["#",n+1]})]}),Vr(fa,{endIcon:Vr(oo,{}),variant:"outlined",onClick:p,disabled:n===r-1})]}),!i&&Vr("div",{className:"vm-explore-metrics-item-header-modal__rate",children:[Vr(Tf,{label:Vr("span",{children:["enable ",Vr("code",{children:"rate()"})]}),value:o,onChange:a,fullWidth:!0}),Vr("p",{children:"calculates the average per-second speed of metrics change"})]}),Vr(fa,{startIcon:Vr(ji,{}),color:"error",variant:"outlined",onClick:h,fullWidth:!0,children:"Remove graph"})]})})]}:{className:"vm-explore-metrics-item-header",children:[Vr("div",{className:"vm-explore-metrics-item-header-order",children:[Vr(ma,{title:"move graph up",children:Vr(fa,{className:"vm-explore-metrics-item-header-order__up",startIcon:Vr(Wi,{}),variant:"text",color:"gray",size:"small",onClick:v})}),Vr("div",{className:"vm-explore-metrics-item-header__index",children:["#",n+1]}),Vr(ma,{title:"move graph down",children:Vr(fa,{className:"vm-explore-metrics-item-header-order__down",startIcon:Vr(Wi,{}),variant:"text",color:"gray",size:"small",onClick:p})})]}),Vr("div",{className:"vm-explore-metrics-item-header__name",children:t}),!i&&Vr("div",{className:"vm-explore-metrics-item-header__rate",children:Vr(ma,{title:"calculates the average per-second speed of metric's change",children:Vr(Tf,{label:Vr("span",{children:["enable ",Vr("code",{children:"rate()"})]}),value:o,onChange:a})})}),Vr("div",{className:"vm-explore-metrics-item-header__close",children:Vr(ma,{title:"close graph",children:Vr(fa,{startIcon:Vr(ji,{}),variant:"text",color:"gray",size:"small",onClick:h})})})]})},$h=function(e){var t=e.name,n=e.job,r=e.instance,i=e.index,o=e.length,a=e.size,u=e.onRemoveItem,l=e.onChangeOrder,c=ae((function(){return/_sum?|_total?|_count?/.test(t)}),[t]),s=ae((function(){return/_bucket?/.test(t)}),[t]),f=Ft(ee(c),2),d=f[0],h=f[1],p=bo(document.body),v=ae(a.height,[a,p]);return ne((function(){h(c)}),[n]),Vr("div",{className:"vm-explore-metrics-item vm-block vm-block_empty-padding",children:[Vr(jh,{name:t,index:i,length:o,isBucket:s,rateEnabled:d,size:a.id,onChangeRate:h,onRemoveItem:u,onChangeOrder:l}),Vr(zh,{name:t,job:n,instance:r,rateEnabled:d,isBucket:s,height:v},"".concat(t,"_").concat(n,"_").concat(r,"_").concat(d))]})},Hh=function(e){var t=e.values,n=e.onRemoveItem,r=Xo().isMobile;return r?Vr("span",{className:"vm-select-input-content__counter",children:["selected ",t.length]}):Vr(g,{children:t.map((function(e){return Vr("div",{className:"vm-select-input-content__selected",children:[Vr("span",{children:e}),Vr("div",{onClick:(t=e,function(e){n(t),e.stopPropagation()}),children:Vr(ji,{})})]},e);var t}))})},Uh=function(e){var t=e.value,n=e.list,r=e.label,i=e.placeholder,o=e.noOptionsText,a=e.clearable,u=void 0!==a&&a,l=e.searchable,c=void 0!==l&&l,s=e.autofocus,f=e.onChange,d=Wr().isDarkTheme,h=Xo().isMobile,p=Ft(ee(""),2),v=p[0],m=p[1],g=ie(null),y=Ft(ee(!1),2),_=y[0],b=y[1],D=ie(null),w=Array.isArray(t),x=Array.isArray(t)?t:void 0,k=h&&w&&!(null===x||void 0===x||!x.length),C=ae((function(){return _?v:Array.isArray(t)?"":t}),[t,v,_,w]),A=ae((function(){return _?v||"(.+)":""}),[v,_]),E=function(){D.current&&D.current.blur()},S=function(e){f(e),w||(b(!1),E()),w&&D.current&&D.current.focus()},N=function(e){D.current!==e.target&&b(!1)};return ne((function(){m(""),_&&D.current&&D.current.focus(),_||E()}),[_,D]),ne((function(){s&&D.current&&!h&&D.current.focus()}),[s,D]),ne((function(){return window.addEventListener("keyup",N),function(){window.removeEventListener("keyup",N)}}),[]),Vr("div",{className:wo()({"vm-select":!0,"vm-select_dark":d}),children:[Vr("div",{className:"vm-select-input",onClick:function(e){e.target instanceof HTMLInputElement||b((function(e){return!e}))},ref:g,children:[Vr("div",{className:"vm-select-input-content",children:[!(null===x||void 0===x||!x.length)&&Vr(Hh,{values:x,onRemoveItem:S}),!k&&Vr("input",{value:C,type:"text",placeholder:i,onInput:function(e){m(e.target.value)},onFocus:function(){b(!0)},ref:D,readOnly:h||!c})]}),r&&Vr("span",{className:"vm-text-field__label",children:r}),u&&t&&Vr("div",{className:"vm-select-input__icon",onClick:function(e){return function(t){S(e),t.stopPropagation()}}(""),children:Vr(ji,{})}),Vr("div",{className:wo()({"vm-select-input__icon":!0,"vm-select-input__icon_open":_}),children:Vr(Qi,{})})]}),Vr(Ff,{label:r,value:A,options:n,anchor:g,selected:x,maxWords:10,minLength:0,fullWidth:!0,noOptionsText:o,onSelect:S,onOpenAutocomplete:b})]})},Yh=Or.map((function(e){return e.id})),Vh=function(e){var t=e.jobs,n=e.instances,r=e.names,i=e.job,o=e.instance,a=e.size,u=e.selectedMetrics,l=e.onChangeJob,c=e.onChangeInstance,s=e.onToggleMetric,f=e.onChangeSize,d=ae((function(){return i?"":"No instances. Please select job"}),[i]),h=ae((function(){return i?"":"No metric names. Please select job"}),[i]),p=Xo().isMobile;return Vr("div",{className:wo()({"vm-explore-metrics-header":!0,"vm-explore-metrics-header_mobile":p,"vm-block":!0,"vm-block_mobile":p}),children:[Vr("div",{className:"vm-explore-metrics-header__job",children:Vr(Uh,{value:i,list:t,label:"Job",placeholder:"Please select job",onChange:l,autofocus:!i,searchable:!0})}),Vr("div",{className:"vm-explore-metrics-header__instance",children:Vr(Uh,{value:o,list:n,label:"Instance",placeholder:"Please select instance",onChange:c,noOptionsText:d,clearable:!0,searchable:!0})}),Vr("div",{className:"vm-explore-metrics-header__size",children:Vr(Uh,{label:"Size graphs",value:a,list:Yh,onChange:f})}),Vr("div",{className:"vm-explore-metrics-header-metrics",children:Vr(Uh,{label:"Metrics",value:u,list:r,placeholder:"Search metric name",onChange:s,noOptionsText:h,clearable:!0,searchable:!0})})]})},qh=Br("job",""),Wh=Br("instance",""),Qh=Br("metrics",""),Gh=Br("size",""),Jh=Or.find((function(e){return Gh?e.id===Gh:e.isDefault}))||Or[0],Zh=function(){var e=Ft(ee(qh),2),t=e[0],n=e[1],r=Ft(ee(Wh),2),i=r[0],o=r[1],a=Ft(ee(Qh?Qh.split("&"):[]),2),u=a[0],l=a[1],c=Ft(ee(Jh),2),s=c[0],f=c[1];!function(e){var t=e.job,n=e.instance,r=e.metrics,i=e.size,o=Ni(),a=o.duration,u=o.relativeTime,l=o.period.date,c=$o().customStep,s=Ft(pr(),2)[1],f=function(){var e,o=id((mr(e={},"g0.range_input",a),mr(e,"g0.end_input",l),mr(e,"g0.step_input",c),mr(e,"g0.relative_time",u),mr(e,"size",i),mr(e,"job",t),mr(e,"instance",n),mr(e,"metrics",r),e));s(o)};ne(f,[a,u,l,c,t,n,r,i]),ne(f,[])}({job:t,instance:i,metrics:u.join("&"),size:s.id});var d=function(){var e=Wr().serverUrl,t=Ni().period,n=Ft(ee([]),2),r=n[0],i=n[1],o=Ft(ee(!1),2),a=o[0],u=o[1],l=Ft(ee(),2),c=l[0],s=l[1],f=ae((function(){return function(e,t){return"".concat(e,"/api/v1/label/job/values?start=").concat(t.start,"&end=").concat(t.end)}(e,t)}),[e,t]);return ne((function(){var e=function(){var e=tu(Xa().mark((function e(){var t,n,r;return Xa().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u(!0),e.prev=1,e.next=4,fetch(f);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],i(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?s(void 0):s("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&s("".concat(e.t0.name,": ").concat(e.t0.message));case 16:u(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();e().catch(console.error)}),[f]),{jobs:r,isLoading:a,error:c}}(),h=d.jobs,p=d.isLoading,v=d.error,m=Ph(t),g=m.instances,y=m.isLoading,_=m.error,b=Rh(t,i),D=b.names,w=b.isLoading,x=b.error,k=ae((function(){return p||y||w}),[p,y,w]),C=ae((function(){return v||_||x}),[v,_,x]),A=function(e){l(e?function(t){return t.includes(e)?t.filter((function(t){return t!==e})):[].concat(Ot(t),[e])}:[])},E=function(e,t,n){var r=n>u.length-1;n<0||r||l((function(e){var r=Ot(e),i=Ft(r.splice(t,1),1)[0];return r.splice(n,0,i),r}))};return ne((function(){i&&g.length&&!g.includes(i)&&o("")}),[g,i]),Vr("div",{className:"vm-explore-metrics",children:[Vr(Vh,{jobs:h,instances:g,names:D,job:t,size:s.id,instance:i,selectedMetrics:u,onChangeJob:n,onChangeSize:function(e){var t=Or.find((function(t){return t.id===e}));t&&f(t)},onChangeInstance:o,onToggleMetric:A}),k&&Vr(Qf,{}),C&&Vr(ta,{variant:"error",children:C}),!t&&Vr(ta,{variant:"info",children:"Please select job to see list of metric names."}),t&&!u.length&&Vr(ta,{variant:"info",children:"Please select metric names to see the graphs."}),Vr("div",{className:"vm-explore-metrics-body",children:u.map((function(e,n){return Vr($h,{name:e,job:t,instance:i,index:n,length:u.length,size:s,onRemoveItem:A,onChangeOrder:E},e)}))})]})},Kh=function(){var e=ra().showInfoMessage,n=function(t){return function(){var n;n=t,navigator.clipboard.writeText("<".concat(n,"/>")),e({text:"<".concat(n,"/> has been copied"),type:"success"})}};return Vr("div",{className:"vm-preview-icons",children:Object.entries(t).map((function(e){var t=Ft(e,2),r=t[0],i=t[1];return Vr("div",{className:"vm-preview-icons-item",onClick:n(r),children:[Vr("div",{className:"vm-preview-icons-item__svg",children:i()}),Vr("div",{className:"vm-preview-icons-item__name",children:"<".concat(r,"/>")})]},r)}))})},Xh=function(){var e=Ft(ee(!1),2),t=e[0],n=e[1];return Vr(g,{children:Vr(cr,{children:Vr(la,{children:Vr(g,{children:[Vr(Lh,{onLoaded:n}),t&&Vr(nr,{children:Vr(er,{path:"/",element:Vr(su,{}),children:[Vr(er,{path:kr.home,element:Vr(ud,{})}),Vr(er,{path:kr.metrics,element:Vr(Zh,{})}),Vr(er,{path:kr.cardinality,element:Vr(Ah,{})}),Vr(er,{path:kr.topQueries,element:Vr(Fh,{})}),Vr(er,{path:kr.trace,element:Vr(Ih,{})}),Vr(er,{path:kr.dashboards,element:Vr(Qd,{})}),Vr(er,{path:kr.icons,element:Vr(Kh,{})})]})})]})})})})},ep=function(e){e&&n.e(27).then(n.bind(n,27)).then((function(t){var n=t.getCLS,r=t.getFID,i=t.getFCP,o=t.getLCP,a=t.getTTFB;n(e),r(e),i(e),o(e),a(e)}))},tp=document.getElementById("root");tp&&Ve(Vr(Xh,{}),tp),ep()}()}(); \ No newline at end of file diff --git a/app/vmui/packages/vmui/package-lock.json b/app/vmui/packages/vmui/package-lock.json index b04161b459..e697d80303 100644 --- a/app/vmui/packages/vmui/package-lock.json +++ b/app/vmui/packages/vmui/package-lock.json @@ -18,6 +18,7 @@ "@types/marked": "^4.0.2", "@types/node": "^17.0.21", "@types/qs": "^6.9.7", + "@types/react-input-mask": "^3.0.2", "@types/react-router-dom": "^5.3.3", "@types/webpack-env": "^1.16.3", "classnames": "^2.3.2", @@ -28,6 +29,7 @@ "marked": "^4.0.14", "preact": "^10.7.1", "qs": "^6.10.3", + "react-input-mask": "^2.0.4", "react-router-dom": "^6.3.0", "sass": "^1.56.0", "typescript": "~4.6.2", @@ -4392,6 +4394,14 @@ "@types/react": "*" } }, + "node_modules/@types/react-input-mask": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/react-input-mask/-/react-input-mask-3.0.2.tgz", + "integrity": "sha512-WTli3kUyvUqqaOLYG/so2pLqUvRb+n4qnx2He5klfqZDiQmRyD07jVIt/bco/1BrcErkPMtpOm+bHii4Oed6cQ==", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/react-router": { "version": "5.1.20", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", @@ -10236,6 +10246,14 @@ "node": ">= 0.4" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -16403,6 +16421,19 @@ "dev": true, "peer": true }, + "node_modules/react-input-mask": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-input-mask/-/react-input-mask-2.0.4.tgz", + "integrity": "sha512-1hwzMr/aO9tXfiroiVCx5EtKohKwLk/NT8QlJXHQ4N+yJJFyUuMT+zfTpLBwX/lK3PkuMlievIffncpMZ3HGRQ==", + "dependencies": { + "invariant": "^2.2.4", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": ">=0.14.0", + "react-dom": ">=0.14.0" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -18811,6 +18842,14 @@ "makeerror": "1.0.12" } }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -18851,9 +18890,9 @@ } }, "node_modules/webpack": { - "version": "5.75.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", - "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "version": "5.76.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz", + "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==", "dev": true, "peer": true, "dependencies": { diff --git a/app/vmui/packages/vmui/package.json b/app/vmui/packages/vmui/package.json index e4cbaae2b5..f846c31c8c 100644 --- a/app/vmui/packages/vmui/package.json +++ b/app/vmui/packages/vmui/package.json @@ -14,6 +14,7 @@ "@types/marked": "^4.0.2", "@types/node": "^17.0.21", "@types/qs": "^6.9.7", + "@types/react-input-mask": "^3.0.2", "@types/react-router-dom": "^5.3.3", "@types/webpack-env": "^1.16.3", "classnames": "^2.3.2", @@ -24,6 +25,7 @@ "marked": "^4.0.14", "preact": "^10.7.1", "qs": "^6.10.3", + "react-input-mask": "^2.0.4", "react-router-dom": "^6.3.0", "sass": "^1.56.0", "typescript": "~4.6.2", diff --git a/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeDurationSelector/style.scss b/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeDurationSelector/style.scss index 8e0fbb09ca..9a4fb43772 100644 --- a/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeDurationSelector/style.scss +++ b/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeDurationSelector/style.scss @@ -1,7 +1,7 @@ @use "src/styles/variables" as *; .vm-time-duration { - max-height: 200px; + max-height: 227px; overflow: auto; font-size: $font-size; diff --git a/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeSelector/TimeSelector.tsx b/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeSelector/TimeSelector.tsx index 0fcf4dc27d..368545f89d 100644 --- a/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeSelector/TimeSelector.tsx +++ b/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeSelector/TimeSelector.tsx @@ -4,18 +4,18 @@ import TimeDurationSelector from "../TimeDurationSelector/TimeDurationSelector"; import dayjs from "dayjs"; import { getAppModeEnable } from "../../../../utils/app-mode"; import { useTimeDispatch, useTimeState } from "../../../../state/time/TimeStateContext"; -import { AlarmIcon, ArrowDownIcon, CalendarIcon, ClockIcon } from "../../../Main/Icons"; +import { AlarmIcon, ArrowDownIcon, ClockIcon } from "../../../Main/Icons"; import Button from "../../../Main/Button/Button"; import Popper from "../../../Main/Popper/Popper"; import Tooltip from "../../../Main/Tooltip/Tooltip"; import { DATE_TIME_FORMAT } from "../../../../constants/date"; import useResize from "../../../../hooks/useResize"; -import DatePicker from "../../../Main/DatePicker/DatePicker"; import "./style.scss"; import useClickOutside from "../../../../hooks/useClickOutside"; import classNames from "classnames"; import { useAppState } from "../../../../state/common/StateContext"; import useDeviceDetect from "../../../../hooks/useDeviceDetect"; +import DateTimeInput from "../../../Main/DatePicker/DateTimeInput/DateTimeInput"; export const TimeSelector: FC = () => { const { isMobile } = useDeviceDetect(); @@ -27,9 +27,6 @@ export const TimeSelector: FC = () => { const [until, setUntil] = useState<string>(); const [from, setFrom] = useState<string>(); - const formFormat = useMemo(() => dayjs.tz(from).format(DATE_TIME_FORMAT), [from]); - const untilFormat = useMemo(() => dayjs.tz(until).format(DATE_TIME_FORMAT), [until]); - const { period: { end, start }, relativeTime, timezone, duration } = useTimeState(); const dispatch = useTimeDispatch(); const appModeEnable = getAppModeEnable(); @@ -55,10 +52,7 @@ export const TimeSelector: FC = () => { const formatRange = useMemo(() => { const startFormat = dayjs.tz(dateFromSeconds(start)).format(DATE_TIME_FORMAT); const endFormat = dayjs.tz(dateFromSeconds(end)).format(DATE_TIME_FORMAT); - return { - start: startFormat, - end: endFormat - }; + return { start: startFormat, end: endFormat }; }, [start, end, timezone]); const dateTitle = useMemo(() => { @@ -66,8 +60,6 @@ export const TimeSelector: FC = () => { return isRelativeTime ? relativeTime.replace(/_/g, " ") : `${formatRange.start} - ${formatRange.end}`; }, [relativeTime, formatRange]); - const fromRef = useRef<HTMLDivElement>(null); - const untilRef = useRef<HTMLDivElement>(null); const fromPickerRef = useRef<HTMLDivElement>(null); const untilPickerRef = useRef<HTMLDivElement>(null); const [openOptions, setOpenOptions] = useState(false); @@ -82,11 +74,6 @@ export const TimeSelector: FC = () => { } setOpenOptions(false); }; - const handleFromChange = (from: string) => setFrom(from); - - const handleUntilChange = (until: string) => setUntil(until); - - const onApplyClick = () => setTimeAndClosePicker(); const onSwitchToNow = () => dispatch({ type: "RUN_QUERY_TO_NOW" }); @@ -116,11 +103,9 @@ export const TimeSelector: FC = () => { useClickOutside(wrapperRef, (e) => { if (isMobile) return; const target = e.target as HTMLElement; - const isFromButton = fromRef?.current && fromRef.current.contains(target); - const isUntilButton = untilRef?.current && untilRef.current.contains(target); const isFromPicker = fromPickerRef?.current && fromPickerRef?.current?.contains(target); const isUntilPicker = untilPickerRef?.current && untilPickerRef?.current?.contains(target); - if (isFromButton || isUntilButton || isFromPicker || isUntilPicker) return; + if (isFromPicker || isUntilPicker) return; handleCloseOptions(); }); @@ -174,38 +159,22 @@ export const TimeSelector: FC = () => { "vm-time-selector-left-inputs_dark": isDarkTheme })} > - <div - className="vm-time-selector-left-inputs__date" - ref={fromRef} - > - <label>From:</label> - <span>{formFormat}</span> - <CalendarIcon/> - <DatePicker - label={"Date From"} - ref={fromPickerRef} - date={from || ""} - onChange={handleFromChange} - targetRef={fromRef} - timepicker={true} - /> - </div> - <div - className="vm-time-selector-left-inputs__date" - ref={untilRef} - > - <label>To:</label> - <span>{untilFormat}</span> - <CalendarIcon/> - <DatePicker - label={"Date To"} - ref={untilPickerRef} - date={until || ""} - onChange={handleUntilChange} - targetRef={untilRef} - timepicker={true} - /> - </div> + <DateTimeInput + value={from} + label="From:" + pickerLabel="Date From" + pickerRef={fromPickerRef} + onChange={setFrom} + onEnter={setTimeAndClosePicker} + /> + <DateTimeInput + value={until} + label="To:" + pickerLabel="Date To" + pickerRef={untilPickerRef} + onChange={setUntil} + onEnter={setTimeAndClosePicker} + /> </div> <div className="vm-time-selector-left-timezone"> <div className="vm-time-selector-left-timezone__title">{activeTimezone.region}</div> @@ -228,7 +197,7 @@ export const TimeSelector: FC = () => { </Button> <Button color="primary" - onClick={onApplyClick} + onClick={setTimeAndClosePicker} > Apply </Button> diff --git a/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeSelector/style.scss b/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeSelector/style.scss index 46bf69aece..9d79cb1519 100644 --- a/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeSelector/style.scss +++ b/app/vmui/packages/vmui/src/components/Configurators/TimeRangeSettings/TimeSelector/style.scss @@ -31,48 +31,6 @@ display: grid; align-items: flex-start; justify-content: stretch; - - &_dark &__date { - border-color: $color-text-disabled; - } - - &__date { - display: grid; - grid-template-columns: 1fr 14px; - gap: $padding-small; - align-items: center; - justify-content: center; - padding-bottom: $padding-small; - margin-bottom: $padding-global; - border-bottom: $border-divider; - cursor: pointer; - transition: color 200ms ease-in-out, border-bottom-color 300ms ease; - - &:last-child { - margin-bottom: 0; - } - - &:hover { - border-bottom-color: $color-primary; - } - - &:hover svg, - &:hover { - color: $color-primary; - } - - label { - grid-column: 1/3; - font-size: $font-size-small; - color: $color-text-secondary; - user-select: none; - } - - svg { - color: $color-text-secondary; - transition: color 200ms ease-in-out; - } - } } &-timezone { diff --git a/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/Calendar.tsx b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/Calendar.tsx index 22d160a60c..ec809a858e 100644 --- a/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/Calendar.tsx +++ b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/Calendar.tsx @@ -3,65 +3,45 @@ import dayjs, { Dayjs } from "dayjs"; import CalendarHeader from "./CalendarHeader/CalendarHeader"; import CalendarBody from "./CalendarBody/CalendarBody"; import YearsList from "./YearsList/YearsList"; -import TimePicker from "../TImePicker/TimePicker"; import { DATE_TIME_FORMAT } from "../../../../constants/date"; import "./style.scss"; -import { CalendarIcon, ClockIcon } from "../../Icons"; -import Tabs from "../../Tabs/Tabs"; import useDeviceDetect from "../../../../hooks/useDeviceDetect"; import classNames from "classnames"; +import MonthsList from "./MonthsList/MonthsList"; interface DatePickerProps { date: Date | Dayjs format?: string - timepicker?: boolean, onChange: (date: string) => void - onClose?: () => void } -const tabs = [ - { value: "date", icon: <CalendarIcon/> }, - { value: "time", icon: <ClockIcon/> } -]; +enum CalendarTypeView { + "days", + "months", + "years" +} const Calendar: FC<DatePickerProps> = ({ date, - timepicker = false, format = DATE_TIME_FORMAT, onChange, - onClose }) => { - const [displayYears, setDisplayYears] = useState(false); + const [viewType, setViewType] = useState<CalendarTypeView>(CalendarTypeView.days); const [viewDate, setViewDate] = useState(dayjs.tz(date)); const [selectDate, setSelectDate] = useState(dayjs.tz(date)); - const [tab, setTab] = useState(tabs[0].value); const { isMobile } = useDeviceDetect(); const toggleDisplayYears = () => { - setDisplayYears(prev => !prev); + setViewType(prev => prev === CalendarTypeView.years ? CalendarTypeView.days : CalendarTypeView.years); }; const handleChangeViewDate = (date: Dayjs) => { setViewDate(date); - setDisplayYears(false); + setViewType(prev => prev === CalendarTypeView.years ? CalendarTypeView.months : CalendarTypeView.days); }; const handleChangeSelectDate = (date: Dayjs) => { setSelectDate(date); - if (timepicker) setTab("time"); - }; - - const handleChangeTime = (time: string) => { - const [hour, minute, second] = time.split(":"); - setSelectDate(prev => prev.set("hour", +hour).set("minute", +minute).set("second", +second)); - }; - - const handleChangeTab = (value: string) => { - setTab(value); - }; - - const handleClose = () => { - onClose && onClose(); }; useEffect(() => { @@ -69,6 +49,12 @@ const Calendar: FC<DatePickerProps> = ({ onChange(selectDate.format(format)); }, [selectDate]); + useEffect(() => { + const value = dayjs.tz(date); + setViewDate(value); + setSelectDate(value); + }, [date]); + return ( <div className={classNames({ @@ -76,51 +62,32 @@ const Calendar: FC<DatePickerProps> = ({ "vm-calendar_mobile": isMobile, })} > - {tab === "date" && ( - <CalendarHeader + <CalendarHeader + viewDate={viewDate} + onChangeViewDate={handleChangeViewDate} + toggleDisplayYears={toggleDisplayYears} + showArrowNav={viewType === CalendarTypeView.days} + /> + {viewType === CalendarTypeView.days && ( + <CalendarBody + viewDate={viewDate} + selectDate={selectDate} + onChangeSelectDate={handleChangeSelectDate} + /> + )} + {viewType === CalendarTypeView.years && ( + <YearsList viewDate={viewDate} onChangeViewDate={handleChangeViewDate} - toggleDisplayYears={toggleDisplayYears} - displayYears={displayYears} /> )} - - {tab === "date" && ( - <> - {!displayYears && ( - <CalendarBody - viewDate={viewDate} - selectDate={selectDate} - onChangeSelectDate={handleChangeSelectDate} - /> - )} - {displayYears && ( - <YearsList - viewDate={viewDate} - onChangeViewDate={handleChangeViewDate} - /> - )} - </> - )} - - {tab === "time" && ( - <TimePicker + {viewType === CalendarTypeView.months && ( + <MonthsList selectDate={selectDate} - onChangeTime={handleChangeTime} - onClose={handleClose} + viewDate={viewDate} + onChangeViewDate={handleChangeViewDate} /> )} - - {timepicker && ( - <div className="vm-calendar__tabs"> - <Tabs - activeItem={tab} - items={tabs} - onChange={handleChangeTab} - indicatorPlacement="top" - /> - </div> - )} </div> ); }; diff --git a/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/CalendarHeader/CalendarHeader.tsx b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/CalendarHeader/CalendarHeader.tsx index 3a106b7ddc..efff173144 100644 --- a/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/CalendarHeader/CalendarHeader.tsx +++ b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/CalendarHeader/CalendarHeader.tsx @@ -5,11 +5,11 @@ import { ArrowDownIcon, ArrowDropDownIcon } from "../../../Icons"; interface CalendarHeaderProps { viewDate: Dayjs onChangeViewDate: (date: Dayjs) => void - displayYears: boolean + showArrowNav: boolean toggleDisplayYears: () => void } -const CalendarHeader: FC<CalendarHeaderProps> = ({ viewDate, displayYears, onChangeViewDate, toggleDisplayYears }) => { +const CalendarHeader: FC<CalendarHeaderProps> = ({ viewDate, showArrowNav, onChangeViewDate, toggleDisplayYears }) => { const setPrevMonth = () => { onChangeViewDate(viewDate.subtract(1, "month")); @@ -32,7 +32,7 @@ const CalendarHeader: FC<CalendarHeaderProps> = ({ viewDate, displayYears, onCha <ArrowDropDownIcon/> </div> </div> - {!displayYears && ( + {showArrowNav && ( <div className="vm-calendar-header-right"> <div className="vm-calendar-header-right__prev" diff --git a/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/MonthsList/MonthsList.tsx b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/MonthsList/MonthsList.tsx new file mode 100644 index 0000000000..d1a5ab97c8 --- /dev/null +++ b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/MonthsList/MonthsList.tsx @@ -0,0 +1,50 @@ +import React, { FC, useEffect, useMemo } from "preact/compat"; +import dayjs, { Dayjs } from "dayjs"; +import classNames from "classnames"; + +interface CalendarMonthsProps { + viewDate: Dayjs, + selectDate: Dayjs + + onChangeViewDate: (date: Dayjs) => void +} + +const MonthsList: FC<CalendarMonthsProps> = ({ viewDate, selectDate, onChangeViewDate }) => { + + const today = dayjs().format("MM"); + const currentMonths = useMemo(() => selectDate.format("MM"), [selectDate]); + const months: Dayjs[] = useMemo(() => { + return new Array(12).fill("").map((d, i) => dayjs(viewDate).month(i)); + }, [viewDate]); + + useEffect(() => { + const selectedEl = document.getElementById(`vm-calendar-year-${currentMonths}`); + if (!selectedEl) return; + selectedEl.scrollIntoView({ block: "center" }); + }, []); + + const createHandlerClick = (date: Dayjs) => () => { + onChangeViewDate(date); + }; + + return ( + <div className="vm-calendar-years"> + {months.map(m => ( + <div + className={classNames({ + "vm-calendar-years__year": true, + "vm-calendar-years__year_selected": m.format("MM") === currentMonths, + "vm-calendar-years__year_today": m.format("MM") === today + })} + id={`vm-calendar-year-${m.format("MM")}`} + key={m.format("MM")} + onClick={createHandlerClick(m)} + > + {m.format("MMMM")} + </div> + ))} + </div> + ); +}; + +export default MonthsList; diff --git a/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/YearsList/YearsList.tsx b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/YearsList/YearsList.tsx index 4adc77e4dd..db7a82b10c 100644 --- a/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/YearsList/YearsList.tsx +++ b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/YearsList/YearsList.tsx @@ -9,9 +9,10 @@ interface CalendarYearsProps { const YearsList: FC<CalendarYearsProps> = ({ viewDate, onChangeViewDate }) => { + const today = dayjs().format("YYYY"); const currentYear = useMemo(() => viewDate.format("YYYY"), [viewDate]); const years: Dayjs[] = useMemo(() => { - const displayYears = 206; + const displayYears = 18; const year = dayjs(); const startYear = year.subtract(displayYears/2, "year"); return new Array(displayYears).fill(startYear).map((d, i) => d.add(i, "year")); @@ -33,7 +34,8 @@ const YearsList: FC<CalendarYearsProps> = ({ viewDate, onChangeViewDate }) => { <div className={classNames({ "vm-calendar-years__year": true, - "vm-calendar-years__year_selected": y.format("YYYY") === currentYear + "vm-calendar-years__year_selected": y.format("YYYY") === currentYear, + "vm-calendar-years__year_today": y.format("YYYY") === today })} id={`vm-calendar-year-${y.format("YYYY")}`} key={y.format("YYYY")} diff --git a/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/style.scss b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/style.scss index 1a3c517f5a..f3b8f91ce4 100644 --- a/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/style.scss +++ b/app/vmui/packages/vmui/src/components/Main/DatePicker/Calendar/style.scss @@ -13,12 +13,6 @@ padding: 0 $padding-global; } - &__tabs { - margin: 0 0-$padding-global 0-$padding-global; - border-top: $border-divider; - margin-top: $padding-global; - } - &-header { display: grid; grid-template-columns: 1fr auto; @@ -88,14 +82,14 @@ &-body { display: grid; grid-template-columns: repeat(7, 32px); - grid-template-rows: repeat(6, 32px); + grid-template-rows: repeat(7, 32px); align-items: center; justify-content: center; gap: 2px; @media (max-width: 500px) { grid-template-columns: repeat(7, calc((100vw - ($padding-global * 2) - (6 * 2px))/7)); - grid-template-rows: repeat(6, calc((100vw - ($padding-global * 2) - (5 * 2px))/7)); + grid-template-rows: repeat(7, calc((100vw - ($padding-global * 2) - (6 * 2px))/7)); } &-cell { @@ -166,143 +160,9 @@ background-color: $color-primary; } } - } - } - &-time-picker { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - &-clock { - $clock-size: 230px; - $clock-offset: 42px; - - position: relative; - height: $clock-size; - width: $clock-size; - border-radius: 50%; - border: $border-divider; - box-shadow: $box-shadow; - box-sizing: content-box; - - &:after { - content: ''; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 6px; - height: 6px; - background-color: $color-primary; - border-radius: 50%; - } - - &__arrow { - position: absolute; - top: 0; - left: calc(($clock-size/2) - 1px); - width: 2px; - margin-top: $padding-small; - height: calc(($clock-size/2) - $padding-small); - background-color: $color-primary; - transform-origin: bottom; - transition: transform 200ms ease-in-out; - opacity: 0.8; - z-index: 0; - - &_offset { - margin-top: $clock-offset; - height: calc(($clock-size/2) - $clock-offset); - z-index: 2; - } - - &:after { - content: ''; - position: absolute; - top: 0; - left: 50%; - transform: translateX(-50%); - width: 30px; - height: 30px; - background-color: $color-primary; - border-radius: 50%; - } - } - - &__time { - display: flex; - align-items: flex-start; - justify-content: center; - text-align: center; - padding-top: $padding-small; - position: absolute; - top: 0; - width: 30px; - left: calc(($clock-size/2) - 15px); - height: calc($clock-size/2); - transform-origin: bottom; - cursor: pointer; - z-index: 1; - - &_hide { - display: none; - } - - &_offset { - padding: 0; - margin-top: $clock-offset; - height: calc(($clock-size/2) - $clock-offset); - z-index: 2; - } - - &:hover span { - background-color: rgba($color-black, 0.1); - } - - span { - position: relative; - display: grid; - align-items: center; - justify-content: center; - min-width: 30px; - min-height: 30px; - border-radius: 50%; - transform-origin: center; - transition: background-color 300ms ease; - } - } - } - - &-fields { - display: flex; - align-items: center; - justify-content: space-between; - margin-top: $padding-global; - - &_dark &__input { - border-color: $color-text-disabled; - } - - span { - margin: 0 $padding-small; - } - - &__input { - width: 64px; - height: 32px; - border: $border-divider; - border-radius: $border-radius-small; - font-size: $font-size-medium; - padding: 2px $padding-small; - text-align: center; - background-color: transparent; - color: $color-text; - - &:focus { - border-color: $color-primary; - } + &_today { + border: 1px solid $color-primary; } } } diff --git a/app/vmui/packages/vmui/src/components/Main/DatePicker/DatePicker.tsx b/app/vmui/packages/vmui/src/components/Main/DatePicker/DatePicker.tsx index 15c15e4911..92a61fee68 100644 --- a/app/vmui/packages/vmui/src/components/Main/DatePicker/DatePicker.tsx +++ b/app/vmui/packages/vmui/src/components/Main/DatePicker/DatePicker.tsx @@ -9,7 +9,6 @@ interface DatePickerProps { date: string | Date | Dayjs, targetRef: Ref<HTMLElement> format?: string - timepicker?: boolean label?: string onChange: (val: string) => void } @@ -18,12 +17,11 @@ const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(({ date, targetRef, format = DATE_TIME_FORMAT, - timepicker, onChange, label }, ref) => { const [openCalendar, setOpenCalendar] = useState(false); - const dateDayjs = useMemo(() => date ? dayjs.tz(date) : dayjs().tz(), [date]); + const dateDayjs = useMemo(() => dayjs(date).isValid() ? dayjs.tz(date) : dayjs().tz(), [date]); const { isMobile } = useDeviceDetect(); const toggleOpenCalendar = () => { @@ -35,8 +33,8 @@ const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(({ }; const handleChangeDate = (val: string) => { - if (!timepicker) handleCloseCalendar(); onChange(val); + handleCloseCalendar(); }; const handleKeyUp = (e: KeyboardEvent) => { @@ -71,9 +69,7 @@ const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(({ <Calendar date={dateDayjs} format={format} - timepicker={timepicker} onChange={handleChangeDate} - onClose={handleCloseCalendar} /> </div> </Popper> diff --git a/app/vmui/packages/vmui/src/components/Main/DatePicker/DateTimeInput/DateTimeInput.tsx b/app/vmui/packages/vmui/src/components/Main/DatePicker/DateTimeInput/DateTimeInput.tsx new file mode 100644 index 0000000000..6299c01442 --- /dev/null +++ b/app/vmui/packages/vmui/src/components/Main/DatePicker/DateTimeInput/DateTimeInput.tsx @@ -0,0 +1,127 @@ +import React, { FC, useEffect, useRef, useState } from "preact/compat"; +import { ChangeEvent, KeyboardEvent } from "react"; +import { CalendarIcon } from "../../Icons"; +import DatePicker from "../DatePicker"; +import Button from "../../Button/Button"; +import { DATE_TIME_FORMAT } from "../../../../constants/date"; +import InputMask from "react-input-mask"; +import dayjs from "dayjs"; +import classNames from "classnames"; +import "./style.scss"; + +const formatStringDate = (val: string) => { + return dayjs(val).isValid() ? dayjs.tz(val).format(DATE_TIME_FORMAT) : val; +}; + +interface DateTimeInputProps { + value?: string; + label: string; + pickerLabel: string; + pickerRef: React.RefObject<HTMLDivElement>; + onChange: (date: string) => void; + onEnter: () => void; +} + +const DateTimeInput: FC<DateTimeInputProps> = ({ + value = "", + label, + pickerLabel, + pickerRef, + onChange, + onEnter +}) => { + const wrapperRef = useRef<HTMLDivElement>(null); + const [inputRef, setInputRef] = useState<HTMLInputElement | null>(null); + + const [maskedValue, setMaskedValue] = useState(formatStringDate(value)); + const [focusToTime, setFocusToTime] = useState(false); + const [awaitChangeForEnter, setAwaitChangeForEnter] = useState(false); + const error = dayjs(maskedValue).isValid() ? "" : "Expected format: YYYY-MM-DD HH:mm:ss"; + + const handleMaskedChange = (e: ChangeEvent<HTMLInputElement>) => { + setMaskedValue(e.currentTarget.value); + }; + + const handleBlur = () => { + onChange(maskedValue); + }; + + const handleKeyUp = (e: KeyboardEvent) => { + if (e.key === "Enter") { + onChange(maskedValue); + setAwaitChangeForEnter(true); + } + }; + + const handleChangeDate = (val: string) => { + setMaskedValue(val); + setFocusToTime(true); + }; + + useEffect(() => { + const newValue = formatStringDate(value); + if (newValue !== maskedValue) { + setMaskedValue(newValue); + } + + if (awaitChangeForEnter) { + onEnter(); + setAwaitChangeForEnter(false); + } + }, [value]); + + useEffect(() => { + if (focusToTime && inputRef) { + inputRef.focus(); + inputRef.setSelectionRange(11, 11); + setFocusToTime(false); + } + }, [focusToTime]); + + return ( + <div + className={classNames({ + "vm-date-time-input": true, + "vm-date-time-input_error": error + })} + > + <label>{label}</label> + <InputMask + tabIndex={1} + inputRef={setInputRef} + mask="9999-99-99 99:99:99" + placeholder="YYYY-MM-DD HH:mm:ss" + value={maskedValue} + autoCapitalize={"none"} + inputMode={"numeric"} + maskChar={null} + onChange={handleMaskedChange} + onBlur={handleBlur} + onKeyUp={handleKeyUp} + /> + {error && ( + <span className="vm-date-time-input__error-text">{error}</span> + )} + <div + className="vm-date-time-input__icon" + ref={wrapperRef} + > + <Button + variant="text" + color="gray" + size="small" + startIcon={<CalendarIcon/>} + /> + </div> + <DatePicker + label={pickerLabel} + ref={pickerRef} + date={maskedValue} + onChange={handleChangeDate} + targetRef={wrapperRef} + /> + </div> + ); +}; + +export default DateTimeInput; diff --git a/app/vmui/packages/vmui/src/components/Main/DatePicker/DateTimeInput/style.scss b/app/vmui/packages/vmui/src/components/Main/DatePicker/DateTimeInput/style.scss new file mode 100644 index 0000000000..1e5cc23bee --- /dev/null +++ b/app/vmui/packages/vmui/src/components/Main/DatePicker/DateTimeInput/style.scss @@ -0,0 +1,61 @@ +@use "src/styles/variables" as *; + +.vm-date-time-input { + position: relative; + display: grid; + grid-template-columns: 1fr; + gap: $padding-small 0; + align-items: center; + justify-content: center; + margin-bottom: $padding-global; + cursor: pointer; + transition: color 200ms ease-in-out, border-bottom-color 300ms ease; + + &:hover input { + border-bottom-color: $color-primary; + } + + label { + grid-column: 1/3; + width: 100%; + font-size: $font-size-small; + color: $color-text-secondary; + user-select: none; + } + + &__icon { + position: absolute; + bottom: 2px; + right: 0; + } + + input { + padding: 0 0 $padding-small; + border-bottom: $border-divider; + border-top: none; + border-left: none; + border-right: none; + background: transparent; + color: $color-text; + + &:focus { + border-bottom-color: $color-primary; + } + } + + &_error input { + border-color: $color-error; + + &:focus { + border-bottom-color: $color-error; + } + } + + &__error-text { + color: $color-error; + font-size: $font-size-small; + position: absolute; + left: 0; + bottom: -$font-size-small; + } +} diff --git a/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/NestedNav.tsx b/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/NestedNav.tsx index 73d081ed6b..89528fcb38 100644 --- a/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/NestedNav.tsx +++ b/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/NestedNav.tsx @@ -1,4 +1,5 @@ -import React, { FC, useState } from "preact/compat"; +import React, { FC, useEffect, useRef, useState } from "preact/compat"; +import { MouseEvent } from "react"; import LineProgress from "../../Main/LineProgress/LineProgress"; import Trace from "../Trace"; import { ArrowDownIcon } from "../../Main/Icons"; @@ -6,6 +7,7 @@ import "./style.scss"; import classNames from "classnames"; import { useAppState } from "../../../state/common/StateContext"; import useDeviceDetect from "../../../hooks/useDeviceDetect"; +import Button from "../../Main/Button/Button"; interface RecursiveProps { trace: Trace; @@ -20,6 +22,23 @@ const NestedNav: FC<RecursiveProps> = ({ trace, totalMsec }) => { const { isDarkTheme } = useAppState(); const { isMobile } = useDeviceDetect(); const [openLevels, setOpenLevels] = useState({} as OpenLevels); + const messageRef = useRef<HTMLDivElement>(null); + + const [isExpanded, setIsExpanded] = useState(false); + const [showFullMessage, setShowFullMessage] = useState(false); + + useEffect(() => { + if (!messageRef.current) return; + const contentElement = messageRef.current; + const child = messageRef.current.children[0]; + const { height } = child.getBoundingClientRect(); + setIsExpanded(height > contentElement.clientHeight); + }, [trace]); + + const handleClickShowMore = (e: MouseEvent<HTMLButtonElement>) => { + e.stopPropagation(); + setShowFullMessage(prev => !prev); + }; const handleListClick = (level: number) => () => { setOpenLevels((prevState:OpenLevels) => { @@ -54,11 +73,28 @@ const NestedNav: FC<RecursiveProps> = ({ trace, totalMsec }) => { <div className="vm-nested-nav-header__progress"> <LineProgress value={progress}/> </div> - <div className="vm-nested-nav-header__message"> - {trace.message} + <div + className={classNames({ + "vm-nested-nav-header__message": true, + "vm-nested-nav-header__message_show-full": showFullMessage, + })} + ref={messageRef} + > + <span>{trace.message}</span> </div> - <div className="vm-nested-nav-header__duration"> - {`duration: ${trace.duration} ms`} + <div className="vm-nested-nav-header-bottom"> + <div className="vm-nested-nav-header-bottom__duration"> + {`duration: ${trace.duration} ms`} + </div> + {(isExpanded || showFullMessage) && ( + <Button + variant="text" + size="small" + onClick={handleClickShowMore} + > + {showFullMessage ? "Hide" : "Show more"} + </Button> + )} </div> </div> {openLevels[trace.idValue] && <div> diff --git a/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/style.scss b/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/style.scss index 932dffd017..05f35b6b61 100644 --- a/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/style.scss +++ b/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/style.scss @@ -43,12 +43,33 @@ } &__message { + position: relative; grid-column: 2; + line-height: 130%; + overflow: hidden; + text-overflow: ellipsis; + display: -moz-box; + -moz-box-orient: vertical; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + line-clamp: 3; + + &_show-full { + display: block; + overflow: visible; + } } - &__duration { + &-bottom { + display: grid; + grid-template-columns: 1fr auto; + align-items: center; grid-column: 2; - color: $color-text-secondary; + + &__duration { + color: $color-text-secondary; + } } } } diff --git a/app/vmui/packages/vmui/src/hooks/useDropzone.ts b/app/vmui/packages/vmui/src/hooks/useDropzone.ts new file mode 100644 index 0000000000..7395a53bd9 --- /dev/null +++ b/app/vmui/packages/vmui/src/hooks/useDropzone.ts @@ -0,0 +1,68 @@ +import { useState, useEffect } from "preact/compat"; + +const useDropzone = (node: HTMLElement | null): {dragging: boolean, files: File[]} => { + const [files, setFiles] = useState<File[]>([]); + const [dragging, setDragging] = useState(false); + + const handleAddFiles = (fileList: FileList) => { + const filesArray = Array.from(fileList || []); + setFiles(filesArray); + }; + + // handle drag events + const handleDrag = (e: DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + + if (e.type === "dragenter" || e.type === "dragover") { + setDragging(true); + } else if (e.type === "dragleave") { + setDragging(false); + } + }; + + // triggers when file is dropped + const handleDrop = (e: DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + + setDragging(false); + if (e?.dataTransfer?.files && e.dataTransfer.files[0]) { + handleAddFiles(e.dataTransfer.files); + } + }; + + // triggers when file is pasted + const handlePaste = (e: ClipboardEvent) => { + const items = e.clipboardData?.items; + if (!items) return; + const jsonFiles = Array.from(items) + .filter(item => item.type === "application/json") + .map(item => item.getAsFile()) + .filter(file => file !== null) as File[]; + setFiles(jsonFiles); + }; + + useEffect(() => { + node?.addEventListener("dragenter", handleDrag); + node?.addEventListener("dragleave", handleDrag); + node?.addEventListener("dragover", handleDrag); + node?.addEventListener("drop", handleDrop); + node?.addEventListener("paste", handlePaste); + + return () => { + node?.removeEventListener("dragenter", handleDrag); + node?.removeEventListener("dragleave", handleDrag); + node?.removeEventListener("dragover", handleDrag); + node?.removeEventListener("drop", handleDrop); + node?.removeEventListener("paste", handlePaste); + }; + }, [node]); + + return { + files, + dragging, + }; +}; + +export default useDropzone; diff --git a/app/vmui/packages/vmui/src/pages/TracePage/TraceUploadButtons/TraceUploadButtons.tsx b/app/vmui/packages/vmui/src/pages/TracePage/TraceUploadButtons/TraceUploadButtons.tsx new file mode 100644 index 0000000000..a4ed9606d7 --- /dev/null +++ b/app/vmui/packages/vmui/src/pages/TracePage/TraceUploadButtons/TraceUploadButtons.tsx @@ -0,0 +1,35 @@ +import React, { FC } from "preact/compat"; +import Button from "../../../components/Main/Button/Button"; +import Tooltip from "../../../components/Main/Tooltip/Tooltip"; +import { ChangeEvent } from "react"; + +interface TraceUploadButtonsProps { + onOpenModal: () => void; + onChange: (e: ChangeEvent<HTMLInputElement>) => void; +} + +const TraceUploadButtons: FC<TraceUploadButtonsProps> = ({ onOpenModal, onChange }) => ( + <div className="vm-trace-page-controls"> + <Button + variant="outlined" + onClick={onOpenModal} + > + Paste JSON + </Button> + <Tooltip title="The file must contain tracing information in JSON format"> + <Button> + Upload Files + <input + id="json" + type="file" + accept="application/json" + multiple + title=" " + onChange={onChange} + /> + </Button> + </Tooltip> + </div> +); + +export default TraceUploadButtons; diff --git a/app/vmui/packages/vmui/src/pages/TracePage/index.tsx b/app/vmui/packages/vmui/src/pages/TracePage/index.tsx index b8307fa23b..b3e6429a0b 100644 --- a/app/vmui/packages/vmui/src/pages/TracePage/index.tsx +++ b/app/vmui/packages/vmui/src/pages/TracePage/index.tsx @@ -2,7 +2,6 @@ import React, { FC, useEffect, useMemo, useState } from "preact/compat"; import { ChangeEvent } from "react"; import Trace from "../../components/TraceQuery/Trace"; import TracingsView from "../../components/TraceQuery/TracingsView"; -import Tooltip from "../../components/Main/Tooltip/Tooltip"; import Button from "../../components/Main/Button/Button"; import Alert from "../../components/Main/Alert/Alert"; import "./style.scss"; @@ -11,6 +10,8 @@ import Modal from "../../components/Main/Modal/Modal"; import JsonForm from "./JsonForm/JsonForm"; import { ErrorTypes } from "../../types"; import { useSearchParams } from "react-router-dom"; +import useDropzone from "../../hooks/useDropzone"; +import TraceUploadButtons from "./TraceUploadButtons/TraceUploadButtons"; const TracePage: FC = () => { const [openModal, setOpenModal] = useState(false); @@ -46,9 +47,7 @@ const TracePage: FC = () => { } }; - const handleChange = (e: ChangeEvent<HTMLInputElement>) => { - setErrors([]); - const files = Array.from(e.target.files || []); + const handleReadFiles = (files: File[]) => { files.map(f => { const reader = new FileReader(); const filename = f?.name || ""; @@ -58,6 +57,12 @@ const TracePage: FC = () => { }; reader.readAsText(f); }); + }; + + const handleChange = (e: ChangeEvent<HTMLInputElement>) => { + setErrors([]); + const files = Array.from(e.target.files || []); + handleReadFiles(files); e.target.value = ""; }; @@ -78,29 +83,12 @@ const TracePage: FC = () => { setSearchParams({}); }, []); - const UploadButtons = () => ( - <div className="vm-trace-page-controls"> - <Button - variant="outlined" - onClick={handleOpenModal} - > - Paste JSON - </Button> - <Tooltip title="The file must contain tracing information in JSON format"> - <Button> - Upload Files - <input - id="json" - type="file" - accept="application/json" - multiple - title=" " - onChange={handleChange} - /> - </Button> - </Tooltip> - </div> - ); + + const { files, dragging } = useDropzone(document.body); + + useEffect(() => { + handleReadFiles(files); + }, [files]); return ( <div className="vm-trace-page"> @@ -126,7 +114,12 @@ const TracePage: FC = () => { ))} </div> <div> - {hasTraces && <UploadButtons/>} + {hasTraces && ( + <TraceUploadButtons + onOpenModal={handleOpenModal} + onChange={handleChange} + /> + )} </div> </div> @@ -158,8 +151,13 @@ const TracePage: FC = () => { </a> {"\n"} Tracing graph will be displayed after file upload. + {"\n"} + Attach files by dragging & dropping, selecting or pasting them. </p> - <UploadButtons/> + <TraceUploadButtons + onOpenModal={handleOpenModal} + onChange={handleChange} + /> </div> )} @@ -177,6 +175,10 @@ const TracePage: FC = () => { /> </Modal> )} + + {dragging && ( + <div className="vm-trace-page__dropzone"/> + )} </div> ); }; diff --git a/app/vmui/packages/vmui/src/pages/TracePage/style.scss b/app/vmui/packages/vmui/src/pages/TracePage/style.scss index 56e05b0c63..33e8eba090 100644 --- a/app/vmui/packages/vmui/src/pages/TracePage/style.scss +++ b/app/vmui/packages/vmui/src/pages/TracePage/style.scss @@ -75,4 +75,19 @@ line-height: 1.8; } } + + &__dropzone { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + box-shadow: inset $color-primary 0 0 10px; + opacity: 0.5; + z-index: 100; + pointer-events: none; + } } diff --git a/dashboards/victoriametrics-cluster.json b/dashboards/victoriametrics-cluster.json index 2cd8e7225d..5bb50de31a 100644 --- a/dashboards/victoriametrics-cluster.json +++ b/dashboards/victoriametrics-cluster.json @@ -2746,7 +2746,7 @@ "type": "prometheus", "uid": "$ds" }, - "description": "The percentage of slow inserts comparing to total insertion rate during the last 5 minutes. \n\nThe less value is better. If percentage remains high (>10%) during extended periods of time, then it is likely more RAM is needed for optimal handling of the current number of active time series. \n\nIn general, VictoriaMetrics requires ~1KB or RAM per active time series, so it should be easy calculating the required amounts of RAM for the current workload according to capacity planning docs. But the resulting number may be far from the real number because the required amounts of memory depends on may other factors such as the number of labels per time series and the length of label values.", + "description": "The percentage of slow inserts comparing to total insertion rate during the last 5 minutes. \n\nThe less value is better. If percentage remains high (>10%) during extended periods of time, then it is likely more RAM is needed for optimal handling of the current number of active time series. \n\nIn general, VictoriaMetrics requires ~1KB or RAM per active time series, so it should be easy calculating the required amounts of RAM for the current workload according to capacity planning docs. But the resulting number may be far from the real number because the required amounts of memory depends on many other factors such as the number of labels per time series and the length of label values. See also https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3976#issuecomment-1476883183", "fieldConfig": { "defaults": { "color": { diff --git a/dashboards/victoriametrics.json b/dashboards/victoriametrics.json index 01068ca4e3..b64e344a75 100644 --- a/dashboards/victoriametrics.json +++ b/dashboards/victoriametrics.json @@ -2803,7 +2803,7 @@ "type": "prometheus", "uid": "$ds" }, - "description": "The percentage of slow inserts comparing to total insertion rate during the last 5 minutes. \n\nThe less value is better. If percentage remains high (>10%) during extended periods of time, then it is likely more RAM is needed for optimal handling of the current number of active time series. \n\nIn general, VictoriaMetrics requires ~1KB or RAM per active time series, so it should be easy calculating the required amounts of RAM for the current workload according to capacity planning docs. But the resulting number may be far from the real number because the required amounts of memory depends on may other factors such as the number of labels per time series and the length of label values.", + "description": "The percentage of slow inserts comparing to total insertion rate during the last 5 minutes. \n\nThe less value is better. If percentage remains high (>10%) during extended periods of time, then it is likely more RAM is needed for optimal handling of the current number of active time series. \n\nIn general, VictoriaMetrics requires ~1KB or RAM per active time series, so it should be easy calculating the required amounts of RAM for the current workload according to capacity planning docs. But the resulting number may be far from the real number because the required amounts of memory depends on many other factors such as the number of labels per time series and the length of label values. See also https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3976#issuecomment-1476883183", "fieldConfig": { "defaults": { "color": { diff --git a/deployment/docker/Makefile b/deployment/docker/Makefile index ab6d30fe53..3df5df6e90 100644 --- a/deployment/docker/Makefile +++ b/deployment/docker/Makefile @@ -105,13 +105,9 @@ app-via-docker-linux-arm: CGO_ENABLED=0 GOOS=linux GOARCH=arm $(MAKE) app-via-docker-goos-goarch app-via-docker-linux-arm64: -ifeq ($(APP_NAME),vmagent) - CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(MAKE) app-via-docker-goos-goarch -else APP_SUFFIX='-linux-arm64' \ DOCKER_OPTS='--env CGO_ENABLED=1 --env GOOS=linux --env GOARCH=arm64 --env CC=/opt/cross-builder/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc' \ $(MAKE) app-via-docker -endif app-via-docker-linux-ppc64le: CGO_ENABLED=0 GOOS=linux GOARCH=ppc64le $(MAKE) app-via-docker-goos-goarch @@ -132,7 +128,7 @@ app-via-docker-openbsd-amd64: CGO_ENABLED=0 GOOS=openbsd GOARCH=amd64 $(MAKE) app-via-docker-goos-goarch app-via-docker-windows-amd64: - APP_SUFFIX='-$(GOARCH)' \ + APP_SUFFIX='-amd64' \ DOCKER_OPTS='--env CGO_ENABLED=0 --env GOOS=windows --env GOARCH=amd64' \ $(MAKE) app-via-docker-windows @@ -162,12 +158,7 @@ package-via-docker-arm: GOARCH=arm $(MAKE) package-via-docker-goarch-nocgo package-via-docker-arm64: -ifeq ($(APP_NAME),vmagent) - GOARCH=arm64 $(MAKE) package-via-docker-goarch-nocgo -else $(MAKE) package-via-docker-goarch-arm64 -endif - package-via-docker-ppc64le: GOARCH=ppc64le $(MAKE) package-via-docker-goarch-nocgo diff --git a/deployment/docker/alerts-cluster.yml b/deployment/docker/alerts-cluster.yml index f1161a48b6..72dcd75d00 100644 --- a/deployment/docker/alerts-cluster.yml +++ b/deployment/docker/alerts-cluster.yml @@ -152,7 +152,8 @@ groups: dashboard: "http://localhost:3000/d/oS7Bi_0Wz?viewPanel=108" summary: "Percentage of slow inserts is more than 5% for the last 15m" description: "High rate of slow inserts may be a sign of resource exhaustion - for the current load. It is likely more RAM is needed for optimal handling of the current number of active time series." + for the current load. It is likely more RAM is needed for optimal handling of the current number of active time series. + See also https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3976#issuecomment-1476883183" - alert: ProcessNearFDLimits expr: (process_max_fds - process_open_fds) < 100 diff --git a/deployment/docker/alerts-health.yml b/deployment/docker/alerts-health.yml index 4668718e64..8686c10636 100644 --- a/deployment/docker/alerts-health.yml +++ b/deployment/docker/alerts-health.yml @@ -62,3 +62,14 @@ groups: summary: "Too many logs printed for job \"{{ $labels.job }}\" ({{ $labels.instance }})" description: "Logging rate for job \"{{ $labels.job }}\" ({{ $labels.instance }}) is {{ $value }} for last 15m.\n Worth to check logs for specific error messages." + + - alert: TooManyTSIDMisses + expr: sum(rate(vm_missing_tsids_for_metric_id_total[5m])) by (job, instance) > 0 + for: 10m + labels: + severity: critical + annotations: + summary: "Too many TSID misses for job \"{{ $labels.job }}\" ({{ $labels.instance }})" + description: "The rate of TSID misses during query lookups is too high for \"{{ $labels.job }}\" ({{ $labels.instance }}).\n + Make sure you're running VictoriaMetrics of v1.85.3 or higher.\n + Related issue https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3502" diff --git a/deployment/docker/alerts.yml b/deployment/docker/alerts.yml index 954f037b8f..49cb4317e4 100644 --- a/deployment/docker/alerts.yml +++ b/deployment/docker/alerts.yml @@ -132,7 +132,8 @@ groups: dashboard: "http://localhost:3000/d/wNf0q_kZk?viewPanel=68&var-instance={{ $labels.instance }}" summary: "Percentage of slow inserts is more than 5% on \"{{ $labels.instance }}\" for the last 15m" description: "High rate of slow inserts on \"{{ $labels.instance }}\" may be a sign of resource exhaustion - for the current load. It is likely more RAM is needed for optimal handling of the current number of active time series." + for the current load. It is likely more RAM is needed for optimal handling of the current number of active time series. + See also https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3976#issuecomment-1476883183" - alert: LabelsLimitExceededOnIngestion expr: sum(increase(vm_metrics_with_dropped_labels_total[5m])) by (instance) > 0 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index faa268393d..4d8d9f8fa3 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -15,7 +15,21 @@ The following tip changes can be tested by building VictoriaMetrics components f ## tip +**Update note: this release contains backwards-incompatible change in storage data format, +so the previous versions of VictoriaMetrics will exit with the `unexpected number of substrings in the part name` error when trying to run them on the data +created by v1.90.0 or newer versions. The solution is to upgrade to v1.90.0 or newer releases** + +* FEATURE: publish VictoriaMetrics binaries for Windows. See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3236), [this](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3821) and [this](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/70) issues. * FEATURE: log metrics with truncated labels if the length of label value in the ingested metric exceeds `-maxLabelValueLen`. This should simplify debugging for this case. +* FEATURE: [vmagent](https://docs.victoriametrics.com/vmagent.html): add support for [VictoriaMetrics remote write protocol](https://docs.victoriametrics.com/vmagent.html#victoriametrics-remote-write-protocol) when [sending / receiving data to / from Kafka](https://docs.victoriametrics.com/vmagent.html#kafka-integration). This protocol allows saving egress network bandwidth costs when sending data from `vmagent` to `Kafka` located in another datacenter or availability zone. See [this feature request](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1225). +* FEATURE: [vmagent](https://docs.victoriametrics.com/vmagent.html): add `--kafka.consumer.topic.concurrency` command-line flag. It controls the number of Kafka consumer workers to use by `vmagent`. It should eliminate the need to start multiple `vmagent` instances to improve data transfer rate. See [this feature request](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1957). +* FEATURE: [vmagent](https://docs.victoriametrics.com/vmagent.html): add support for [Kafka producer and consumer](https://docs.victoriametrics.com/vmagent.html#kafka-integration) on `arm64` machines. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2271). +* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): add support for drag'n'drop and paste from clipboard in the "Trace analyzer" page. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3971). +* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): hide messages longer than 3 lines in the trace. You can view the full message by clicking on the `show more` button. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3971). +* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): add the ability to manually input date and time when selecting a time range. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3968). +* FEATURE: [vmctl](https://docs.victoriametrics.com/vmctl.html): automatically disable progress bar when TTY isn't available. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3823). + +* BUGFIX: prevent from slow [snapshot creating](https://docs.victoriametrics.com/#how-to-work-with-snapshots) under high data ingestion rate. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3551). ## [v1.89.1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.89.1) diff --git a/docs/README.md b/docs/README.md index 0708b8aac8..7817851bdf 100644 --- a/docs/README.md +++ b/docs/README.md @@ -202,7 +202,7 @@ Changing scrape configuration is possible with text editor: vi $SNAP_DATA/var/snap/victoriametrics/current/etc/victoriametrics-scrape-config.yaml ``` -After changes were made, trigger config re-read with the command `curl 127.0.0.1:8248/-/reload`. +After changes were made, trigger config re-read with the command `curl 127.0.0.1:8428/-/reload`. ## Prometheus setup @@ -1448,12 +1448,14 @@ can be configured with the `-inmemoryDataFlushInterval` command-line flag (note In-memory parts are persisted to disk into `part` directories under the `<-storageDataPath>/data/small/YYYY_MM/` folder, where `YYYY_MM` is the month partition for the stored data. For example, `2022_11` is the partition for `parts` with [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) from `November 2022`. +Each partition directory contains `parts.json` file with the actual list of parts in the partition. -The `part` directory has the following name pattern: `rowsCount_blocksCount_minTimestamp_maxTimestamp`, where: +Every `part` directory contains `metadata.json` file with the following fields: -- `rowsCount` - the number of [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) stored in the part -- `blocksCount` - the number of blocks stored in the part (see details about blocks below) -- `minTimestamp` and `maxTimestamp` - minimum and maximum timestamps across raw samples stored in the part +- `RowsCount` - the number of [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) stored in the part +- `BlocksCount` - the number of blocks stored in the part (see details about blocks below) +- `MinTimestamp` and `MaxTimestamp` - minimum and maximum timestamps across raw samples stored in the part +- `MinDedupInterval` - the [deduplication interval](#deduplication) applied to the given part. Each `part` consists of `blocks` sorted by internal time series id (aka `TSID`). Each `block` contains up to 8K [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples), @@ -1475,9 +1477,8 @@ for fast block lookups, which belong to the given `TSID` and cover the given tim and [freeing up disk space for the deleted time series](#how-to-delete-time-series) are performed during the merge Newly added `parts` either successfully appear in the storage or fail to appear. -The newly added `parts` are being created in a temporary directory under `<-storageDataPath>/data/{small,big}/YYYY_MM/tmp` folder. -When the newly added `part` is fully written and [fsynced](https://man7.org/linux/man-pages/man2/fsync.2.html) -to a temporary directory, then it is atomically moved to the storage directory. +The newly added `part` is atomically registered in the `parts.json` file under the corresponding partition +after it is fully written and [fsynced](https://man7.org/linux/man-pages/man2/fsync.2.html) to the storage. Thanks to this alogrithm, storage never contains partially created parts, even if hardware power off occurrs in the middle of writing the `part` to disk - such incompletely written `parts` are automatically deleted on the next VictoriaMetrics start. @@ -1506,8 +1507,7 @@ Retention is configured with the `-retentionPeriod` command-line flag, which tak Data is split in per-month partitions inside `<-storageDataPath>/data/{small,big}` folders. Data partitions outside the configured retention are deleted on the first day of the new month. -Each partition consists of one or more data parts with the following name pattern `rowsCount_blocksCount_minTimestamp_maxTimestamp`. -Data parts outside of the configured retention are eventually deleted during +Each partition consists of one or more data parts. Data parts outside of the configured retention are eventually deleted during [background merge](https://medium.com/@valyala/how-victoriametrics-makes-instant-snapshots-for-multi-terabyte-time-series-data-e1f3fb0e0282). The maximum disk space usage for a given `-retentionPeriod` is going to be (`-retentionPeriod` + 1) months. diff --git a/docs/Single-server-VictoriaMetrics.md b/docs/Single-server-VictoriaMetrics.md index 2ec27014c4..625d678988 100644 --- a/docs/Single-server-VictoriaMetrics.md +++ b/docs/Single-server-VictoriaMetrics.md @@ -205,7 +205,7 @@ Changing scrape configuration is possible with text editor: vi $SNAP_DATA/var/snap/victoriametrics/current/etc/victoriametrics-scrape-config.yaml ``` -After changes were made, trigger config re-read with the command `curl 127.0.0.1:8248/-/reload`. +After changes were made, trigger config re-read with the command `curl 127.0.0.1:8428/-/reload`. ## Prometheus setup @@ -1451,12 +1451,14 @@ can be configured with the `-inmemoryDataFlushInterval` command-line flag (note In-memory parts are persisted to disk into `part` directories under the `<-storageDataPath>/data/small/YYYY_MM/` folder, where `YYYY_MM` is the month partition for the stored data. For example, `2022_11` is the partition for `parts` with [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) from `November 2022`. +Each partition directory contains `parts.json` file with the actual list of parts in the partition. -The `part` directory has the following name pattern: `rowsCount_blocksCount_minTimestamp_maxTimestamp`, where: +Every `part` directory contains `metadata.json` file with the following fields: -- `rowsCount` - the number of [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) stored in the part -- `blocksCount` - the number of blocks stored in the part (see details about blocks below) -- `minTimestamp` and `maxTimestamp` - minimum and maximum timestamps across raw samples stored in the part +- `RowsCount` - the number of [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) stored in the part +- `BlocksCount` - the number of blocks stored in the part (see details about blocks below) +- `MinTimestamp` and `MaxTimestamp` - minimum and maximum timestamps across raw samples stored in the part +- `MinDedupInterval` - the [deduplication interval](#deduplication) applied to the given part. Each `part` consists of `blocks` sorted by internal time series id (aka `TSID`). Each `block` contains up to 8K [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples), @@ -1478,9 +1480,8 @@ for fast block lookups, which belong to the given `TSID` and cover the given tim and [freeing up disk space for the deleted time series](#how-to-delete-time-series) are performed during the merge Newly added `parts` either successfully appear in the storage or fail to appear. -The newly added `parts` are being created in a temporary directory under `<-storageDataPath>/data/{small,big}/YYYY_MM/tmp` folder. -When the newly added `part` is fully written and [fsynced](https://man7.org/linux/man-pages/man2/fsync.2.html) -to a temporary directory, then it is atomically moved to the storage directory. +The newly added `part` is atomically registered in the `parts.json` file under the corresponding partition +after it is fully written and [fsynced](https://man7.org/linux/man-pages/man2/fsync.2.html) to the storage. Thanks to this alogrithm, storage never contains partially created parts, even if hardware power off occurrs in the middle of writing the `part` to disk - such incompletely written `parts` are automatically deleted on the next VictoriaMetrics start. @@ -1509,8 +1510,7 @@ Retention is configured with the `-retentionPeriod` command-line flag, which tak Data is split in per-month partitions inside `<-storageDataPath>/data/{small,big}` folders. Data partitions outside the configured retention are deleted on the first day of the new month. -Each partition consists of one or more data parts with the following name pattern `rowsCount_blocksCount_minTimestamp_maxTimestamp`. -Data parts outside of the configured retention are eventually deleted during +Each partition consists of one or more data parts. Data parts outside of the configured retention are eventually deleted during [background merge](https://medium.com/@valyala/how-victoriametrics-makes-instant-snapshots-for-multi-terabyte-time-series-data-e1f3fb0e0282). The maximum disk space usage for a given `-retentionPeriod` is going to be (`-retentionPeriod` + 1) months. diff --git a/docs/Troubleshooting.md b/docs/Troubleshooting.md index b6030bf244..c7a369a972 100644 --- a/docs/Troubleshooting.md +++ b/docs/Troubleshooting.md @@ -186,6 +186,11 @@ There are the following most commons reasons for slow data ingestion in Victoria Issues like this are very hard to catch via [official Grafana dashboard for cluster version of VictoriaMetrics](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#monitoring) and proper diagnosis would require checking resource usage on the instances where VictoriaMetrics runs. +6. If you see `TooHighSlowInsertsRate` [alert](https://docs.victoriametrics.com/#monitoring) when single-node VictoriaMetrics or `vmstorage` has enough + free CPU and RAM, then increase `-cacheExpireDuration` command-line flag at single-node VictoriaMetrics or at `vmstorage` to the value, + which exceeds the interval between ingested samples for the same time series (aka `scrape_interval`). + See [this comment](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3976#issuecomment-1476883183) for more details. + ## Slow queries Some queries may take more time and resources (CPU, RAM, network bandwidth) than others. diff --git a/docs/guides/grafana-vmgateway-openid-configuration.md b/docs/guides/grafana-vmgateway-openid-configuration.md index 3e8fa79433..898a87b2a0 100644 --- a/docs/guides/grafana-vmgateway-openid-configuration.md +++ b/docs/guides/grafana-vmgateway-openid-configuration.md @@ -34,38 +34,41 @@ See details about all supported options in the [vmgateway documentation](https:/ [Keycloak](https://www.keycloak.org/) is an open source identity service that can be used to issue JWT tokens. 1. Log in with admin credentials to your Keycloak instance -2. Go to `Clients` -> `Create`. - Use `OpenID Connect` as `Client Type`. - Specify `grafana` as `Client ID`. - Click `Next`. +2. Go to `Clients` -> `Create`.<br> + Use `OpenID Connect` as `Client Type`.<br> + Specify `grafana` as `Client ID`.<br> + Click `Next`.<br> <img src="grafana-vmgateway-openid-configuration/create-client-1.png" width="800"> -3. Enable `Client authentication`. - Enable `Authorization`. - <img src="grafana-vmgateway-openid-configuration/create-client-2.png" width="800"> - Click `Next`. -4. Add Grafana URL as `Valid Redirect URIs`. For example, `http://localhost:3000/`. - <img src="grafana-vmgateway-openid-configuration/create-client-3.png" width="800"> - Click `Save`. -5. Go to `Clients` -> `grafana` -> `Credentials`. - <img src="grafana-vmgateway-openid-configuration/client-secret.png" width="800"> - Copy the value of `Client secret`. It will be used later in Grafana configuration. -6. Go to `Clients` -> `grafana` -> `Client scopes`. - Click at `grafana-dedicated` -> `Add mapper`. - <img src="grafana-vmgateway-openid-configuration/create-mapper-1.png" width="800"> - <img src="grafana-vmgateway-openid-configuration/create-mapper-2.png" width="800"> - Configure the mapper as follows - - `Mapper Type` as `User Attribute`. +3. Enable `Client authentication`.<br> + Enable `Authorization`.<br> + <img src="grafana-vmgateway-openid-configuration/create-client-2.png" width="800"><br> + Click `Next`.<br> +4. Add Grafana URL as `Root URL`. For example, `http://localhost:3000/`.<br> + <img src="grafana-vmgateway-openid-configuration/create-client-3.png" width="800"><br> + Click `Save`.<br> +5. Go to `Clients` -> `grafana` -> `Credentials`.<br> + <img src="grafana-vmgateway-openid-configuration/client-secret.png" width="800"><br> + Copy the value of `Client secret`. It will be used later in Grafana configuration.<br> +6. Go to `Clients` -> `grafana` -> `Client scopes`.<br> + Click at `grafana-dedicated` -> `Add mapper` -> `By configuration` -> `User attribute`.<br> + <img src="grafana-vmgateway-openid-configuration/create-mapper-1.png" width="800"><br> + <img src="grafana-vmgateway-openid-configuration/create-mapper-2.png" width="800"><br> + Configure the mapper as follows<br> - `Name` as `vm_access`. - `Token Claim Name` as `vm_access`. - `User Attribute` as `vm_access`. - `Claim JSON Type` as `JSON`. - Enable `Add to ID token` and `Add to access token`. - <img src="grafana-vmgateway-openid-configuration/create-mapper-3.png" width="800"> - Click `Save`. -7. Go to `Users` -> select user to configure claims -> `Attributes`. - Specify `vm_access` as `Key`. - Specify `{"tenant_id" : {"account_id": 0, "project_id": 0 }}` as `Value`. - <img src="grafana-vmgateway-openid-configuration/user-attributes.png" width="800"> + Enable `Add to ID token` and `Add to access token`.<br> + + <img src="grafana-vmgateway-openid-configuration/create-mapper-3.png" width="800"><br> + Click `Save`.<br> +7. Go to `Users` -> select user to configure claims -> `Attributes`.<br> + Specify `vm_access` as `Key`.<br> + For the purpose of this example, we will use 2 users:<br> + - for the first user we will specify `{"tenant_id" : {"account_id": 0, "project_id": 0 },"extra_labels":{ "team": "admin" }}` as `Value`. + - for the second user we will specify `{"tenant_id" : {"account_id": 0, "project_id": 1 },"extra_labels":{ "team": "dev" }}` as `Value`. + <br> + <img src="grafana-vmgateway-openid-configuration/user-attributes.png" width="800"><br> Click `Save`. ## Configure grafana @@ -187,8 +190,146 @@ URL should point to the vmgateway instance. You can also use VictoriaMetrics [Grafana datasource](https://github.com/VictoriaMetrics/grafana-datasource) plugin. See installation instructions [here](https://github.com/VictoriaMetrics/grafana-datasource#installation). -Enable `Forward OAuth identity` flag. +Enable `Forward OAuth identity` flag.<br> <img src="grafana-vmgateway-openid-configuration/grafana-ds.png" width="800"> Now you can use Grafana to query metrics from the specified tenant. Users with `vm_access` claim will be able to query metrics from the specified tenant. + +## Test multi-tenant access + +For the test purpose we will setup the following services as [docker-compose](https://docs.docker.com/compose/) manifest: +- Grafana +- Keycloak +- vmagent to generate test metrics +- VictoriaMetrics cluster +- vmgateway configured to work in cluster mode +- VictoriaMetrics single node +- vmgateway configured to work in single node mode + +```yaml +version: '3' + +services: + keycloak: + image: quay.io/keycloak/keycloak:21.0 + command: + - start-dev + ports: + - 3001:8080 + environment: + KEYCLOAK_ADMIN: admin + KEYCLOAK_ADMIN_PASSWORD: change_me + + grafana: + image: grafana/grafana-oss:9.4.3 + network_mode: host + volumes: + - ./grafana.ini:/etc/grafana/grafana.ini + - grafana_data:/var/lib/grafana/ + + vmsingle: + image: victoriametrics/victoria-metrics:v1.89.1 + command: + - -httpListenAddr=0.0.0.0:8429 + + vmstorage: + image: victoriametrics/vmstorage:v1.89.1-cluster + + vminsert: + image: victoriametrics/vminsert:v1.89.1-cluster + command: + - -storageNode=vmstorage:8400 + - -httpListenAddr=0.0.0.0:8480 + + vmselect: + image: victoriametrics/vmselect:v1.89.1-cluster + command: + - -storageNode=vmstorage:8401 + - -httpListenAddr=0.0.0.0:8481 + + vmagent: + image: victoriametrics/vmagent:v1.89.1 + volumes: + - ./scrape.yaml:/etc/vmagent/config.yaml + command: + - -promscrape.config=/etc/vmagent/config.yaml + - -remoteWrite.url=http://vminsert:8480/insert/0/prometheus/api/v1/write + - -remoteWrite.url=http://vmsingle:8429/api/v1/write + + vmgateway-cluster: + image: victoriametrics/vmgateway:v1.89.1-enterprise + ports: + - 8431:8431 + command: + - -eula + - -enable.auth=true + - -clusterMode=true + - -write.url=http://vminsert:8480 + - -read.url=http://vmselect:8481 + - -httpListenAddr=0.0.0.0:8431 + - -auth.oidcDiscoveryEndpoints=http://keycloak:8080/realms/master/.well-known/openid-configuration + + vmgateway-single: + image: victoriametrics/vmgateway:v1.89.1-enterprise + ports: + - 8432:8431 + command: + - -eula + - -enable.auth=true + - -write.url=http://vmsingle:8429 + - -read.url=http://vmsingle:8429 + - -httpListenAddr=0.0.0.0:8431 + - -auth.oidcDiscoveryEndpoints=http://keycloak:8080/realms/master/.well-known/openid-configuration + +volumes: + grafana_data: +``` + +For the test purpose vmagent will be configured to scrape metrics from the following targets(`scrape.yaml` contents): + +```yaml +scrape_configs: + - job_name: stat + metric_relabel_configs: + - if: "{instance =~ 'vmgateway.*'}" + action: replace + target_label: team + replacement: admin + - if: "{instance =~ 'localhost.*'}" + action: replace + target_label: team + replacement: dev + static_configs: + - targets: + - localhost:8429 + - vmgateway-single:8431 + - vmgateway-cluster:8431 +``` + +Relabeling rules will add the `team` label to the scraped metrics in order to test multi-tenant access. +Metrics from `localhost` will be labeled with `team=dev` and metrics from `vmgateway` will be labeled with `team=admin`. + +vmagent will write data into VictoriaMetrics single-node and cluster(with tenant `0:0`). + +Grafana datasources configuration will be the following: + +<img src="grafana-vmgateway-openid-configuration/grafana-test-datasources.png" width="800"> + +Let's login as user with `team=dev` labels limitation set via claims. + +Using `vmgateway-cluster` results into `No data` response as proxied request will go to tenant `0:1`. +Since vmagent is only configured to write to `0:0` `No data` is an expected response. + +<img src="grafana-vmgateway-openid-configuration/dev-cluster-nodata.png" width="800"> + +Switching to `vmgateway-single` does have data. Note that it is limited to metrics with `team=dev` label. + +<img src="grafana-vmgateway-openid-configuration/dev-single-data.png" width="800"> + +Now lets login as user with `team=admin`. + +Both cluster and single node datasources now return metrics for `team=admin`. + +<img src="grafana-vmgateway-openid-configuration/admin-cluster-data.png" width="800"> +<img src="grafana-vmgateway-openid-configuration/admin-single-data.png" width="800"> diff --git a/docs/guides/grafana-vmgateway-openid-configuration/admin-cluster-data.png b/docs/guides/grafana-vmgateway-openid-configuration/admin-cluster-data.png new file mode 100644 index 0000000000..d19bbe1ae5 Binary files /dev/null and b/docs/guides/grafana-vmgateway-openid-configuration/admin-cluster-data.png differ diff --git a/docs/guides/grafana-vmgateway-openid-configuration/admin-single-data.png b/docs/guides/grafana-vmgateway-openid-configuration/admin-single-data.png new file mode 100644 index 0000000000..8e6630392a Binary files /dev/null and b/docs/guides/grafana-vmgateway-openid-configuration/admin-single-data.png differ diff --git a/docs/guides/grafana-vmgateway-openid-configuration/dev-cluster-nodata.png b/docs/guides/grafana-vmgateway-openid-configuration/dev-cluster-nodata.png new file mode 100644 index 0000000000..f3fb73610b Binary files /dev/null and b/docs/guides/grafana-vmgateway-openid-configuration/dev-cluster-nodata.png differ diff --git a/docs/guides/grafana-vmgateway-openid-configuration/dev-single-data.png b/docs/guides/grafana-vmgateway-openid-configuration/dev-single-data.png new file mode 100644 index 0000000000..5e7ab67537 Binary files /dev/null and b/docs/guides/grafana-vmgateway-openid-configuration/dev-single-data.png differ diff --git a/docs/guides/grafana-vmgateway-openid-configuration/grafana-test-datasources.png b/docs/guides/grafana-vmgateway-openid-configuration/grafana-test-datasources.png new file mode 100644 index 0000000000..7086b8435c Binary files /dev/null and b/docs/guides/grafana-vmgateway-openid-configuration/grafana-test-datasources.png differ diff --git a/docs/guides/grafana-vmgateway-openid-configuration/user-attributes.png b/docs/guides/grafana-vmgateway-openid-configuration/user-attributes.png index 7fe30f344e..c86e222fd0 100644 Binary files a/docs/guides/grafana-vmgateway-openid-configuration/user-attributes.png and b/docs/guides/grafana-vmgateway-openid-configuration/user-attributes.png differ diff --git a/docs/managed-victoriametrics/alerting-vmalert-managed-victoria-metrics.md b/docs/managed-victoriametrics/alerting-vmalert-managed-victoria-metrics.md index f5212a2459..c05fc1b9ed 100644 --- a/docs/managed-victoriametrics/alerting-vmalert-managed-victoria-metrics.md +++ b/docs/managed-victoriametrics/alerting-vmalert-managed-victoria-metrics.md @@ -17,7 +17,7 @@ This guide explains the different ways in which you can use vmalert in conjuncti * [vmalert](https://docs.victoriametrics.com/vmalert.html) is installed. You can obtain it by building it from [source](https://docs.victoriametrics.com/vmalert.html#quickstart), downloading it from the [GitHub releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases), or using the [docker image](https://hub.docker.com/r/victoriametrics/vmalert) for the container ecosystem (such as docker, k8s, etc.). * [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) is installed. -* You have a [single or cluster](https://docs.victoriametrics.com/managed-victoriametrics/quickstart.html#creating-instance) deployment in [Managed VictoriaMetrics](https://docs.victoriametrics.com/managed-victoriametrics/overview.html). +* You have a [single or cluster](https://docs.victoriametrics.com/managed-victoriametrics/quickstart.html#creating-deployment) deployment in [Managed VictoriaMetrics](https://docs.victoriametrics.com/managed-victoriametrics/overview.html). * If you are using helm, add the [VictoriaMetrics helm chart](https://github.com/VictoriaMetrics/helm-charts/tree/master/charts/victoria-metrics-alert#how-to-install) repository to your helm repositories. This step is optional. * If you are using [vmoperator](https://docs.victoriametrics.com/operator/quick-start.html#quick-start), make sure that it and its CRDs are installed. This step is also optional. @@ -49,7 +49,7 @@ groups: To use vmalert with Managed VictoriaMetrics, you must create a read/write token, or use an existing one. The token must have write access to ingest recording rules, ALERTS and ALERTS_FOR_STATE metrics, and read access for rules evaluation. -For instructions on how to create tokens, please refer to this section of the [documentation](https://docs.victoriametrics.com/managed-victoriametrics/quickstart.html#access). +For instructions on how to create tokens, please refer to this section of the [documentation](https://docs.victoriametrics.com/managed-victoriametrics/quickstart.html#deployment-access). #### Single-Node diff --git a/docs/managed-victoriametrics/quickstart.md b/docs/managed-victoriametrics/quickstart.md index 3d51ae8533..e3d0f213ee 100644 --- a/docs/managed-victoriametrics/quickstart.md +++ b/docs/managed-victoriametrics/quickstart.md @@ -7,46 +7,67 @@ menu: parent: "managed" weight: 2 --- -# Quick Start +# Quick Start in Managed VictoriaMetrics + Managed VictoriaMetrics - is a database-as-a-service platform, where users can run the VictoriaMetrics that they know and love on AWS without the need to perform typical DevOps tasks such as proper configuration, monitoring, logs collection, access protection, software updates, backups, etc. +The document covers the following topics +1. [How to register](#how-to-register) +2. [How to restore password](#how-to-restore-password) +3. [Creating deployment](#creating-deployment) +4. [Deployment access](#deployment-access) +5. [Modifying deployment](#modifying-deployment) + ## How to register -Managed VictoriaMetrics id distributed via [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-4tbfq5icmbmyc). +Managed VictoriaMetrics id distributed via <a href="https://aws.amazon.com/marketplace/pp/prodview-4tbfq5icmbmyc" target="_blank">AWS Marketplace</a>. +Please note, that initial registering is only possible via link from <a href="https://aws.amazon.com/marketplace/pp/prodview-4tbfq5icmbmyc" target="_blank">AWS Marketplace</a>. To start using the service, one should have already registered AWS account -and visit [VictoriaMetrics product page](https://aws.amazon.com/marketplace/pp/prodview-4tbfq5icmbmyc). +and visit <a href="https://aws.amazon.com/marketplace/pp/prodview-4tbfq5icmbmyc" target="_blank">VictoriaMetrics product page</a>. +On that page click on `View purchase option` and you will be redirected to login page or to subscribe page. -### Amazon Web Services +<p> + <img src="quickstart_aws-purchase-click.png" width="800"> +</p> -Managed VictoriaMetrics id distributed via <a href="https://aws.amazon.com/marketplace/pp/prodview-4tbfq5icmbmyc">AWS Marketplace</a>. -To start using the service, one should have already registered AWS account. Then, go to the +Then, go to the <a href="https://aws.amazon.com/marketplace/pp/prodview-4tbfq5icmbmyc">VictoriaMetrics product page</a> -and click "Continue to Subscribe" button: +and click `Continue to Subscribe` button: <p> <img src="quickstart_continue-subscribe.png" width="800"> </p> -Then on product page press the "Subscribe" button: +Then on product page press the `Subscribe` button: <p> <img src="quickstart_subscribe.png" width="800"> </p> -You'll be taken to <a href="https://dbaas.victoriametrics.com/signIn">Managed VictoriaMetrics auth page</a>: +After that action you will be able to see success message where you should click `Set up your account` button: <p> - <img src="quickstart_signin.png" width="800"> + <img src="quickstart_setup-your-account.png" width="800"> +</p> + +You'll be taken to <a href="https://dbaas.victoriametrics.com//signUp">Managed VictoriaMetrics sign up page</a>: + +<p> + <img src="quickstart_signup-page.png" width="800"> </p> Choose to register manually or via Google Auth. -Please note, that initial registering is only possible via link from <a href="https://aws.amazon.com/marketplace/pp/prodview-4tbfq5icmbmyc" target="_blank">AWS Marketplace</a>. +If it was chosen manually registration, confirmation email wil be sent to your email address. -See what to do after registering in Quick Start guide. +<p> + <img src="quickstart_email-confirm.png" width="800"> +</p> + +After Google Auth process will redirect automatically to the main page. ## How to restore password @@ -66,15 +87,9 @@ If you forgot password, it can be restored in the following way: 3. Follow the instruction sent to your email in order to gain access to your VictoriaMetrics cloud account: -``` -Victoria Metrics Cloud password restore -Follow https://dbaas.victoriametrics.com/login_by_link/{id} the link in order to restore access to Victoria Metrics Cloud. -Access link expires once you login successfully or after 30min. -You can change your password after login https://dbaas.victoriametrics.com/profile profile -Please, ignore this email if you didn't init this action on Victoria Metrics Cloud. - -In case of questions contact our support support@victoriametrics.com -``` +<p> + <img src="quickstart_password-restore-email.png" width="800"> +</p> 4. Navigate to the Profile page by clicking the corresponding link at the top right corner: @@ -89,41 +104,48 @@ In case of questions contact our support support@victoriametrics.com </p> -## Creating instance +## Creating deployment -Instances is a page where user can list and manage VictoriaMetrics single-node instances. -To create an instance click on the button `Create`: +Deployments is a page where user can list and manage VictoriaMetrics deployments. +To create an deployment click on the button `Create Deployment` button or link in the message: <p> - <img src="quickstart_instances.png" width="800"> + <img src="quickstart_deployments.png" width="800"> </p> -In the opened form, choose parameters of the new instance such as: +In the opened form, choose parameters of the new deployment such as: -* `Instance type` from preset of AWS instances (you always can change the type later); -* `Region` and `Zone` where instance should run; -* Desired `disk size` for storing metrics (you always can expand disk size later); +* `Deployment type` from preset single or cluster deployments; +* `Region` where deployment should run; +* Desired `storage capacity` for storing metrics (you always can expand disk size later); * `Retention` period for stored metrics. +* `Size` of your deployment <p> - <img src="quickstart_instance-create.png" width="800"> + <img src="quickstart_deployment-create.png" width="800"> </p> -Once created, instance will remain for a short period of time in `PROVISIONING` status +When all parameters are entered, click on the `Create` button, and deployment will be created + +Once created, deployment will remain for a short period of time in `PROVISIONING` status while the hardware spins-up, just wait for a couple of minutes and reload the page. You'll also be notified via email once provisioning is finished: <p> - <img src="quickstart_instance-provisioning.png" width="800"> + <img src="quickstart_deployment-created.png" width="800"> </p> -## Access +<p> + <img src="quickstart_deployments-running.png" width="800"> +</p> + +## Deployment access After transition from `PROVISIONING` to `RUNNING` state, VictoriaMetrics is fully operational -and ready to accept write or read requests. But first, click on instance name to get the access token: +and ready to accept write or read requests. But first, click on deployment name to get the access token: <p> - <img src="quickstart_tokens.png" width="800"> + <img src="quickstart_deployment-access-token.png" width="800"> </p> Access tokens are used in token-based authentication to allow an application to access the VictoriaMetrics API. @@ -131,13 +153,36 @@ Supported token types are `Read-Only`, `Write-Only` and `Read-Write`. Click on t to see usage examples: <p> - <img src="quickstart_token-usage.png" width="800"> + <img src="quickstart_read-token.png" width="800"> +</p> + +<p> + <img src="quickstart_write-token.png" width="800"> </p> Follow usage example in order to configure access to VictoriaMetrics for your Prometheus, Grafana or any other software. -## Modifying +## Modifying deployment -Remember, you always can add, remove or modify existing instances by changing their type or increasing the disk space. -However, such an update requires an instance restart and may result into a couple of minutes of downtime. +Remember, you always can add, remove or modify existing deployment by changing their size or any parameters on the +update form. + +<p> + <img src="quickstart_update-deployment.png" width="800"> +</p> + +There is another options present to customise you deployment setup. +To discover them click on `Customise` button + +<p> + <img src="quickstart_customise-deployment.png" width="800"> +</p> + +In that section additional params can be set: + +* `Deduplication` defines interval when deployment leaves a single raw sample with the biggest timestamp per each discrete interval; +* `Maintenance Window` when deployment should start upgrade process if needed; +* `Settings` allow to define different flags for the deployment. + +However, such an update requires an deployment restart and may result into a couple of minutes of downtime. diff --git a/docs/managed-victoriametrics/quickstart_aws-purchase-click.png b/docs/managed-victoriametrics/quickstart_aws-purchase-click.png new file mode 100644 index 0000000000..b490e52999 Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_aws-purchase-click.png differ diff --git a/docs/managed-victoriametrics/quickstart_continue-subscribe.png b/docs/managed-victoriametrics/quickstart_continue-subscribe.png index f2bd6638b5..fc9eb249d1 100644 Binary files a/docs/managed-victoriametrics/quickstart_continue-subscribe.png and b/docs/managed-victoriametrics/quickstart_continue-subscribe.png differ diff --git a/docs/managed-victoriametrics/quickstart_customise-deployment.png b/docs/managed-victoriametrics/quickstart_customise-deployment.png new file mode 100644 index 0000000000..21a4450b2e Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_customise-deployment.png differ diff --git a/docs/managed-victoriametrics/quickstart_deployment-access-token.png b/docs/managed-victoriametrics/quickstart_deployment-access-token.png new file mode 100644 index 0000000000..5750603595 Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_deployment-access-token.png differ diff --git a/docs/managed-victoriametrics/quickstart_deployment-create.png b/docs/managed-victoriametrics/quickstart_deployment-create.png new file mode 100644 index 0000000000..3575aeab1b Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_deployment-create.png differ diff --git a/docs/managed-victoriametrics/quickstart_deployment-created.png b/docs/managed-victoriametrics/quickstart_deployment-created.png new file mode 100644 index 0000000000..1e58b3f677 Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_deployment-created.png differ diff --git a/docs/managed-victoriametrics/quickstart_deployments-running.png b/docs/managed-victoriametrics/quickstart_deployments-running.png new file mode 100644 index 0000000000..d60ea7a2b4 Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_deployments-running.png differ diff --git a/docs/managed-victoriametrics/quickstart_deployments.png b/docs/managed-victoriametrics/quickstart_deployments.png new file mode 100644 index 0000000000..68099b9944 Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_deployments.png differ diff --git a/docs/managed-victoriametrics/quickstart_email-confirm.png b/docs/managed-victoriametrics/quickstart_email-confirm.png new file mode 100644 index 0000000000..7b415ca4d9 Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_email-confirm.png differ diff --git a/docs/managed-victoriametrics/quickstart_instance-create.png b/docs/managed-victoriametrics/quickstart_instance-create.png deleted file mode 100644 index 3afb68288b..0000000000 Binary files a/docs/managed-victoriametrics/quickstart_instance-create.png and /dev/null differ diff --git a/docs/managed-victoriametrics/quickstart_instance-provisioning.png b/docs/managed-victoriametrics/quickstart_instance-provisioning.png deleted file mode 100644 index f05c961051..0000000000 Binary files a/docs/managed-victoriametrics/quickstart_instance-provisioning.png and /dev/null differ diff --git a/docs/managed-victoriametrics/quickstart_instances.png b/docs/managed-victoriametrics/quickstart_instances.png deleted file mode 100644 index 3af5ab20e7..0000000000 Binary files a/docs/managed-victoriametrics/quickstart_instances.png and /dev/null differ diff --git a/docs/managed-victoriametrics/quickstart_password-restore-email.png b/docs/managed-victoriametrics/quickstart_password-restore-email.png new file mode 100644 index 0000000000..370a770bd4 Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_password-restore-email.png differ diff --git a/docs/managed-victoriametrics/quickstart_read-token.png b/docs/managed-victoriametrics/quickstart_read-token.png new file mode 100644 index 0000000000..7dca2c586e Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_read-token.png differ diff --git a/docs/managed-victoriametrics/quickstart_setup-your-account.png b/docs/managed-victoriametrics/quickstart_setup-your-account.png new file mode 100644 index 0000000000..dc19b95a9f Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_setup-your-account.png differ diff --git a/docs/managed-victoriametrics/quickstart_signup-page.png b/docs/managed-victoriametrics/quickstart_signup-page.png new file mode 100644 index 0000000000..8f6c7d1bee Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_signup-page.png differ diff --git a/docs/managed-victoriametrics/quickstart_subscribe.png b/docs/managed-victoriametrics/quickstart_subscribe.png index 6405bbf24e..f96c26b429 100644 Binary files a/docs/managed-victoriametrics/quickstart_subscribe.png and b/docs/managed-victoriametrics/quickstart_subscribe.png differ diff --git a/docs/managed-victoriametrics/quickstart_token-usage.png b/docs/managed-victoriametrics/quickstart_token-usage.png deleted file mode 100644 index 3ba2e5543e..0000000000 Binary files a/docs/managed-victoriametrics/quickstart_token-usage.png and /dev/null differ diff --git a/docs/managed-victoriametrics/quickstart_tokens.png b/docs/managed-victoriametrics/quickstart_tokens.png deleted file mode 100644 index 8629263152..0000000000 Binary files a/docs/managed-victoriametrics/quickstart_tokens.png and /dev/null differ diff --git a/docs/managed-victoriametrics/quickstart_update-deployment.png b/docs/managed-victoriametrics/quickstart_update-deployment.png new file mode 100644 index 0000000000..8b047e98d2 Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_update-deployment.png differ diff --git a/docs/managed-victoriametrics/quickstart_write-token.png b/docs/managed-victoriametrics/quickstart_write-token.png new file mode 100644 index 0000000000..26ed937c3e Binary files /dev/null and b/docs/managed-victoriametrics/quickstart_write-token.png differ diff --git a/docs/operator/api.md b/docs/operator/api.md index 87b72749a0..50b306d723 100644 --- a/docs/operator/api.md +++ b/docs/operator/api.md @@ -65,6 +65,8 @@ This Document documents the types introduced by the VictoriaMetrics to be consum * [HTTPAuth](#httpauth) * [ServiceSpec](#servicespec) * [StorageSpec](#storagespec) +* [StreamAggrConfig](#streamaggrconfig) +* [StreamAggrRule](#streamaggrrule) * [VMAlert](#vmalert) * [VMAlertDatasourceSpec](#vmalertdatasourcespec) * [VMAlertList](#vmalertlist) @@ -709,6 +711,7 @@ VMAgentRemoteWriteSpec defines the remote storage configuration for VmAgent | tlsConfig | TLSConfig describes tls configuration for remote write target | *[TLSConfig](#tlsconfig) | false | | sendTimeout | Timeout for sending a single block of data to -remoteWrite.url (default 1m0s) | *string | false | | headers | Headers allow configuring custom http headers Must be in form of semicolon separated header with value e.g. headerName: headerValue vmagent supports since 1.79.0 version | []string | false | +| streamAggrConfig | StreamAggrConfig defines stream aggregation configuration for VMAgent for -remoteWrite.url | *[StreamAggrConfig](#streamaggrconfig) | false | [Back to TOC](#table-of-contents) @@ -744,6 +747,7 @@ VMAgentSpec defines the desired state of VMAgent | dnsPolicy | DNSPolicy set DNS policy for the pod | [v1.DNSPolicy](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#pod-v1-core) | false | | topologySpreadConstraints | TopologySpreadConstraints embedded kubernetes pod configuration option, controls how pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ | [][v1.TopologySpreadConstraint](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/) | false | | scrapeInterval | ScrapeInterval defines how often scrape targets by default | string | false | +| scrapeTimeout | ScrapeTimeout defines global timeout for targets scrape | string | false | | aPIServerConfig | APIServerConfig allows specifying a host and auth methods to access apiserver. If left empty, VMAgent is assumed to run inside of the cluster and will discover API servers automatically and use the pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. | *[APIServerConfig](#apiserverconfig) | false | | overrideHonorLabels | OverrideHonorLabels if set to true overrides all user configured honor_labels. If HonorLabels is set in ServiceScrape or PodScrape to true, this overrides honor_labels to false. | bool | false | | overrideHonorTimestamps | OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. | bool | false | @@ -958,6 +962,34 @@ StorageSpec defines the configured storage for a group Prometheus servers. If ne [Back to TOC](#table-of-contents) +## StreamAggrConfig + +StreamAggrConfig defines the stream aggregation config + +| Field | Description | Scheme | Required | +| ----- | ----------- | ------ | -------- | +| rules | Stream aggregation rules | [][StreamAggrRule](#streamaggrrule) | true | +| keepInput | Allows writing both raw and aggregate data | bool | false | +| dedupInterval | Allows setting different de-duplication intervals per each configured remote storage | string | false | + +[Back to TOC](#table-of-contents) + +## StreamAggrRule + +StreamAggrRule defines the rule in stream aggregation config + +| Field | Description | Scheme | Required | +| ----- | ----------- | ------ | -------- | +| match | Match is a label selector for filtering time series for the given selector.\n\nIf the match isn't set, then all the input time series are processed. | string | false | +| interval | Interval is the interval between aggregations. | string | true | +| outputs | Outputs is a list of output aggregate functions to produce.\n\nThe following names are allowed:\n\n- total - aggregates input counters - increase - counts the increase over input counters - count_series - counts the input series - count_samples - counts the input samples - sum_samples - sums the input samples - last - the last biggest sample value - min - the minimum sample value - max - the maximum sample value - avg - the average value across all the samples - stddev - standard deviation across all the samples - stdvar - standard variance across all the samples - histogram_bucket - creates VictoriaMetrics histogram for input samples - quantiles(phi1, ..., phiN) - quantiles' estimation for phi in the range [0..1]\n\nThe output time series will have the following names:\n\n input_name:aggr_<interval>_<output> | []string | true | +| by | By is an optional list of labels for grouping input series.\n\nSee also Without.\n\nIf neither By nor Without are set, then the Outputs are calculated individually per each input time series. | []string | false | +| without | Without is an optional list of labels, which must be excluded when grouping input series.\n\nSee also By.\n\nIf neither By nor Without are set, then the Outputs are calculated individually per each input time series. | []string | false | +| input_relabel_configs | InputRelabelConfigs is an optional relabeling rules, which are applied on the input before aggregation. | [][RelabelConfig](#relabelconfig) | false | +| output_relabel_configs | OutputRelabelConfigs is an optional relabeling rules, which are applied on the aggregated output before being sent to remote storage. | [][RelabelConfig](#relabelconfig) | false | + +[Back to TOC](#table-of-contents) + ## VMAlert VMAlert executes a list of given alerting or recording rules against configured address. @@ -1198,6 +1230,7 @@ VMSingleSpec defines the desired state of VMSingle | nodeSelector | NodeSelector Define which Nodes the Pods are scheduled on. | map[string]string | false | | terminationGracePeriodSeconds | TerminationGracePeriodSeconds period for container graceful termination | *int64 | false | | readinessGates | ReadinessGates defines pod readiness gates | []v1.PodReadinessGate | false | +| streamAggrConfig | StreamAggrConfig defines stream aggregation configuration for VMSingle | *[StreamAggrConfig](#streamaggrconfig) | false | [Back to TOC](#table-of-contents) diff --git a/docs/operator/vars.md b/docs/operator/vars.md index d712326115..0978566eed 100644 --- a/docs/operator/vars.md +++ b/docs/operator/vars.md @@ -9,17 +9,18 @@ menu: aliases: - /operator/vars.html --- -# Auto Generated vars for package config - updated at Fri Jan 21 15:57:41 UTC 2022 +# Auto Generated vars for package config +updated at Wed Mar 15 16:18:54 UTC 2023 | varible name | variable default value | variable required | variable description | | --- | --- | --- | --- | | VM_USECUSTOMCONFIGRELOADER | false | false | enables custom config reloader for vmauth and vmagent,it should speed-up config reloading process. | -| VM_CUSTOMCONFIGRELOADERIMAGE | victoriametrics/operator:config-reloader-0.1.0 | false | - | +| VM_CONTAINERREGISTRY | - | false | container registry name prefix, e.g. docker.io | +| VM_CUSTOMCONFIGRELOADERIMAGE | victoriametrics/operator:config-reloader-v0.27.0 | false | - | | VM_PSPAUTOCREATEENABLED | true | false | - | | VM_VMALERTDEFAULT_IMAGE | victoriametrics/vmalert | false | - | -| VM_VMALERTDEFAULT_VERSION | v1.72.0 | false | - | +| VM_VMALERTDEFAULT_VERSION | v1.85.3 | false | - | | VM_VMALERTDEFAULT_PORT | 8080 | false | - | | VM_VMALERTDEFAULT_USEDEFAULTRESOURCES | true | false | - | | VM_VMALERTDEFAULT_RESOURCE_LIMIT_MEM | 500Mi | false | - | @@ -30,8 +31,8 @@ aliases: | VM_VMALERTDEFAULT_CONFIGRELOADERMEMORY | 25Mi | false | - | | VM_VMALERTDEFAULT_CONFIGRELOADIMAGE | jimmidyson/configmap-reload:v0.3.0 | false | - | | VM_VMAGENTDEFAULT_IMAGE | victoriametrics/vmagent | false | - | -| VM_VMAGENTDEFAULT_VERSION | v1.72.0 | false | - | -| VM_VMAGENTDEFAULT_CONFIGRELOADIMAGE | quay.io/prometheus-operator/prometheus-config-reloader:v0.48.1 | false | - | +| VM_VMAGENTDEFAULT_VERSION | v1.85.3 | false | - | +| VM_VMAGENTDEFAULT_CONFIGRELOADIMAGE | quay.io/prometheus-operator/prometheus-config-reloader:v0.58.0 | false | - | | VM_VMAGENTDEFAULT_PORT | 8429 | false | - | | VM_VMAGENTDEFAULT_USEDEFAULTRESOURCES | true | false | - | | VM_VMAGENTDEFAULT_RESOURCE_LIMIT_MEM | 500Mi | false | - | @@ -41,7 +42,7 @@ aliases: | VM_VMAGENTDEFAULT_CONFIGRELOADERCPU | 100m | false | - | | VM_VMAGENTDEFAULT_CONFIGRELOADERMEMORY | 25Mi | false | - | | VM_VMSINGLEDEFAULT_IMAGE | victoriametrics/victoria-metrics | false | - | -| VM_VMSINGLEDEFAULT_VERSION | v1.72.0 | false | - | +| VM_VMSINGLEDEFAULT_VERSION | v1.85.3 | false | - | | VM_VMSINGLEDEFAULT_PORT | 8429 | false | - | | VM_VMSINGLEDEFAULT_USEDEFAULTRESOURCES | true | false | - | | VM_VMSINGLEDEFAULT_RESOURCE_LIMIT_MEM | 1500Mi | false | - | @@ -52,14 +53,14 @@ aliases: | VM_VMSINGLEDEFAULT_CONFIGRELOADERMEMORY | 25Mi | false | - | | VM_VMCLUSTERDEFAULT_USEDEFAULTRESOURCES | true | false | - | | VM_VMCLUSTERDEFAULT_VMSELECTDEFAULT_IMAGE | victoriametrics/vmselect | false | - | -| VM_VMCLUSTERDEFAULT_VMSELECTDEFAULT_VERSION | v1.72.0-cluster | false | - | +| VM_VMCLUSTERDEFAULT_VMSELECTDEFAULT_VERSION | v1.85.3-cluster | false | - | | VM_VMCLUSTERDEFAULT_VMSELECTDEFAULT_PORT | 8481 | false | - | | VM_VMCLUSTERDEFAULT_VMSELECTDEFAULT_RESOURCE_LIMIT_MEM | 1000Mi | false | - | | VM_VMCLUSTERDEFAULT_VMSELECTDEFAULT_RESOURCE_LIMIT_CPU | 500m | false | - | | VM_VMCLUSTERDEFAULT_VMSELECTDEFAULT_RESOURCE_REQUEST_MEM | 500Mi | false | - | | VM_VMCLUSTERDEFAULT_VMSELECTDEFAULT_RESOURCE_REQUEST_CPU | 100m | false | - | | VM_VMCLUSTERDEFAULT_VMSTORAGEDEFAULT_IMAGE | victoriametrics/vmstorage | false | - | -| VM_VMCLUSTERDEFAULT_VMSTORAGEDEFAULT_VERSION | v1.72.0-cluster | false | - | +| VM_VMCLUSTERDEFAULT_VMSTORAGEDEFAULT_VERSION | v1.85.3-cluster | false | - | | VM_VMCLUSTERDEFAULT_VMSTORAGEDEFAULT_VMINSERTPORT | 8400 | false | - | | VM_VMCLUSTERDEFAULT_VMSTORAGEDEFAULT_VMSELECTPORT | 8401 | false | - | | VM_VMCLUSTERDEFAULT_VMSTORAGEDEFAULT_PORT | 8482 | false | - | @@ -68,7 +69,7 @@ aliases: | VM_VMCLUSTERDEFAULT_VMSTORAGEDEFAULT_RESOURCE_REQUEST_MEM | 500Mi | false | - | | VM_VMCLUSTERDEFAULT_VMSTORAGEDEFAULT_RESOURCE_REQUEST_CPU | 250m | false | - | | VM_VMCLUSTERDEFAULT_VMINSERTDEFAULT_IMAGE | victoriametrics/vminsert | false | - | -| VM_VMCLUSTERDEFAULT_VMINSERTDEFAULT_VERSION | v1.72.0-cluster | false | - | +| VM_VMCLUSTERDEFAULT_VMINSERTDEFAULT_VERSION | v1.85.3-cluster | false | - | | VM_VMCLUSTERDEFAULT_VMINSERTDEFAULT_PORT | 8480 | false | - | | VM_VMCLUSTERDEFAULT_VMINSERTDEFAULT_RESOURCE_LIMIT_MEM | 500Mi | false | - | | VM_VMCLUSTERDEFAULT_VMINSERTDEFAULT_RESOURCE_LIMIT_CPU | 500m | false | - | @@ -78,7 +79,7 @@ aliases: | VM_VMALERTMANAGER_CONFIGRELOADERCPU | 100m | false | - | | VM_VMALERTMANAGER_CONFIGRELOADERMEMORY | 25Mi | false | - | | VM_VMALERTMANAGER_ALERTMANAGERDEFAULTBASEIMAGE | prom/alertmanager | false | - | -| VM_VMALERTMANAGER_ALERTMANAGERVERSION | v0.22.2 | false | - | +| VM_VMALERTMANAGER_ALERTMANAGERVERSION | v0.24.0 | false | - | | VM_VMALERTMANAGER_LOCALHOST | 127.0.0.1 | false | - | | VM_VMALERTMANAGER_USEDEFAULTRESOURCES | true | false | - | | VM_VMALERTMANAGER_RESOURCE_LIMIT_MEM | 256Mi | false | - | @@ -87,7 +88,7 @@ aliases: | VM_VMALERTMANAGER_RESOURCE_REQUEST_CPU | 30m | false | - | | VM_DISABLESELFSERVICESCRAPECREATION | false | false | - | | VM_VMBACKUP_IMAGE | victoriametrics/vmbackupmanager | false | - | -| VM_VMBACKUP_VERSION | v1.72.0-enterprise | false | - | +| VM_VMBACKUP_VERSION | v1.85.3-enterprise | false | - | | VM_VMBACKUP_PORT | 8300 | false | - | | VM_VMBACKUP_USEDEFAULTRESOURCES | true | false | - | | VM_VMBACKUP_RESOURCE_LIMIT_MEM | 500Mi | false | - | @@ -96,7 +97,7 @@ aliases: | VM_VMBACKUP_RESOURCE_REQUEST_CPU | 150m | false | - | | VM_VMBACKUP_LOGLEVEL | INFO | false | - | | VM_VMAUTHDEFAULT_IMAGE | victoriametrics/vmauth | false | - | -| VM_VMAUTHDEFAULT_VERSION | v1.72.0 | false | - | +| VM_VMAUTHDEFAULT_VERSION | v1.85.3 | false | - | | VM_VMAUTHDEFAULT_CONFIGRELOADIMAGE | quay.io/prometheus-operator/prometheus-config-reloader:v0.48.1 | false | - | | VM_VMAUTHDEFAULT_PORT | 8427 | false | - | | VM_VMAUTHDEFAULT_USEDEFAULTRESOURCES | true | false | - | @@ -110,7 +111,13 @@ aliases: | VM_ENABLEDPROMETHEUSCONVERTER_SERVICESCRAPE | true | false | - | | VM_ENABLEDPROMETHEUSCONVERTER_PROMETHEUSRULE | true | false | - | | VM_ENABLEDPROMETHEUSCONVERTER_PROBE | true | false | - | +| VM_ENABLEDPROMETHEUSCONVERTER_ALERTMANAGERCONFIG | true | false | - | +| VM_FILTERCHILDLABELPREFIXES | - | false | - | +| VM_FILTERCHILDANNOTATIONPREFIXES | - | false | - | +| VM_PROMETHEUSCONVERTERADDARGOCDIGNOREANNOTATIONS | false | false | adds compare-options and sync-options for prometheus objects converted by operatorit helps to properly use converter with ArgoCD | | VM_ENABLEDPROMETHEUSCONVERTEROWNERREFERENCES | false | false | - | +| VM_FILTERPROMETHEUSCONVERTERLABELPREFIXES | - | false | allows filtering for converted labels, labels with matched prefix will be ignored | +| VM_FILTERPROMETHEUSCONVERTERANNOTATIONPREFIXES | - | false | allows filtering for converted annotations, annotations with matched prefix will be ignored | | VM_HOST | 0.0.0.0 | false | - | | VM_LISTENADDRESS | 0.0.0.0 | false | - | | VM_DEFAULTLABELS | managed-by=vm-operator | false | - | @@ -119,3 +126,4 @@ aliases: | VM_PODWAITREADYTIMEOUT | 80s | false | - | | VM_PODWAITREADYINTERVALCHECK | 5s | false | - | | VM_PODWAITREADYINITDELAY | 10s | false | - | +| VM_FORCERESYNCINTERVAL | 60s | false | configures force resync interval for VMAgent, VMAlert and VMAlertmanager | diff --git a/go.mod b/go.mod index a82ebd3ad1..e15a123027 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/VictoriaMetrics/VictoriaMetrics go 1.19 require ( - cloud.google.com/go/storage v1.29.0 + cloud.google.com/go/storage v1.30.0 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 github.com/VictoriaMetrics/fastcache v1.12.1 @@ -24,7 +24,7 @@ require ( github.com/go-kit/kit v0.12.0 github.com/gogo/protobuf v1.3.2 github.com/golang/snappy v0.0.4 - github.com/googleapis/gax-go/v2 v2.7.1 + github.com/googleapis/gax-go/v2 v2.8.0 github.com/influxdata/influxdb v1.11.0 github.com/klauspost/compress v1.16.3 github.com/mattn/go-colorable v0.1.13 // indirect @@ -42,7 +42,7 @@ require ( golang.org/x/net v0.8.0 golang.org/x/oauth2 v0.6.0 golang.org/x/sys v0.6.0 - google.golang.org/api v0.112.0 + google.golang.org/api v0.113.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -50,11 +50,11 @@ require ( cloud.google.com/go v0.110.0 // indirect cloud.google.com/go/compute v1.18.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.12.0 // indirect + cloud.google.com/go/iam v0.13.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect github.com/VividCortex/ewma v1.2.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect - github.com/aws/aws-sdk-go v1.44.221 // indirect + github.com/aws/aws-sdk-go v1.44.222 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.13.17 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.0 // indirect @@ -107,7 +107,7 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/goleak v1.2.1 // indirect - golang.org/x/exp v0.0.0-20230314191032-db074128a8ec // indirect + golang.org/x/exp v0.0.0-20230315142452-642cacee5cc0 // indirect golang.org/x/sync v0.1.0 // indirect golang.org/x/text v0.8.0 // indirect golang.org/x/time v0.3.0 // indirect diff --git a/go.sum b/go.sum index a869650ec4..d79bffcb95 100644 --- a/go.sum +++ b/go.sum @@ -27,8 +27,8 @@ cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGB cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= 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/iam v0.12.0 h1:DRtTY29b75ciH6Ov1PHb4/iat2CLCvrOm40Q0a6DFpE= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= 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= @@ -39,8 +39,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo 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.29.0 h1:6weCgzRvMg7lzuUurI4697AqIRPU1SvzHhynwpW31jI= -cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storage v1.30.0 h1:g1yrbxAWOrvg/594228pETWkOi00MLTrOWfh56veU5o= +cloud.google.com/go/storage v1.30.0/go.mod h1:xAVretHSROm1BQX4IIsoVgJqw0LqOyX+I/O2GzRAzdE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 h1:rTnT/Jrcm+figWlYz4Ixzt0SJVR2cMC8lvZcimipiEY= @@ -86,8 +86,8 @@ github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.44.221 h1:yndn4uvLolKXPoXIwKHhO5XtwlTnJfXLBKXs84C5+hQ= -github.com/aws/aws-sdk-go v1.44.221/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.222 h1:hagcC+MrGo60DKEbX0g6/ge4pIj7vBbsIb+vrhA/54I= +github.com/aws/aws-sdk-go v1.44.222/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v1.17.6 h1:Y773UK7OBqhzi5VDXMi1zVGsoj+CVHs2eaC2bDsLwi0= github.com/aws/aws-sdk-go-v2 v1.17.6/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs= @@ -270,8 +270,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9 github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= 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/gax-go/v2 v2.7.1 h1:gF4c0zjUP2H/s/hEGyLA3I0fA2ZWjzYiONAD6cvPr8A= -github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/gophercloud/gophercloud v1.1.1 h1:MuGyqbSxiuVBqkPZ3+Nhbytk1xZxhmfCB2Rg1cJWFWM= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd h1:PpuIBO5P3e9hpqBD0O/HjhShYuM6XE0i/lbE6J94kww= @@ -481,8 +481,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 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-20230314191032-db074128a8ec h1:pAv+d8BM2JNnNctsLJ6nnZ6NqXT8N4+eauvZSb3P0I0= -golang.org/x/exp v0.0.0-20230314191032-db074128a8ec/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230315142452-642cacee5cc0 h1:pVgRXcIictcr+lBQIFeiwuwtDIs4eL21OuM9nyAADmo= +golang.org/x/exp v0.0.0-20230315142452-642cacee5cc0/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= 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= @@ -693,8 +693,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M 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.112.0 h1:iDmzvZ4C086R3+en4nSyIf07HlQKMOX1Xx2dmia/+KQ= -google.golang.org/api v0.112.0/go.mod h1:737UfWHNsOq4F3REUTmb+GN9pugkgNLCayLTfoIKpPc= +google.golang.org/api v0.113.0 h1:3zLZyS9hgne8yoXUFy871yWdQcA2tA6wp59aaCT6Cp4= +google.golang.org/api v0.113.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= 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= diff --git a/lib/fs/fs.go b/lib/fs/fs.go index f346b79539..d438ddc90d 100644 --- a/lib/fs/fs.go +++ b/lib/fs/fs.go @@ -247,21 +247,16 @@ var atomicDirRemoveCounter = uint64(time.Now().UnixNano()) // // Such directories may be left on unclean shutdown during MustRemoveDirAtomic call. func MustRemoveTemporaryDirs(dir string) { - d, err := os.Open(dir) + des, err := os.ReadDir(dir) if err != nil { - logger.Panicf("FATAL: cannot open dir: %s", err) + logger.Panicf("FATAL: cannot read dir: %s", err) } - defer MustClose(d) - fis, err := d.Readdir(-1) - if err != nil { - logger.Panicf("FATAL: cannot read dir %q: %s", dir, err) - } - for _, fi := range fis { - if !IsDirOrSymlink(fi) { + for _, de := range des { + if !IsDirOrSymlink(de) { // Skip non-directories continue } - dirName := fi.Name() + dirName := de.Name() if IsScheduledForRemoval(dirName) { fullPath := dir + "/" + dirName MustRemoveAll(fullPath) @@ -276,26 +271,16 @@ func HardLinkFiles(srcDir, dstDir string) error { return fmt.Errorf("cannot create dstDir=%q: %w", dstDir, err) } - d, err := os.Open(srcDir) + des, err := os.ReadDir(srcDir) if err != nil { - return fmt.Errorf("cannot open srcDir: %w", err) + return fmt.Errorf("cannot read files in scrDir: %w", err) } - defer func() { - if err := d.Close(); err != nil { - logger.Panicf("FATAL: cannot close %q: %s", srcDir, err) - } - }() - - fis, err := d.Readdir(-1) - if err != nil { - return fmt.Errorf("cannot read files in scrDir=%q: %w", srcDir, err) - } - for _, fi := range fis { - if IsDirOrSymlink(fi) { + for _, de := range des { + if IsDirOrSymlink(de) { // Skip directories. continue } - fn := fi.Name() + fn := de.Name() srcPath := srcDir + "/" + fn dstPath := dstDir + "/" + fn if err := os.Link(srcPath, dstPath); err != nil { @@ -307,9 +292,9 @@ func HardLinkFiles(srcDir, dstDir string) error { return nil } -// IsDirOrSymlink returns true if fi is directory or symlink. -func IsDirOrSymlink(fi os.FileInfo) bool { - return fi.IsDir() || (fi.Mode()&os.ModeSymlink == os.ModeSymlink) +// IsDirOrSymlink returns true if de is directory or symlink. +func IsDirOrSymlink(de os.DirEntry) bool { + return de.IsDir() || (de.Type()&os.ModeSymlink == os.ModeSymlink) } // SymlinkRelative creates relative symlink for srcPath in dstPath. diff --git a/lib/mergeset/block_stream_reader.go b/lib/mergeset/block_stream_reader.go index 528a89017f..08d4733e07 100644 --- a/lib/mergeset/block_stream_reader.go +++ b/lib/mergeset/block_stream_reader.go @@ -143,8 +143,8 @@ func (bsr *blockStreamReader) InitFromFilePart(path string) error { path = filepath.Clean(path) - if err := bsr.ph.ParseFromPath(path); err != nil { - return fmt.Errorf("cannot parse partHeader data from %q: %w", path, err) + if err := bsr.ph.ReadMetadata(path); err != nil { + return fmt.Errorf("cannot read metadata from %q: %w", path, err) } metaindexPath := path + "/metaindex.bin" diff --git a/lib/mergeset/part.go b/lib/mergeset/part.go index f8f45f1b88..090b3f1165 100644 --- a/lib/mergeset/part.go +++ b/lib/mergeset/part.go @@ -2,7 +2,6 @@ package mergeset import ( "fmt" - "path/filepath" "sync" "unsafe" @@ -68,11 +67,9 @@ type part struct { } func openFilePart(path string) (*part, error) { - path = filepath.Clean(path) - var ph partHeader - if err := ph.ParseFromPath(path); err != nil { - return nil, fmt.Errorf("cannot parse path to part: %w", err) + if err := ph.ReadMetadata(path); err != nil { + return nil, fmt.Errorf("cannot read part metadata: %w", err) } metaindexPath := path + "/metaindex.bin" diff --git a/lib/mergeset/part_header.go b/lib/mergeset/part_header.go index 43a5ea43b3..4489d947c5 100644 --- a/lib/mergeset/part_header.go +++ b/lib/mergeset/part_header.go @@ -5,11 +5,9 @@ import ( "encoding/json" "fmt" "os" - "path/filepath" - "strconv" - "strings" "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" ) type partHeader struct { @@ -79,50 +77,10 @@ func (ph *partHeader) CopyFrom(src *partHeader) { ph.lastItem = append(ph.lastItem[:0], src.lastItem...) } -func (ph *partHeader) ParseFromPath(partPath string) error { +func (ph *partHeader) ReadMetadata(partPath string) error { ph.Reset() - partPath = filepath.Clean(partPath) - - // Extract encoded part name. - n := strings.LastIndexByte(partPath, '/') - if n < 0 { - return fmt.Errorf("cannot find encoded part name in the path %q", partPath) - } - partName := partPath[n+1:] - - // PartName must have the following form: - // itemsCount_blocksCount_Garbage - a := strings.Split(partName, "_") - if len(a) != 3 { - return fmt.Errorf("unexpected number of substrings in the part name %q: got %d; want %d", partName, len(a), 3) - } - - // Read itemsCount from partName. - itemsCount, err := strconv.ParseUint(a[0], 10, 64) - if err != nil { - return fmt.Errorf("cannot parse itemsCount from partName %q: %w", partName, err) - } - ph.itemsCount = itemsCount - if ph.itemsCount <= 0 { - return fmt.Errorf("part %q cannot contain zero items", partPath) - } - - // Read blocksCount from partName. - blocksCount, err := strconv.ParseUint(a[1], 10, 64) - if err != nil { - return fmt.Errorf("cannot parse blocksCount from partName %q: %w", partName, err) - } - ph.blocksCount = blocksCount - if ph.blocksCount <= 0 { - return fmt.Errorf("part %q cannot contain zero blocks", partPath) - } - if ph.blocksCount > ph.itemsCount { - return fmt.Errorf("the number of blocks cannot exceed the number of items in the part %q; got blocksCount=%d, itemsCount=%d", - partPath, ph.blocksCount, ph.itemsCount) - } - - // Read other ph fields from metadata. + // Read ph fields from metadata. metadataPath := partPath + "/metadata.json" metadata, err := os.ReadFile(metadataPath) if err != nil { @@ -133,12 +91,20 @@ func (ph *partHeader) ParseFromPath(partPath string) error { if err := json.Unmarshal(metadata, &phj); err != nil { return fmt.Errorf("cannot parse %q: %w", metadataPath, err) } - if ph.itemsCount != phj.ItemsCount { - return fmt.Errorf("invalid ItemsCount in %q; got %d; want %d", metadataPath, phj.ItemsCount, ph.itemsCount) + + if phj.ItemsCount <= 0 { + return fmt.Errorf("part %q cannot contain zero items", partPath) } - if ph.blocksCount != phj.BlocksCount { - return fmt.Errorf("invalid BlocksCount in %q; got %d; want %d", metadataPath, phj.BlocksCount, ph.blocksCount) + ph.itemsCount = phj.ItemsCount + + if phj.BlocksCount <= 0 { + return fmt.Errorf("part %q cannot contain zero blocks", partPath) } + if phj.BlocksCount > phj.ItemsCount { + return fmt.Errorf("the number of blocks cannot exceed the number of items in the part %q; got blocksCount=%d, itemsCount=%d", + partPath, phj.BlocksCount, phj.ItemsCount) + } + ph.blocksCount = phj.BlocksCount ph.firstItem = append(ph.firstItem[:0], phj.FirstItem...) ph.lastItem = append(ph.lastItem[:0], phj.LastItem...) @@ -146,11 +112,6 @@ func (ph *partHeader) ParseFromPath(partPath string) error { return nil } -func (ph *partHeader) Path(tablePath string, suffix uint64) string { - tablePath = filepath.Clean(tablePath) - return fmt.Sprintf("%s/%d_%d_%016X", tablePath, ph.itemsCount, ph.blocksCount, suffix) -} - func (ph *partHeader) WriteMetadata(partPath string) error { phj := &partHeaderJSON{ ItemsCount: ph.itemsCount, @@ -158,9 +119,9 @@ func (ph *partHeader) WriteMetadata(partPath string) error { FirstItem: append([]byte{}, ph.firstItem...), LastItem: append([]byte{}, ph.lastItem...), } - metadata, err := json.MarshalIndent(&phj, "", "\t") + metadata, err := json.Marshal(&phj) if err != nil { - return fmt.Errorf("cannot marshal metadata: %w", err) + logger.Panicf("BUG: cannot marshal partHeader metadata: %s", err) } metadataPath := partPath + "/metadata.json" if err := fs.WriteFileAtomically(metadataPath, metadata, false); err != nil { diff --git a/lib/mergeset/table.go b/lib/mergeset/table.go index 76c60cac80..f42b7ad7c9 100644 --- a/lib/mergeset/table.go +++ b/lib/mergeset/table.go @@ -1,6 +1,7 @@ package mergeset import ( + "encoding/json" "errors" "fmt" "os" @@ -12,7 +13,6 @@ import ( "time" "unsafe" - "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" "github.com/VictoriaMetrics/VictoriaMetrics/lib/cgroup" "github.com/VictoriaMetrics/VictoriaMetrics/lib/fasttime" "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" @@ -141,8 +141,6 @@ type Table struct { // which may need to be merged. needMergeCh chan struct{} - snapshotLock sync.RWMutex - flockF *os.File stopCh chan struct{} @@ -274,7 +272,9 @@ type partWrapper struct { mp *inmemoryPart - refCount uint64 + refCount uint32 + + mustBeDeleted uint32 isInMerge bool @@ -283,18 +283,22 @@ type partWrapper struct { } func (pw *partWrapper) incRef() { - atomic.AddUint64(&pw.refCount, 1) + atomic.AddUint32(&pw.refCount, 1) } func (pw *partWrapper) decRef() { - n := atomic.AddUint64(&pw.refCount, ^uint64(0)) - if int64(n) < 0 { - logger.Panicf("BUG: pw.refCount must be bigger than 0; got %d", int64(n)) + n := atomic.AddUint32(&pw.refCount, ^uint32(0)) + if int32(n) < 0 { + logger.Panicf("BUG: pw.refCount must be bigger than 0; got %d", int32(n)) } if n > 0 { return } + deletePath := "" + if pw.mp == nil && atomic.LoadUint32(&pw.mustBeDeleted) != 0 { + deletePath = pw.p.path + } if pw.mp != nil { // Do not return pw.mp to pool via putInmemoryPart(), // since pw.mp size may be too big compared to other entries stored in the pool. @@ -303,6 +307,10 @@ func (pw *partWrapper) decRef() { } pw.p.MustClose() pw.p = nil + + if deletePath != "" { + fs.MustRemoveAll(deletePath) + } } // OpenTable opens a table on the given path. @@ -512,7 +520,7 @@ func (tb *Table) UpdateMetrics(m *TableMetrics) { m.InmemoryBlocksCount += p.ph.blocksCount m.InmemoryItemsCount += p.ph.itemsCount m.InmemorySizeBytes += p.size - m.PartsRefCount += atomic.LoadUint64(&pw.refCount) + m.PartsRefCount += uint64(atomic.LoadUint32(&pw.refCount)) } m.FilePartsCount += uint64(len(tb.fileParts)) @@ -521,7 +529,7 @@ func (tb *Table) UpdateMetrics(m *TableMetrics) { m.FileBlocksCount += p.ph.blocksCount m.FileItemsCount += p.ph.itemsCount m.FileSizeBytes += p.size - m.PartsRefCount += atomic.LoadUint64(&pw.refCount) + m.PartsRefCount += uint64(atomic.LoadUint32(&pw.refCount)) } tb.partsLock.Unlock() @@ -662,35 +670,20 @@ func (tb *Table) flushInmemoryItems() { } func (tb *Table) flushInmemoryParts(isFinal bool) { - for { - currentTime := time.Now() - var pws []*partWrapper + currentTime := time.Now() + var pws []*partWrapper - tb.partsLock.Lock() - for _, pw := range tb.inmemoryParts { - if !pw.isInMerge && (isFinal || pw.flushToDiskDeadline.Before(currentTime)) { - pw.isInMerge = true - pws = append(pws, pw) - } + tb.partsLock.Lock() + for _, pw := range tb.inmemoryParts { + if !pw.isInMerge && (isFinal || pw.flushToDiskDeadline.Before(currentTime)) { + pw.isInMerge = true + pws = append(pws, pw) } - tb.partsLock.Unlock() + } + tb.partsLock.Unlock() - if err := tb.mergePartsOptimal(pws); err != nil { - logger.Panicf("FATAL: cannot merge in-memory parts: %s", err) - } - if !isFinal { - return - } - tb.partsLock.Lock() - n := len(tb.inmemoryParts) - tb.partsLock.Unlock() - if n == 0 { - // All the in-memory parts were flushed to disk. - return - } - // Some parts weren't flushed to disk because they were being merged. - // Sleep for a while and try flushing them again. - time.Sleep(10 * time.Millisecond) + if err := tb.mergePartsOptimal(pws); err != nil { + logger.Panicf("FATAL: cannot merge in-memory parts: %s", err) } } @@ -1089,21 +1082,19 @@ func (tb *Table) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFinal // Initialize destination paths. dstPartType := getDstPartType(pws, isFinal) - tmpPartPath, mergeIdx := tb.getDstPartPaths(dstPartType) + mergeIdx := tb.nextMergeIdx() + dstPartPath := "" + if dstPartType == partFile { + dstPartPath = fmt.Sprintf("%s/%016X", tb.path, mergeIdx) + } if isFinal && len(pws) == 1 && pws[0].mp != nil { // Fast path: flush a single in-memory part to disk. mp := pws[0].mp - if tmpPartPath == "" { - logger.Panicf("BUG: tmpPartPath must be non-empty") - } - if err := mp.StoreToDisk(tmpPartPath); err != nil { - return fmt.Errorf("cannot store in-memory part to %q: %w", tmpPartPath, err) - } - pwNew, err := tb.openCreatedPart(&mp.ph, pws, nil, tmpPartPath, mergeIdx) - if err != nil { - return fmt.Errorf("cannot atomically register the created part: %w", err) + if err := mp.StoreToDisk(dstPartPath); err != nil { + logger.Panicf("FATAL: cannot store in-memory part to %s: %s", dstPartPath, err) } + pwNew := tb.openCreatedPart(pws, nil, dstPartPath) tb.swapSrcWithDstParts(pws, pwNew, dstPartType) return nil } @@ -1111,7 +1102,7 @@ func (tb *Table) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFinal // Prepare BlockStreamReaders for source parts. bsrs, err := openBlockStreamReaders(pws) if err != nil { - return err + logger.Panicf("FATAL: cannot open source parts for merging: %s", err) } closeBlockStreamReaders := func() { for _, bsr := range bsrs { @@ -1136,45 +1127,30 @@ func (tb *Table) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFinal mpNew = &inmemoryPart{} bsw.InitFromInmemoryPart(mpNew, compressLevel) } else { - if tmpPartPath == "" { - logger.Panicf("BUG: tmpPartPath must be non-empty") - } nocache := srcItemsCount > maxItemsPerCachedPart() - if err := bsw.InitFromFilePart(tmpPartPath, nocache, compressLevel); err != nil { - closeBlockStreamReaders() - return fmt.Errorf("cannot create destination part at %q: %w", tmpPartPath, err) + if err := bsw.InitFromFilePart(dstPartPath, nocache, compressLevel); err != nil { + logger.Panicf("FATAL: cannot create destination part at %s: %s", dstPartPath, err) } } // Merge source parts to destination part. - ph, err := tb.mergePartsInternal(tmpPartPath, bsw, bsrs, dstPartType, stopCh) + ph, err := tb.mergePartsInternal(dstPartPath, bsw, bsrs, dstPartType, stopCh) putBlockStreamWriter(bsw) closeBlockStreamReaders() if err != nil { - return fmt.Errorf("cannot merge %d parts: %w", len(pws), err) + return err } if mpNew != nil { // Update partHeader for destination inmemory part after the merge. mpNew.ph = *ph } - // Atomically move the created part from tmpPartPath to its destination - // and swap the source parts with the newly created part. - pwNew, err := tb.openCreatedPart(ph, pws, mpNew, tmpPartPath, mergeIdx) - if err != nil { - return fmt.Errorf("cannot atomically register the created part: %w", err) - } - dstItemsCount := uint64(0) - dstBlocksCount := uint64(0) - dstSize := uint64(0) - dstPartPath := "" - if pwNew != nil { - pDst := pwNew.p - dstItemsCount = pDst.ph.itemsCount - dstBlocksCount = pDst.ph.blocksCount - dstSize = pDst.size - dstPartPath = pDst.path - } + // Atomically swap the source parts with the newly created part. + pwNew := tb.openCreatedPart(pws, mpNew, dstPartPath) + pDst := pwNew.p + dstItemsCount := pDst.ph.itemsCount + dstBlocksCount := pDst.ph.blocksCount + dstSize := pDst.size tb.swapSrcWithDstParts(pws, pwNew, dstPartType) @@ -1222,19 +1198,6 @@ func getDstPartType(pws []*partWrapper, isFinal bool) partType { return partInmemory } -func (tb *Table) getDstPartPaths(dstPartType partType) (string, uint64) { - tmpPartPath := "" - mergeIdx := tb.nextMergeIdx() - switch dstPartType { - case partInmemory: - case partFile: - tmpPartPath = fmt.Sprintf("%s/tmp/%016X", tb.path, mergeIdx) - default: - logger.Panicf("BUG: unknown partType=%d", dstPartType) - } - return tmpPartPath, mergeIdx -} - func openBlockStreamReaders(pws []*partWrapper) ([]*blockStreamReader, error) { bsrs := make([]*blockStreamReader, 0, len(pws)) for _, pw := range pws { @@ -1254,7 +1217,7 @@ func openBlockStreamReaders(pws []*partWrapper) ([]*blockStreamReader, error) { return bsrs, nil } -func (tb *Table) mergePartsInternal(tmpPartPath string, bsw *blockStreamWriter, bsrs []*blockStreamReader, dstPartType partType, stopCh <-chan struct{}) (*partHeader, error) { +func (tb *Table) mergePartsInternal(dstPartPath string, bsw *blockStreamWriter, bsrs []*blockStreamReader, dstPartType partType, stopCh <-chan struct{}) (*partHeader, error) { var ph partHeader var itemsMerged *uint64 var mergesCount *uint64 @@ -1276,56 +1239,34 @@ func (tb *Table) mergePartsInternal(tmpPartPath string, bsw *blockStreamWriter, atomic.AddUint64(activeMerges, ^uint64(0)) atomic.AddUint64(mergesCount, 1) if err != nil { - return nil, fmt.Errorf("cannot merge parts to %q: %w", tmpPartPath, err) + return nil, fmt.Errorf("cannot merge %d parts to %s: %w", len(bsrs), dstPartPath, err) } - if tmpPartPath != "" { - if err := ph.WriteMetadata(tmpPartPath); err != nil { - return nil, fmt.Errorf("cannot write metadata to destination part %q: %w", tmpPartPath, err) + if dstPartPath != "" { + if err := ph.WriteMetadata(dstPartPath); err != nil { + logger.Panicf("FATAL: cannot write metadata to %s: %s", dstPartPath, err) } } return &ph, nil } -func (tb *Table) openCreatedPart(ph *partHeader, pws []*partWrapper, mpNew *inmemoryPart, tmpPartPath string, mergeIdx uint64) (*partWrapper, error) { - dstPartPath := "" - if mpNew == nil || !areAllInmemoryParts(pws) { - // Either source or destination parts are located on disk. - // Create a transaction for atomic deleting of old parts and moving new part to its destination on disk. - var bb bytesutil.ByteBuffer - for _, pw := range pws { - if pw.mp == nil { - fmt.Fprintf(&bb, "%s\n", pw.p.path) - } - } - dstPartPath = ph.Path(tb.path, mergeIdx) - fmt.Fprintf(&bb, "%s -> %s\n", tmpPartPath, dstPartPath) - txnPath := fmt.Sprintf("%s/txn/%016X", tb.path, mergeIdx) - if err := fs.WriteFileAtomically(txnPath, bb.B, false); err != nil { - return nil, fmt.Errorf("cannot create transaction file %q: %w", txnPath, err) - } - - // Run the created transaction. - if err := runTransaction(&tb.snapshotLock, tb.path, txnPath); err != nil { - return nil, fmt.Errorf("cannot execute transaction %q: %w", txnPath, err) - } - } +func (tb *Table) openCreatedPart(pws []*partWrapper, mpNew *inmemoryPart, dstPartPath string) *partWrapper { // Open the created part. if mpNew != nil { // Open the created part from memory. flushToDiskDeadline := getFlushToDiskDeadline(pws) pwNew := newPartWrapperFromInmemoryPart(mpNew, flushToDiskDeadline) - return pwNew, nil + return pwNew } // Open the created part from disk. pNew, err := openFilePart(dstPartPath) if err != nil { - return nil, fmt.Errorf("cannot open merged part %q: %w", dstPartPath, err) + logger.Panicf("FATAL: cannot open the merged part: %s", err) } pwNew := &partWrapper{ p: pNew, refCount: 1, } - return pwNew, nil + return pwNew } func areAllInmemoryParts(pws []*partWrapper) bool { @@ -1350,19 +1291,26 @@ func (tb *Table) swapSrcWithDstParts(pws []*partWrapper, pwNew *partWrapper, dst removedFileParts := 0 tb.partsLock.Lock() + tb.inmemoryParts, removedInmemoryParts = removeParts(tb.inmemoryParts, m) tb.fileParts, removedFileParts = removeParts(tb.fileParts, m) - if pwNew != nil { - switch dstPartType { - case partInmemory: - tb.inmemoryParts = append(tb.inmemoryParts, pwNew) - case partFile: - tb.fileParts = append(tb.fileParts, pwNew) - default: - logger.Panicf("BUG: unknown partType=%d", dstPartType) - } - tb.notifyBackgroundMergers() + switch dstPartType { + case partInmemory: + tb.inmemoryParts = append(tb.inmemoryParts, pwNew) + case partFile: + tb.fileParts = append(tb.fileParts, pwNew) + default: + logger.Panicf("BUG: unknown partType=%d", dstPartType) } + tb.notifyBackgroundMergers() + + // Atomically store the updated list of file-based parts on disk. + // This must be performed under partsLock in order to prevent from races + // when multiple concurrently running goroutines update the list. + if removedFileParts > 0 || dstPartType == partFile { + mustWritePartNames(tb.fileParts, tb.path) + } + tb.partsLock.Unlock() removedParts := removedInmemoryParts + removedFileParts @@ -1370,8 +1318,10 @@ func (tb *Table) swapSrcWithDstParts(pws []*partWrapper, pwNew *partWrapper, dst logger.Panicf("BUG: unexpected number of parts removed; got %d, want %d", removedParts, len(m)) } - // Remove references from old parts. + // Mark old parts as must be deleted and decrement reference count, + // so they are eventually closed and deleted. for _, pw := range pws { + atomic.StoreUint32(&pw.mustBeDeleted, 1) pw.decRef() } } @@ -1426,56 +1376,41 @@ func openParts(path string) ([]*partWrapper, error) { return nil, err } fs.MustRemoveTemporaryDirs(path) - d, err := os.Open(path) + + // Remove txn and tmp directories, which may be left after the upgrade + // to v1.90.0 and newer versions. + fs.MustRemoveAll(path + "/txn") + fs.MustRemoveAll(path + "/tmp") + + partNames := mustReadPartNames(path) + + // Remove dirs missing in partNames. These dirs may be left after unclean shutdown + // or after the update from versions prior to v1.90.0. + des, err := os.ReadDir(path) if err != nil { - return nil, fmt.Errorf("cannot open difrectory: %w", err) + return nil, fmt.Errorf("cannot read mergetree table dir: %w", err) } - defer fs.MustClose(d) - - // Run remaining transactions and cleanup /txn and /tmp directories. - // Snapshots cannot be created yet, so use fakeSnapshotLock. - var fakeSnapshotLock sync.RWMutex - if err := runTransactions(&fakeSnapshotLock, path); err != nil { - return nil, fmt.Errorf("cannot run transactions: %w", err) + m := make(map[string]struct{}, len(partNames)) + for _, partName := range partNames { + m[partName] = struct{}{} } - - txnDir := path + "/txn" - fs.MustRemoveDirAtomic(txnDir) - if err := fs.MkdirAllFailIfExist(txnDir); err != nil { - return nil, fmt.Errorf("cannot create %q: %w", txnDir, err) - } - - tmpDir := path + "/tmp" - fs.MustRemoveDirAtomic(tmpDir) - if err := fs.MkdirAllFailIfExist(tmpDir); err != nil { - return nil, fmt.Errorf("cannot create %q: %w", tmpDir, err) - } - - fs.MustSyncPath(path) - - // Open parts. - fis, err := d.Readdir(-1) - if err != nil { - return nil, fmt.Errorf("cannot read directory: %w", err) - } - var pws []*partWrapper - for _, fi := range fis { - if !fs.IsDirOrSymlink(fi) { + for _, de := range des { + if !fs.IsDirOrSymlink(de) { // Skip non-directories. continue } - fn := fi.Name() - if isSpecialDir(fn) { - // Skip special dirs. - continue - } - partPath := path + "/" + fn - if fs.IsEmptyDir(partPath) { - // Remove empty directory, which can be left after unclean shutdown on NFS. - // See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1142 - fs.MustRemoveDirAtomic(partPath) - continue + fn := de.Name() + if _, ok := m[fn]; !ok { + deletePath := path + "/" + fn + fs.MustRemoveAll(deletePath) } + } + fs.MustSyncPath(path) + + // Open parts + var pws []*partWrapper + for _, partName := range partNames { + partPath := path + "/" + partName p, err := openFilePart(partPath) if err != nil { mustCloseParts(pws) @@ -1502,8 +1437,7 @@ func mustCloseParts(pws []*partWrapper) { // CreateSnapshotAt creates tb snapshot in the given dstDir. // -// Snapshot is created using linux hard links, so it is usually created -// very quickly. +// Snapshot is created using linux hard links, so it is usually created very quickly. // // If deadline is reached before snapshot is created error is returned. // @@ -1529,42 +1463,27 @@ func (tb *Table) CreateSnapshotAt(dstDir string, deadline uint64) error { // Flush inmemory items to disk. tb.flushInmemoryItems() - // The snapshot must be created under the lock in order to prevent from - // concurrent modifications via runTransaction. - tb.snapshotLock.Lock() - defer tb.snapshotLock.Unlock() - if err := fs.MkdirAllFailIfExist(dstDir); err != nil { return fmt.Errorf("cannot create snapshot dir %q: %w", dstDir, err) } - d, err := os.Open(srcDir) - if err != nil { - return fmt.Errorf("cannot open difrectory: %w", err) - } - defer fs.MustClose(d) + pws := tb.getParts(nil) + defer tb.putParts(pws) - fis, err := d.Readdir(-1) - if err != nil { - return fmt.Errorf("cannot read directory: %w", err) - } + // Create a file with part names at dstDir + mustWritePartNames(pws, dstDir) - for _, fi := range fis { + // Make hardlinks for pws at dstDir + for _, pw := range pws { + if pw.mp != nil { + // Skip in-memory parts + continue + } if deadline > 0 && fasttime.UnixTimestamp() > deadline { return fmt.Errorf("cannot create snapshot for %q: timeout exceeded", tb.path) } - - fn := fi.Name() - if !fs.IsDirOrSymlink(fi) { - // Skip non-directories. - continue - } - if isSpecialDir(fn) { - // Skip special dirs. - continue - } - srcPartPath := srcDir + "/" + fn - dstPartPath := dstDir + "/" + fn + srcPartPath := pw.p.path + dstPartPath := dstDir + "/" + filepath.Base(srcPartPath) if err := fs.HardLinkFiles(srcPartPath, dstPartPath); err != nil { return fmt.Errorf("cannot create hard links from %q to %q: %w", srcPartPath, dstPartPath, err) } @@ -1578,135 +1497,60 @@ func (tb *Table) CreateSnapshotAt(dstDir string, deadline uint64) error { return nil } -func runTransactions(txnLock *sync.RWMutex, path string) error { - // Wait until all the previous pending transaction deletions are finished. - pendingTxnDeletionsWG.Wait() - - // Make sure all the current transaction deletions are finished before exiting. - defer pendingTxnDeletionsWG.Wait() - - txnDir := path + "/txn" - d, err := os.Open(txnDir) - if err != nil { - if os.IsNotExist(err) { - return nil - } - return fmt.Errorf("cannot open transaction dir: %w", err) - } - defer fs.MustClose(d) - - fis, err := d.Readdir(-1) - if err != nil { - return fmt.Errorf("cannot read directory %q: %w", d.Name(), err) - } - - // Sort transaction files by id, since transactions must be ordered. - sort.Slice(fis, func(i, j int) bool { - return fis[i].Name() < fis[j].Name() - }) - - for _, fi := range fis { - fn := fi.Name() - if fs.IsTemporaryFileName(fn) { - // Skip temporary files, which could be left after unclean shutdown. +func mustWritePartNames(pws []*partWrapper, dstDir string) { + partNames := make([]string, 0, len(pws)) + for _, pw := range pws { + if pw.mp != nil { + // Skip in-memory parts continue } - txnPath := txnDir + "/" + fn - if err := runTransaction(txnLock, path, txnPath); err != nil { - return fmt.Errorf("cannot run transaction from %q: %w", txnPath, err) - } + partName := filepath.Base(pw.p.path) + partNames = append(partNames, partName) + } + sort.Strings(partNames) + data, err := json.Marshal(partNames) + if err != nil { + logger.Panicf("BUG: cannot marshal partNames to JSON: %s", err) + } + partNamesPath := dstDir + "/parts.json" + if err := fs.WriteFileAtomically(partNamesPath, data, true); err != nil { + logger.Panicf("FATAL: cannot update %s: %s", partNamesPath, err) } - return nil } -func runTransaction(txnLock *sync.RWMutex, pathPrefix, txnPath string) error { - // The transaction must run under read lock in order to provide - // consistent snapshots with Table.CreateSnapshot(). - txnLock.RLock() - defer txnLock.RUnlock() - - data, err := os.ReadFile(txnPath) - if err != nil { - return fmt.Errorf("cannot read transaction file: %w", err) - } - if len(data) > 0 && data[len(data)-1] == '\n' { - data = data[:len(data)-1] - } - paths := strings.Split(string(data), "\n") - - if len(paths) == 0 { - return fmt.Errorf("empty transaction") - } - rmPaths := paths[:len(paths)-1] - mvPaths := strings.Split(paths[len(paths)-1], " -> ") - if len(mvPaths) != 2 { - return fmt.Errorf("invalid last line in the transaction file: got %q; must contain `srcPath -> dstPath`", paths[len(paths)-1]) - } - - // Remove old paths. It is OK if certain paths don't exist. - for _, path := range rmPaths { - path, err := validatePath(pathPrefix, path) - if err != nil { - return fmt.Errorf("invalid path to remove: %w", err) +func mustReadPartNames(srcDir string) []string { + partNamesPath := srcDir + "/parts.json" + data, err := os.ReadFile(partNamesPath) + if err == nil { + var partNames []string + if err := json.Unmarshal(data, &partNames); err != nil { + logger.Panicf("FATAL: cannot parse %s: %s", partNamesPath, err) } - fs.MustRemoveDirAtomic(path) + return partNames } - - // Move the new part to new directory. - srcPath := mvPaths[0] - dstPath := mvPaths[1] - srcPath, err = validatePath(pathPrefix, srcPath) + if !os.IsNotExist(err) { + logger.Panicf("FATAL: cannot read parts.json file: %s", err) + } + // The parts.json is missing. This is the upgrade from versions previous to v1.90.0. + // Read part names from directories under srcDir + des, err := os.ReadDir(srcDir) if err != nil { - return fmt.Errorf("invalid source path to rename: %w", err) + logger.Panicf("FATAL: cannot read mergeset table dir: %s", err) } - dstPath, err = validatePath(pathPrefix, dstPath) - if err != nil { - return fmt.Errorf("invalid destination path to rename: %w", err) - } - if fs.IsPathExist(srcPath) { - if err := os.Rename(srcPath, dstPath); err != nil { - return fmt.Errorf("cannot rename %q to %q: %w", srcPath, dstPath, err) + var partNames []string + for _, de := range des { + if !fs.IsDirOrSymlink(de) { + // Skip non-directories. + continue } - } else if !fs.IsPathExist(dstPath) { - // Emit info message for the expected condition after unclean shutdown on NFS disk. - // The dstPath part may be missing because it could be already merged into bigger part - // while old source parts for the current txn weren't still deleted due to NFS locks. - logger.Infof("cannot find both source and destination paths: %q -> %q; this may be the case after unclean shutdown (OOM, `kill -9`, hard reset) on NFS disk", - srcPath, dstPath) - } - - // Flush pathPrefix directory metadata to the underlying storage. - fs.MustSyncPath(pathPrefix) - - pendingTxnDeletionsWG.Add(1) - go func() { - defer pendingTxnDeletionsWG.Done() - if err := os.Remove(txnPath); err != nil { - logger.Errorf("cannot remove transaction file %q: %s", txnPath, err) + partName := de.Name() + if isSpecialDir(partName) { + // Skip special dirs. + continue } - }() - - return nil -} - -var pendingTxnDeletionsWG syncwg.WaitGroup - -func validatePath(pathPrefix, path string) (string, error) { - var err error - - pathPrefix, err = filepath.Abs(pathPrefix) - if err != nil { - return path, fmt.Errorf("cannot determine absolute path for pathPrefix=%q: %w", pathPrefix, err) + partNames = append(partNames, partName) } - - path, err = filepath.Abs(path) - if err != nil { - return path, fmt.Errorf("cannot determine absolute path for %q: %w", path, err) - } - if !strings.HasPrefix(path, pathPrefix+"/") { - return path, fmt.Errorf("invalid path %q; must start with %q", path, pathPrefix+"/") - } - return path, nil + return partNames } // getPartsToMerge returns optimal parts to merge from pws. diff --git a/lib/storage/block_stream_reader.go b/lib/storage/block_stream_reader.go index 2f9e6fc59d..e08817f28a 100644 --- a/lib/storage/block_stream_reader.go +++ b/lib/storage/block_stream_reader.go @@ -141,7 +141,7 @@ func (bsr *blockStreamReader) InitFromFilePart(path string) error { path = filepath.Clean(path) - if err := bsr.ph.ParseFromPath(path); err != nil { + if err := bsr.ph.ReadMetadata(path); err != nil { return fmt.Errorf("cannot parse path to part: %w", err) } diff --git a/lib/storage/inmemory_part.go b/lib/storage/inmemory_part.go index 70f05c15fb..3886795deb 100644 --- a/lib/storage/inmemory_part.go +++ b/lib/storage/inmemory_part.go @@ -56,8 +56,8 @@ func (mp *inmemoryPart) StoreToDisk(path string) error { if err := fs.WriteFileAndSync(metaindexPath, mp.metaindexData.B); err != nil { return fmt.Errorf("cannot store metaindex: %w", err) } - if err := mp.ph.writeMinDedupInterval(path); err != nil { - return fmt.Errorf("cannot store min dedup interval: %w", err) + if err := mp.ph.WriteMetadata(path); err != nil { + return fmt.Errorf("cannot store metadata: %w", err) } // Sync parent directory in order to make sure the written files remain visible after hardware reset parentDirPath := filepath.Dir(path) diff --git a/lib/storage/part.go b/lib/storage/part.go index 956ab7bae2..2deccbe487 100644 --- a/lib/storage/part.go +++ b/lib/storage/part.go @@ -50,7 +50,7 @@ func openFilePart(path string) (*part, error) { path = filepath.Clean(path) var ph partHeader - if err := ph.ParseFromPath(path); err != nil { + if err := ph.ReadMetadata(path); err != nil { return nil, fmt.Errorf("cannot parse path to part: %w", err) } diff --git a/lib/storage/part_header.go b/lib/storage/part_header.go index 8896dacd82..ee61724fbb 100644 --- a/lib/storage/part_header.go +++ b/lib/storage/part_header.go @@ -1,6 +1,7 @@ package storage import ( + "encoding/json" "errors" "fmt" "os" @@ -10,6 +11,7 @@ import ( "time" "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promutils" ) @@ -33,12 +35,35 @@ type partHeader struct { // String returns string representation of ph. func (ph *partHeader) String() string { - return fmt.Sprintf("%d_%d_%s_%s", ph.RowsCount, ph.BlocksCount, toUserReadableTimestamp(ph.MinTimestamp), toUserReadableTimestamp(ph.MaxTimestamp)) + return fmt.Sprintf("partHeader{rowsCount=%d,blocksCount=%d,minTimestamp=%d,maxTimestamp=%d}", ph.RowsCount, ph.BlocksCount, ph.MinTimestamp, ph.MaxTimestamp) } -func toUserReadableTimestamp(timestamp int64) string { - t := timestampToTime(timestamp) - return t.Format(userReadableTimeFormat) +// Reset resets the ph. +func (ph *partHeader) Reset() { + ph.RowsCount = 0 + ph.BlocksCount = 0 + ph.MinTimestamp = (1 << 63) - 1 + ph.MaxTimestamp = -1 << 63 + ph.MinDedupInterval = 0 +} + +func (ph *partHeader) readMinDedupInterval(partPath string) error { + filePath := partPath + "/min_dedup_interval" + data, err := os.ReadFile(filePath) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + // The minimum dedup interval may not exist for old parts. + ph.MinDedupInterval = 0 + return nil + } + return fmt.Errorf("cannot read %q: %w", filePath, err) + } + dedupInterval, err := promutils.ParseDuration(string(data)) + if err != nil { + return fmt.Errorf("cannot parse minimum dedup interval %q at %q: %w", data, filePath, err) + } + ph.MinDedupInterval = dedupInterval.Milliseconds() + return nil } func fromUserReadableTimestamp(s string) (int64, error) { @@ -51,15 +76,6 @@ func fromUserReadableTimestamp(s string) (int64, error) { const userReadableTimeFormat = "20060102150405.000" -// Path returns a path to part header with the given prefix and suffix. -// -// Suffix must be random. -func (ph *partHeader) Path(prefix string, suffix uint64) string { - prefix = filepath.Clean(prefix) - s := ph.String() - return fmt.Sprintf("%s/%s_%016X", prefix, s, suffix) -} - // ParseFromPath extracts ph info from the given path. func (ph *partHeader) ParseFromPath(path string) error { ph.Reset() @@ -119,40 +135,48 @@ func (ph *partHeader) ParseFromPath(path string) error { return nil } -// Reset resets the ph. -func (ph *partHeader) Reset() { - ph.RowsCount = 0 - ph.BlocksCount = 0 - ph.MinTimestamp = (1 << 63) - 1 - ph.MaxTimestamp = -1 << 63 - ph.MinDedupInterval = 0 -} +func (ph *partHeader) ReadMetadata(partPath string) error { + ph.Reset() -func (ph *partHeader) readMinDedupInterval(partPath string) error { - filePath := partPath + "/min_dedup_interval" - data, err := os.ReadFile(filePath) + metadataPath := partPath + "/metadata.json" + metadata, err := os.ReadFile(metadataPath) if err != nil { - if errors.Is(err, os.ErrNotExist) { - // The minimum dedup interval may not exist for old parts. - ph.MinDedupInterval = 0 - return nil + if os.IsNotExist(err) { + // This is a part created before v1.90.0. + // Fall back to reading the metadata from the partPath itsel + return ph.ParseFromPath(partPath) } - return fmt.Errorf("cannot read %q: %w", filePath, err) + return fmt.Errorf("cannot read %q: %w", metadataPath, err) } - dedupInterval, err := promutils.ParseDuration(string(data)) - if err != nil { - return fmt.Errorf("cannot parse minimum dedup interval %q at %q: %w", data, filePath, err) + if err := json.Unmarshal(metadata, ph); err != nil { + return fmt.Errorf("cannot parse %q: %w", metadataPath, err) } - ph.MinDedupInterval = dedupInterval.Milliseconds() + + // Perform various checks + if ph.MinTimestamp > ph.MaxTimestamp { + return fmt.Errorf("minTimestamp cannot exceed maxTimestamp; got %d vs %d", ph.MinTimestamp, ph.MaxTimestamp) + } + if ph.RowsCount <= 0 { + return fmt.Errorf("rowsCount must be greater than 0; got %d", ph.RowsCount) + } + if ph.BlocksCount <= 0 { + return fmt.Errorf("blocksCount must be greater than 0; got %d", ph.BlocksCount) + } + if ph.BlocksCount > ph.RowsCount { + return fmt.Errorf("blocksCount cannot be bigger than rowsCount; got blocksCount=%d, rowsCount=%d", ph.BlocksCount, ph.RowsCount) + } + return nil } -func (ph *partHeader) writeMinDedupInterval(partPath string) error { - filePath := partPath + "/min_dedup_interval" - dedupInterval := time.Duration(ph.MinDedupInterval) * time.Millisecond - data := dedupInterval.String() - if err := fs.WriteFileAtomically(filePath, []byte(data), false); err != nil { - return fmt.Errorf("cannot create %q: %w", filePath, err) +func (ph *partHeader) WriteMetadata(partPath string) error { + metadata, err := json.Marshal(ph) + if err != nil { + logger.Panicf("BUG: cannot marshal partHeader metadata: %s", err) + } + metadataPath := partPath + "/metadata.json" + if err := fs.WriteFileAtomically(metadataPath, metadata, false); err != nil { + return fmt.Errorf("cannot create %q: %w", metadataPath, err) } return nil } diff --git a/lib/storage/part_header_test.go b/lib/storage/part_header_test.go deleted file mode 100644 index a4c20c0b1b..0000000000 --- a/lib/storage/part_header_test.go +++ /dev/null @@ -1,62 +0,0 @@ -package storage - -import ( - "testing" -) - -func TestPartHeaderParseFromPath(t *testing.T) { - testParseFromPathError := func(path string) { - t.Helper() - - var ph partHeader - if err := ph.ParseFromPath(path); err == nil { - t.Fatalf("expecting non-nil error") - } - } - - t.Run("Error", func(t *testing.T) { - testParseFromPathError("") - testParseFromPathError("foobar") - testParseFromPathError("/foo/bar") - testParseFromPathError("/rowscount_mintimestamp_maxtimestamp_garbage") - testParseFromPathError("/rowscount_mintimestamp_maxtimestamp_garbage") - testParseFromPathError("/12_3456_mintimestamp_maxtimestamp_garbage") - testParseFromPathError("/12_3456_20181011010203.456_maxtimestamp_garbage") - testParseFromPathError("/12_3456_20181011010203.456_20181011010202.456_garbage") - testParseFromPathError("12_3456_20181011010203.456_20181011010203.457_garbage") - testParseFromPathError("12_3456_20181011010203.456_20181011010203.457_garbage/") - - // MinTimestamp > MaxTimetamp - testParseFromPathError("1233_456_20181011010203.456_20181011010202.457_garbage") - - // Zero rowsCount - testParseFromPathError("0_123_20181011010203.456_20181011010203.457_garbage") - - // Zero blocksCount - testParseFromPathError("123_0_20181011010203.456_20181011010203.457_garbage") - - // blocksCount > rowsCount - testParseFromPathError("123_456_20181011010203.456_20181011010203.457_garbage") - }) - - testParseFromPathSuccess := func(path string, phStringExpected string) { - t.Helper() - - var ph partHeader - if err := ph.ParseFromPath(path); err != nil { - t.Fatalf("unexpected error when parsing path %q: %s", path, err) - } - phString := ph.String() - if phString != phStringExpected { - t.Fatalf("unexpected partHeader string for path %q: got %q; want %q", path, phString, phStringExpected) - } - } - - t.Run("Success", func(t *testing.T) { - testParseFromPathSuccess("/1233_456_20181011010203.456_20181011010203.457_garbage", "1233_456_20181011010203.456_20181011010203.457") - testParseFromPathSuccess("/1233_456_20181011010203.456_20181011010203.457_garbage/", "1233_456_20181011010203.456_20181011010203.457") - testParseFromPathSuccess("/1233_456_20181011010203.456_20181011010203.457_garbage///", "1233_456_20181011010203.456_20181011010203.457") - testParseFromPathSuccess("/var/lib/tsdb/1233_456_20181011010203.456_20181011010203.457_garbage///", "1233_456_20181011010203.456_20181011010203.457") - testParseFromPathSuccess("/var/lib/tsdb/456_456_20181011010203.456_20181011010203.457_232345///", "456_456_20181011010203.456_20181011010203.457") - }) -} diff --git a/lib/storage/partition.go b/lib/storage/partition.go index 8f442386cd..b65d791d3b 100644 --- a/lib/storage/partition.go +++ b/lib/storage/partition.go @@ -1,6 +1,7 @@ package storage import ( + "encoding/json" "errors" "fmt" "os" @@ -12,7 +13,6 @@ import ( "time" "unsafe" - "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" "github.com/VictoriaMetrics/VictoriaMetrics/lib/cgroup" "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" "github.com/VictoriaMetrics/VictoriaMetrics/lib/fasttime" @@ -20,7 +20,6 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" "github.com/VictoriaMetrics/VictoriaMetrics/lib/mergeset" - "github.com/VictoriaMetrics/VictoriaMetrics/lib/syncwg" ) // The maximum size of big part. @@ -158,8 +157,6 @@ type partition struct { // which may need to be merged. needMergeCh chan struct{} - snapshotLock sync.RWMutex - stopCh chan struct{} wg sync.WaitGroup @@ -167,11 +164,11 @@ type partition struct { // partWrapper is a wrapper for the part. type partWrapper struct { - // Put atomic counters to the top of struct, so they are aligned to 8 bytes on 32-bit arch. - // See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/212 - // The number of references to the part. - refCount uint64 + refCount uint32 + + // The flag, which is set when the part must be deleted after refCount reaches zero. + mustBeDeleted uint32 // The part itself. p *part @@ -187,24 +184,32 @@ type partWrapper struct { } func (pw *partWrapper) incRef() { - atomic.AddUint64(&pw.refCount, 1) + atomic.AddUint32(&pw.refCount, 1) } func (pw *partWrapper) decRef() { - n := atomic.AddUint64(&pw.refCount, ^uint64(0)) - if int64(n) < 0 { - logger.Panicf("BUG: pw.refCount must be bigger than 0; got %d", int64(n)) + n := atomic.AddUint32(&pw.refCount, ^uint32(0)) + if int32(n) < 0 { + logger.Panicf("BUG: pw.refCount must be bigger than 0; got %d", int32(n)) } if n > 0 { return } + deletePath := "" + if pw.mp == nil && atomic.LoadUint32(&pw.mustBeDeleted) != 0 { + deletePath = pw.p.path + } if pw.mp != nil { putInmemoryPart(pw.mp) pw.mp = nil } pw.p.MustClose() pw.p = nil + + if deletePath != "" { + fs.MustRemoveAll(deletePath) + } } // createPartition creates new partition for the given timestamp and the given paths @@ -215,11 +220,11 @@ func createPartition(timestamp int64, smallPartitionsPath, bigPartitionsPath str bigPartsPath := filepath.Clean(bigPartitionsPath) + "/" + name logger.Infof("creating a partition %q with smallPartsPath=%q, bigPartsPath=%q", name, smallPartsPath, bigPartsPath) - if err := createPartitionDirs(smallPartsPath); err != nil { - return nil, fmt.Errorf("cannot create directories for small parts %q: %w", smallPartsPath, err) + if err := fs.MkdirAllFailIfExist(smallPartsPath); err != nil { + return nil, fmt.Errorf("cannot create directory for small parts %q: %w", smallPartsPath, err) } - if err := createPartitionDirs(bigPartsPath); err != nil { - return nil, fmt.Errorf("cannot create directories for big parts %q: %w", bigPartsPath, err) + if err := fs.MkdirAllFailIfExist(bigPartsPath); err != nil { + return nil, fmt.Errorf("cannot create directory for big parts %q: %w", bigPartsPath, err) } pt := newPartition(name, smallPartsPath, bigPartsPath, s) @@ -243,8 +248,6 @@ func (pt *partition) startBackgroundWorkers() { // The pt must be detached from table before calling pt.Drop. func (pt *partition) Drop() { logger.Infof("dropping partition %q at smallPartsPath=%q, bigPartsPath=%q", pt.name, pt.smallPartsPath, pt.bigPartsPath) - // Wait until all the pending transaction deletions are finished before removing partition directories. - pendingTxnDeletionsWG.Wait() fs.MustRemoveDirAtomic(pt.smallPartsPath) fs.MustRemoveDirAtomic(pt.bigPartsPath) @@ -266,11 +269,13 @@ func openPartition(smallPartsPath, bigPartsPath string, s *Storage) (*partition, return nil, fmt.Errorf("patititon name in bigPartsPath %q doesn't match smallPartsPath %q; want %q", bigPartsPath, smallPartsPath, name) } - smallParts, err := openParts(smallPartsPath, bigPartsPath, smallPartsPath) + partNamesSmall, partNamesBig := mustReadPartNames(smallPartsPath, bigPartsPath) + + smallParts, err := openParts(smallPartsPath, partNamesSmall) if err != nil { return nil, fmt.Errorf("cannot open small parts from %q: %w", smallPartsPath, err) } - bigParts, err := openParts(smallPartsPath, bigPartsPath, bigPartsPath) + bigParts, err := openParts(bigPartsPath, partNamesBig) if err != nil { mustCloseParts(smallParts) return nil, fmt.Errorf("cannot open big parts from %q: %w", bigPartsPath, err) @@ -375,21 +380,21 @@ func (pt *partition) UpdateMetrics(m *partitionMetrics) { m.InmemoryRowsCount += p.ph.RowsCount m.InmemoryBlocksCount += p.ph.BlocksCount m.InmemorySizeBytes += p.size - m.InmemoryPartsRefCount += atomic.LoadUint64(&pw.refCount) + m.InmemoryPartsRefCount += uint64(atomic.LoadUint32(&pw.refCount)) } for _, pw := range pt.smallParts { p := pw.p m.SmallRowsCount += p.ph.RowsCount m.SmallBlocksCount += p.ph.BlocksCount m.SmallSizeBytes += p.size - m.SmallPartsRefCount += atomic.LoadUint64(&pw.refCount) + m.SmallPartsRefCount += uint64(atomic.LoadUint32(&pw.refCount)) } for _, pw := range pt.bigParts { p := pw.p m.BigRowsCount += p.ph.RowsCount m.BigBlocksCount += p.ph.BlocksCount m.BigSizeBytes += p.size - m.BigPartsRefCount += atomic.LoadUint64(&pw.refCount) + m.BigPartsRefCount += uint64(atomic.LoadUint32(&pw.refCount)) } m.InmemoryPartsCount += uint64(len(pt.inmemoryParts)) @@ -751,19 +756,12 @@ func (pt *partition) HasTimestamp(timestamp int64) bool { func (pt *partition) GetParts(dst []*partWrapper, addInMemory bool) []*partWrapper { pt.partsLock.Lock() if addInMemory { - for _, pw := range pt.inmemoryParts { - pw.incRef() - } + incRefForParts(pt.inmemoryParts) dst = append(dst, pt.inmemoryParts...) } - - for _, pw := range pt.smallParts { - pw.incRef() - } + incRefForParts(pt.smallParts) dst = append(dst, pt.smallParts...) - for _, pw := range pt.bigParts { - pw.incRef() - } + incRefForParts(pt.bigParts) dst = append(dst, pt.bigParts...) pt.partsLock.Unlock() @@ -777,15 +775,18 @@ func (pt *partition) PutParts(pws []*partWrapper) { } } +func incRefForParts(pws []*partWrapper) { + for _, pw := range pws { + pw.incRef() + } +} + // MustClose closes the pt, so the app may safely exit. // // The pt must be detached from table before calling pt.MustClose. func (pt *partition) MustClose() { close(pt.stopCh) - // Wait until all the pending transaction deletions are finished. - pendingTxnDeletionsWG.Wait() - logger.Infof("waiting for service workers to stop on %q...", pt.smallPartsPath) startTime := time.Now() pt.wg.Wait() @@ -871,35 +872,20 @@ func (pt *partition) flushInmemoryRows() { } func (pt *partition) flushInmemoryParts(isFinal bool) { - for { - currentTime := time.Now() - var pws []*partWrapper + currentTime := time.Now() + var pws []*partWrapper - pt.partsLock.Lock() - for _, pw := range pt.inmemoryParts { - if !pw.isInMerge && (isFinal || pw.flushToDiskDeadline.Before(currentTime)) { - pw.isInMerge = true - pws = append(pws, pw) - } + pt.partsLock.Lock() + for _, pw := range pt.inmemoryParts { + if !pw.isInMerge && (isFinal || pw.flushToDiskDeadline.Before(currentTime)) { + pw.isInMerge = true + pws = append(pws, pw) } - pt.partsLock.Unlock() + } + pt.partsLock.Unlock() - if err := pt.mergePartsOptimal(pws, nil); err != nil { - logger.Panicf("FATAL: cannot merge in-memory parts: %s", err) - } - if !isFinal { - return - } - pt.partsLock.Lock() - n := len(pt.inmemoryParts) - pt.partsLock.Unlock() - if n == 0 { - // All the in-memory parts were flushed to disk. - return - } - // Some parts weren't flushed to disk because they were being merged. - // Sleep for a while and try flushing them again. - time.Sleep(10 * time.Millisecond) + if err := pt.mergePartsOptimal(pws, nil); err != nil { + logger.Panicf("FATAL: cannot merge in-memory parts: %s", err) } } @@ -1238,10 +1224,6 @@ func atomicSetBool(p *uint64, b bool) { func (pt *partition) runFinalDedup() error { requiredDedupInterval, actualDedupInterval := pt.getRequiredDedupInterval() - if requiredDedupInterval <= actualDedupInterval { - // Deduplication isn't needed. - return nil - } t := time.Now() logger.Infof("starting final dedup for partition %s using requiredDedupInterval=%d ms, since the partition has smaller actualDedupInterval=%d ms", pt.bigPartsPath, requiredDedupInterval, actualDedupInterval) @@ -1252,6 +1234,11 @@ func (pt *partition) runFinalDedup() error { return nil } +func (pt *partition) isFinalDedupNeeded() bool { + requiredDedupInterval, actualDedupInterval := pt.getRequiredDedupInterval() + return requiredDedupInterval > actualDedupInterval +} + func (pt *partition) getRequiredDedupInterval() (int64, int64) { pws := pt.GetParts(nil, false) defer pt.PutParts(pws) @@ -1292,7 +1279,8 @@ func (pt *partition) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFi // Initialize destination paths. dstPartType := pt.getDstPartType(pws, isFinal) - ptPath, tmpPartPath, mergeIdx := pt.getDstPartPaths(dstPartType) + mergeIdx := pt.nextMergeIdx() + dstPartPath := pt.getDstPartPath(dstPartType, mergeIdx) if dstPartType == partBig { bigMergeWorkersLimitCh <- struct{}{} @@ -1304,17 +1292,10 @@ func (pt *partition) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFi if !isDedupEnabled() && isFinal && len(pws) == 1 && pws[0].mp != nil { // Fast path: flush a single in-memory part to disk. mp := pws[0].mp - if tmpPartPath == "" { - logger.Panicf("BUG: tmpPartPath must be non-empty") - } - - if err := mp.StoreToDisk(tmpPartPath); err != nil { - return fmt.Errorf("cannot store in-memory part to %q: %w", tmpPartPath, err) - } - pwNew, err := pt.openCreatedPart(&mp.ph, pws, nil, ptPath, tmpPartPath, mergeIdx) - if err != nil { - return fmt.Errorf("cannot atomically register the created part: %w", err) + if err := mp.StoreToDisk(dstPartPath); err != nil { + logger.Panicf("FATAL: cannot store in-memory part to %s: %s", dstPartPath, err) } + pwNew := pt.openCreatedPart(&mp.ph, pws, nil, dstPartPath) pt.swapSrcWithDstParts(pws, pwNew, dstPartType) return nil } @@ -1322,7 +1303,7 @@ func (pt *partition) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFi // Prepare BlockStreamReaders for source parts. bsrs, err := openBlockStreamReaders(pws) if err != nil { - return err + logger.Panicf("FATAL: cannot open source parts for merging: %s", err) } closeBlockStreamReaders := func() { for _, bsr := range bsrs { @@ -1348,45 +1329,38 @@ func (pt *partition) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFi mpNew = getInmemoryPart() bsw.InitFromInmemoryPart(mpNew, compressLevel) } else { - if tmpPartPath == "" { - logger.Panicf("BUG: tmpPartPath must be non-empty") + if dstPartPath == "" { + logger.Panicf("BUG: dstPartPath must be non-empty") } nocache := dstPartType == partBig - if err := bsw.InitFromFilePart(tmpPartPath, nocache, compressLevel); err != nil { - closeBlockStreamReaders() - return fmt.Errorf("cannot create destination part at %q: %w", tmpPartPath, err) + if err := bsw.InitFromFilePart(dstPartPath, nocache, compressLevel); err != nil { + logger.Panicf("FATAL: cannot create destination part at %s: %s", dstPartPath, err) } } // Merge source parts to destination part. - ph, err := pt.mergePartsInternal(tmpPartPath, bsw, bsrs, dstPartType, stopCh) + ph, err := pt.mergePartsInternal(dstPartPath, bsw, bsrs, dstPartType, stopCh) putBlockStreamWriter(bsw) closeBlockStreamReaders() if err != nil { - return fmt.Errorf("cannot merge %d parts: %w", len(pws), err) + return err } if mpNew != nil { // Update partHeader for destination inmemory part after the merge. mpNew.ph = *ph } - // Atomically move the created part from tmpPartPath to its destination - // and swap the source parts with the newly created part. - pwNew, err := pt.openCreatedPart(ph, pws, mpNew, ptPath, tmpPartPath, mergeIdx) - if err != nil { - return fmt.Errorf("cannot atomically register the created part: %w", err) - } + // Atomically swap the source parts with the newly created part. + pwNew := pt.openCreatedPart(ph, pws, mpNew, dstPartPath) dstRowsCount := uint64(0) dstBlocksCount := uint64(0) dstSize := uint64(0) - dstPartPath := "" if pwNew != nil { pDst := pwNew.p dstRowsCount = pDst.ph.RowsCount dstBlocksCount = pDst.ph.BlocksCount dstSize = pDst.size - dstPartPath = pDst.String() } pt.swapSrcWithDstParts(pws, pwNew, dstPartType) @@ -1439,7 +1413,7 @@ func (pt *partition) getDstPartType(pws []*partWrapper, isFinal bool) partType { return partInmemory } -func (pt *partition) getDstPartPaths(dstPartType partType) (string, string, uint64) { +func (pt *partition) getDstPartPath(dstPartType partType, mergeIdx uint64) string { ptPath := "" switch dstPartType { case partSmall: @@ -1451,13 +1425,11 @@ func (pt *partition) getDstPartPaths(dstPartType partType) (string, string, uint default: logger.Panicf("BUG: unknown partType=%d", dstPartType) } - ptPath = filepath.Clean(ptPath) - mergeIdx := pt.nextMergeIdx() - tmpPartPath := "" + dstPartPath := "" if dstPartType != partInmemory { - tmpPartPath = fmt.Sprintf("%s/tmp/%016X", ptPath, mergeIdx) + dstPartPath = fmt.Sprintf("%s/%016X", ptPath, mergeIdx) } - return ptPath, tmpPartPath, mergeIdx + return dstPartPath } func openBlockStreamReaders(pws []*partWrapper) ([]*blockStreamReader, error) { @@ -1479,7 +1451,7 @@ func openBlockStreamReaders(pws []*partWrapper) ([]*blockStreamReader, error) { return bsrs, nil } -func (pt *partition) mergePartsInternal(tmpPartPath string, bsw *blockStreamWriter, bsrs []*blockStreamReader, dstPartType partType, stopCh <-chan struct{}) (*partHeader, error) { +func (pt *partition) mergePartsInternal(dstPartPath string, bsw *blockStreamWriter, bsrs []*blockStreamReader, dstPartType partType, stopCh <-chan struct{}) (*partHeader, error) { var ph partHeader var rowsMerged *uint64 var rowsDeleted *uint64 @@ -1510,64 +1482,42 @@ func (pt *partition) mergePartsInternal(tmpPartPath string, bsw *blockStreamWrit atomic.AddUint64(activeMerges, ^uint64(0)) atomic.AddUint64(mergesCount, 1) if err != nil { - return nil, fmt.Errorf("cannot merge parts to %q: %w", tmpPartPath, err) + return nil, fmt.Errorf("cannot merge %d parts to %s: %w", len(bsrs), dstPartPath, err) } - if tmpPartPath != "" { + if dstPartPath != "" { ph.MinDedupInterval = GetDedupInterval(ph.MaxTimestamp) - if err := ph.writeMinDedupInterval(tmpPartPath); err != nil { - return nil, fmt.Errorf("cannot store min dedup interval: %w", err) + if err := ph.WriteMetadata(dstPartPath); err != nil { + logger.Panicf("FATAL: cannot store metadata to %s: %s", dstPartPath, err) } } return &ph, nil } -func (pt *partition) openCreatedPart(ph *partHeader, pws []*partWrapper, mpNew *inmemoryPart, ptPath, tmpPartPath string, mergeIdx uint64) (*partWrapper, error) { - dstPartPath := "" - if mpNew == nil || !areAllInmemoryParts(pws) { - // Either source or destination parts are located on disk. - // Create a transaction for atomic deleting of old parts and moving new part to its destination on disk. - var bb bytesutil.ByteBuffer - for _, pw := range pws { - if pw.mp == nil { - fmt.Fprintf(&bb, "%s\n", pw.p.path) - } - } - if ph.RowsCount > 0 { - // The destination part may have no rows if they are deleted during the merge. - dstPartPath = ph.Path(ptPath, mergeIdx) - } - fmt.Fprintf(&bb, "%s -> %s\n", tmpPartPath, dstPartPath) - txnPath := fmt.Sprintf("%s/txn/%016X", ptPath, mergeIdx) - if err := fs.WriteFileAtomically(txnPath, bb.B, false); err != nil { - return nil, fmt.Errorf("cannot create transaction file %q: %w", txnPath, err) - } - - // Run the created transaction. - if err := runTransaction(&pt.snapshotLock, pt.smallPartsPath, pt.bigPartsPath, txnPath); err != nil { - return nil, fmt.Errorf("cannot execute transaction %q: %w", txnPath, err) - } - } +func (pt *partition) openCreatedPart(ph *partHeader, pws []*partWrapper, mpNew *inmemoryPart, dstPartPath string) *partWrapper { // Open the created part. if ph.RowsCount == 0 { - // The created part is empty. - return nil, nil + // The created part is empty. Remove it + if mpNew == nil { + fs.MustRemoveAll(dstPartPath) + } + return nil } if mpNew != nil { // Open the created part from memory. flushToDiskDeadline := getFlushToDiskDeadline(pws) pwNew := newPartWrapperFromInmemoryPart(mpNew, flushToDiskDeadline) - return pwNew, nil + return pwNew } // Open the created part from disk. pNew, err := openFilePart(dstPartPath) if err != nil { - return nil, fmt.Errorf("cannot open merged part %q: %w", dstPartPath, err) + logger.Panicf("FATAL: cannot open merged part %s: %s", dstPartPath, err) } pwNew := &partWrapper{ p: pNew, refCount: 1, } - return pwNew, nil + return pwNew } func areAllInmemoryParts(pws []*partWrapper) bool { @@ -1593,6 +1543,7 @@ func (pt *partition) swapSrcWithDstParts(pws []*partWrapper, pwNew *partWrapper, removedBigParts := 0 pt.partsLock.Lock() + pt.inmemoryParts, removedInmemoryParts = removeParts(pt.inmemoryParts, m) pt.smallParts, removedSmallParts = removeParts(pt.smallParts, m) pt.bigParts, removedBigParts = removeParts(pt.bigParts, m) @@ -1609,6 +1560,14 @@ func (pt *partition) swapSrcWithDstParts(pws []*partWrapper, pwNew *partWrapper, } pt.notifyBackgroundMergers() } + + // Atomically store the updated list of file-based parts on disk. + // This must be performed under partsLock in order to prevent from races + // when multiple concurrently running goroutines update the list. + if removedSmallParts > 0 || removedBigParts > 0 || pwNew != nil && (dstPartType == partSmall || dstPartType == partBig) { + mustWritePartNames(pt.smallParts, pt.bigParts, pt.smallPartsPath) + } + pt.partsLock.Unlock() removedParts := removedInmemoryParts + removedSmallParts + removedBigParts @@ -1616,8 +1575,10 @@ func (pt *partition) swapSrcWithDstParts(pws []*partWrapper, pwNew *partWrapper, logger.Panicf("BUG: unexpected number of parts removed; got %d, want %d", removedParts, len(m)) } - // Remove partition references from old parts. + // Mark old parts as must be deleted and decrement reference count, + // so they are eventually closed and deleted. for _, pw := range pws { + atomic.StoreUint32(&pw.mustBeDeleted, 1) pw.decRef() } } @@ -1687,62 +1648,35 @@ func (pt *partition) stalePartsRemover() { } func (pt *partition) removeStaleParts() { - m := make(map[*partWrapper]bool) startTime := time.Now() retentionDeadline := timestampFromTime(startTime) - pt.s.retentionMsecs + var pws []*partWrapper pt.partsLock.Lock() for _, pw := range pt.inmemoryParts { if !pw.isInMerge && pw.p.ph.MaxTimestamp < retentionDeadline { atomic.AddUint64(&pt.inmemoryRowsDeleted, pw.p.ph.RowsCount) - m[pw] = true + pw.isInMerge = true + pws = append(pws, pw) } } for _, pw := range pt.smallParts { if !pw.isInMerge && pw.p.ph.MaxTimestamp < retentionDeadline { atomic.AddUint64(&pt.smallRowsDeleted, pw.p.ph.RowsCount) - m[pw] = true + pw.isInMerge = true + pws = append(pws, pw) } } for _, pw := range pt.bigParts { if !pw.isInMerge && pw.p.ph.MaxTimestamp < retentionDeadline { atomic.AddUint64(&pt.bigRowsDeleted, pw.p.ph.RowsCount) - m[pw] = true + pw.isInMerge = true + pws = append(pws, pw) } } - removedInmemoryParts := 0 - removedSmallParts := 0 - removedBigParts := 0 - if len(m) > 0 { - pt.inmemoryParts, removedInmemoryParts = removeParts(pt.inmemoryParts, m) - pt.smallParts, removedSmallParts = removeParts(pt.smallParts, m) - pt.bigParts, removedBigParts = removeParts(pt.bigParts, m) - } pt.partsLock.Unlock() - removedParts := removedInmemoryParts + removedSmallParts + removedBigParts - if removedParts != len(m) { - logger.Panicf("BUG: unexpected number of stale parts removed; got %d, want %d", removedParts, len(m)) - } - - // Physically remove stale parts under snapshotLock in order to provide - // consistent snapshots with table.CreateSnapshot(). - pt.snapshotLock.RLock() - for pw := range m { - if pw.mp == nil { - logger.Infof("removing part %q, since its data is out of the configured retention (%d secs)", pw.p.path, pt.s.retentionMsecs/1000) - fs.MustRemoveDirAtomic(pw.p.path) - } - } - // There is no need in calling fs.MustSyncPath() on pt.smallPartsPath and pt.bigPartsPath, - // since they should be automatically called inside fs.MustRemoveDirAtomic(). - pt.snapshotLock.RUnlock() - - // Remove partition references from removed parts. - for pw := range m { - pw.decRef() - } - + pt.swapSrcWithDstParts(pws, nil, partSmall) } // getPartsToMerge returns optimal parts to merge from pws. @@ -1883,68 +1817,50 @@ func getPartsSize(pws []*partWrapper) uint64 { return n } -func openParts(pathPrefix1, pathPrefix2, path string) ([]*partWrapper, error) { +func openParts(path string, partNames []string) ([]*partWrapper, error) { // The path can be missing after restoring from backup, so create it if needed. if err := fs.MkdirAllIfNotExist(path); err != nil { return nil, err } fs.MustRemoveTemporaryDirs(path) - d, err := os.Open(path) + + // Remove txn and tmp directories, which may be left after the upgrade + // to v1.90.0 and newer versions. + fs.MustRemoveAll(path + "/txn") + fs.MustRemoveAll(path + "/tmp") + + // Remove dirs missing in partNames. These dirs may be left after unclean shutdown + // or after the update from versions prior to v1.90.0. + des, err := os.ReadDir(path) if err != nil { - return nil, fmt.Errorf("cannot open partition directory: %w", err) + return nil, fmt.Errorf("cannot read partition dir: %w", err) } - defer fs.MustClose(d) - - // Run remaining transactions and cleanup /txn and /tmp directories. - // Snapshots cannot be created yet, so use fakeSnapshotLock. - var fakeSnapshotLock sync.RWMutex - if err := runTransactions(&fakeSnapshotLock, pathPrefix1, pathPrefix2, path); err != nil { - return nil, fmt.Errorf("cannot run transactions from %q: %w", path, err) + m := make(map[string]struct{}, len(partNames)) + for _, partName := range partNames { + m[partName] = struct{}{} } - - txnDir := path + "/txn" - fs.MustRemoveDirAtomic(txnDir) - tmpDir := path + "/tmp" - fs.MustRemoveDirAtomic(tmpDir) - if err := createPartitionDirs(path); err != nil { - return nil, fmt.Errorf("cannot create directories for partition %q: %w", path, err) - } - - // Open parts. - fis, err := d.Readdir(-1) - if err != nil { - return nil, fmt.Errorf("cannot read directory %q: %w", d.Name(), err) - } - var pws []*partWrapper - for _, fi := range fis { - if !fs.IsDirOrSymlink(fi) { + for _, de := range des { + if !fs.IsDirOrSymlink(de) { // Skip non-directories. continue } - fn := fi.Name() - if fn == "snapshots" { - // "snapshots" dir is skipped for backwards compatibility. Now it is unused. - continue + fn := de.Name() + if _, ok := m[fn]; !ok { + deletePath := path + "/" + fn + fs.MustRemoveAll(deletePath) } - if fn == "tmp" || fn == "txn" { - // Skip special dirs. - continue - } - partPath := path + "/" + fn - if fs.IsEmptyDir(partPath) { - // Remove empty directory, which can be left after unclean shutdown on NFS. - // See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1142 - fs.MustRemoveDirAtomic(partPath) - continue - } - startTime := time.Now() + } + fs.MustSyncPath(path) + + // Open parts + var pws []*partWrapper + for _, partName := range partNames { + partPath := path + "/" + partName p, err := openFilePart(partPath) if err != nil { mustCloseParts(pws) return nil, fmt.Errorf("cannot open part %q: %w", partPath, err) } - logger.Infof("opened part %q in %.3f seconds", partPath, time.Since(startTime).Seconds()) - pw := &partWrapper{ p: p, refCount: 1, @@ -1966,8 +1882,7 @@ func mustCloseParts(pws []*partWrapper) { // CreateSnapshotAt creates pt snapshot at the given smallPath and bigPath dirs. // -// Snapshot is created using linux hard links, so it is usually created -// very quickly. +// Snapshot is created using linux hard links, so it is usually created very quickly. func (pt *partition) CreateSnapshotAt(smallPath, bigPath string) error { logger.Infof("creating partition snapshot of %q and %q...", pt.smallPartsPath, pt.bigPartsPath) startTime := time.Now() @@ -1975,15 +1890,32 @@ func (pt *partition) CreateSnapshotAt(smallPath, bigPath string) error { // Flush inmemory data to disk. pt.flushInmemoryRows() - // The snapshot must be created under the lock in order to prevent from - // concurrent modifications via runTransaction. - pt.snapshotLock.Lock() - defer pt.snapshotLock.Unlock() + pt.partsLock.Lock() + incRefForParts(pt.smallParts) + pwsSmall := append([]*partWrapper{}, pt.smallParts...) + incRefForParts(pt.bigParts) + pwsBig := append([]*partWrapper{}, pt.bigParts...) + pt.partsLock.Unlock() - if err := pt.createSnapshot(pt.smallPartsPath, smallPath); err != nil { + defer func() { + pt.PutParts(pwsSmall) + pt.PutParts(pwsBig) + }() + + if err := fs.MkdirAllFailIfExist(smallPath); err != nil { + return fmt.Errorf("cannot create snapshot dir %q: %w", smallPath, err) + } + if err := fs.MkdirAllFailIfExist(bigPath); err != nil { + return fmt.Errorf("cannot create snapshot dir %q: %w", bigPath, err) + } + + // Create a file with part names at smallPath + mustWritePartNames(pwsSmall, pwsBig, smallPath) + + if err := pt.createSnapshot(pt.smallPartsPath, smallPath, pwsSmall); err != nil { return fmt.Errorf("cannot create snapshot for %q: %w", pt.smallPartsPath, err) } - if err := pt.createSnapshot(pt.bigPartsPath, bigPath); err != nil { + if err := pt.createSnapshot(pt.bigPartsPath, bigPath, pwsBig); err != nil { return fmt.Errorf("cannot create snapshot for %q: %w", pt.bigPartsPath, err) } @@ -1995,214 +1927,115 @@ func (pt *partition) CreateSnapshotAt(smallPath, bigPath string) error { // createSnapshot creates a snapshot from srcDir to dstDir. // // The caller is responsible for deleting dstDir if createSnapshot() returns error. -func (pt *partition) createSnapshot(srcDir, dstDir string) error { - if err := fs.MkdirAllFailIfExist(dstDir); err != nil { - return fmt.Errorf("cannot create snapshot dir %q: %w", dstDir, err) - } - - d, err := os.Open(srcDir) - if err != nil { - return fmt.Errorf("cannot open partition difrectory: %w", err) - } - defer fs.MustClose(d) - - fis, err := d.Readdir(-1) - if err != nil { - return fmt.Errorf("cannot read partition directory: %w", err) - } - for _, fi := range fis { - fn := fi.Name() - if !fs.IsDirOrSymlink(fi) { - if fn == "appliedRetention.txt" { - // Copy the appliedRetention.txt file to dstDir. - // This file can be created by VictoriaMetrics enterprise. - // See https://docs.victoriametrics.com/#retention-filters . - // Do not make hard link to this file, since it can be modified over time. - srcPath := srcDir + "/" + fn - dstPath := dstDir + "/" + fn - if err := fs.CopyFile(srcPath, dstPath); err != nil { - return fmt.Errorf("cannot copy %q to %q: %w", srcPath, dstPath, err) - } - } - // Skip non-directories. - continue - } - if fn == "tmp" || fn == "txn" || fs.IsScheduledForRemoval(fn) { - // Skip special dirs. - continue - } - srcPartPath := srcDir + "/" + fn - dstPartPath := dstDir + "/" + fn +func (pt *partition) createSnapshot(srcDir, dstDir string, pws []*partWrapper) error { + // Make hardlinks for pws at dstDir + for _, pw := range pws { + srcPartPath := pw.p.path + dstPartPath := dstDir + "/" + filepath.Base(srcPartPath) if err := fs.HardLinkFiles(srcPartPath, dstPartPath); err != nil { return fmt.Errorf("cannot create hard links from %q to %q: %w", srcPartPath, dstPartPath, err) } } + // Copy the appliedRetention.txt file to dstDir. + // This file can be created by VictoriaMetrics enterprise. + // See https://docs.victoriametrics.com/#retention-filters . + // Do not make hard link to this file, since it can be modified over time. + srcPath := srcDir + "/appliedRetention.txt" + if fs.IsPathExist(srcPath) { + dstPath := dstDir + "/" + filepath.Base(srcPath) + if err := fs.CopyFile(srcPath, dstPath); err != nil { + return fmt.Errorf("cannot copy %q to %q: %w", srcPath, dstPath, err) + } + } + fs.MustSyncPath(dstDir) - fs.MustSyncPath(filepath.Dir(dstDir)) + parentDir := filepath.Dir(dstDir) + fs.MustSyncPath(parentDir) return nil } -func runTransactions(txnLock *sync.RWMutex, pathPrefix1, pathPrefix2, path string) error { - // Wait until all the previous pending transaction deletions are finished. - pendingTxnDeletionsWG.Wait() +type partNamesJSON struct { + Small []string + Big []string +} - // Make sure all the current transaction deletions are finished before exiting. - defer pendingTxnDeletionsWG.Wait() +func mustWritePartNames(pwsSmall, pwsBig []*partWrapper, dstDir string) { + partNamesSmall := getPartNames(pwsSmall) + partNamesBig := getPartNames(pwsBig) + partNames := &partNamesJSON{ + Small: partNamesSmall, + Big: partNamesBig, + } + data, err := json.Marshal(partNames) + if err != nil { + logger.Panicf("BUG: cannot marshal partNames to JSON: %s", err) + } + partNamesPath := dstDir + "/parts.json" + if err := fs.WriteFileAtomically(partNamesPath, data, true); err != nil { + logger.Panicf("FATAL: cannot update %s: %s", partNamesPath, err) + } +} - txnDir := path + "/txn" - d, err := os.Open(txnDir) +func getPartNames(pws []*partWrapper) []string { + partNames := make([]string, 0, len(pws)) + for _, pw := range pws { + if pw.mp != nil { + // Skip in-memory parts + continue + } + partName := filepath.Base(pw.p.path) + partNames = append(partNames, partName) + } + sort.Strings(partNames) + return partNames +} + +func mustReadPartNames(smallPartsPath, bigPartsPath string) ([]string, []string) { + partNamesPath := smallPartsPath + "/parts.json" + data, err := os.ReadFile(partNamesPath) + if err == nil { + var partNames partNamesJSON + if err := json.Unmarshal(data, &partNames); err != nil { + logger.Panicf("FATAL: cannot parse %s: %s", partNamesPath, err) + } + return partNames.Small, partNames.Big + } + if !os.IsNotExist(err) { + logger.Panicf("FATAL: cannot read parts.json file: %s", err) + } + // The parts.json is missing. This is the upgrade from versions previous to v1.90.0. + // Read part names from smallPartsPath and bigPartsPath directories + partNamesSmall := mustReadPartNamesFromDir(smallPartsPath) + partNamesBig := mustReadPartNamesFromDir(bigPartsPath) + return partNamesSmall, partNamesBig +} + +func mustReadPartNamesFromDir(srcDir string) []string { + des, err := os.ReadDir(srcDir) if err != nil { if os.IsNotExist(err) { return nil } - return fmt.Errorf("cannot open transaction directory: %w", err) + logger.Panicf("FATAL: cannot read partition dir: %s", err) } - defer fs.MustClose(d) - - fis, err := d.Readdir(-1) - if err != nil { - return fmt.Errorf("cannot read directory %q: %w", d.Name(), err) - } - - // Sort transaction files by id. - sort.Slice(fis, func(i, j int) bool { - return fis[i].Name() < fis[j].Name() - }) - - for _, fi := range fis { - fn := fi.Name() - if fs.IsTemporaryFileName(fn) { - // Skip temporary files, which could be left after unclean shutdown. + var partNames []string + for _, de := range des { + if !fs.IsDirOrSymlink(de) { + // Skip non-directories. continue } - txnPath := txnDir + "/" + fn - if err := runTransaction(txnLock, pathPrefix1, pathPrefix2, txnPath); err != nil { - return fmt.Errorf("cannot run transaction from %q: %w", txnPath, err) + partName := de.Name() + if isSpecialDir(partName) { + // Skip special dirs. + continue } + partNames = append(partNames, partName) } - return nil + return partNames } -func runTransaction(txnLock *sync.RWMutex, pathPrefix1, pathPrefix2, txnPath string) error { - // The transaction must run under read lock in order to provide - // consistent snapshots with partition.CreateSnapshot(). - txnLock.RLock() - defer txnLock.RUnlock() - - data, err := os.ReadFile(txnPath) - if err != nil { - return fmt.Errorf("cannot read transaction file: %w", err) - } - if len(data) > 0 && data[len(data)-1] == '\n' { - data = data[:len(data)-1] - } - paths := strings.Split(string(data), "\n") - - if len(paths) == 0 { - return fmt.Errorf("empty transaction") - } - rmPaths := paths[:len(paths)-1] - mvPaths := strings.Split(paths[len(paths)-1], " -> ") - if len(mvPaths) != 2 { - return fmt.Errorf("invalid last line in the transaction file: got %q; must contain `srcPath -> dstPath`", paths[len(paths)-1]) - } - - // Remove old paths. It is OK if certain paths don't exist. - for _, path := range rmPaths { - path, err := validatePath(pathPrefix1, pathPrefix2, path) - if err != nil { - return fmt.Errorf("invalid path to remove: %w", err) - } - fs.MustRemoveDirAtomic(path) - } - - // Move the new part to new directory. - srcPath := mvPaths[0] - dstPath := mvPaths[1] - if len(srcPath) > 0 { - srcPath, err = validatePath(pathPrefix1, pathPrefix2, srcPath) - if err != nil { - return fmt.Errorf("invalid source path to rename: %w", err) - } - if len(dstPath) > 0 { - // Move srcPath to dstPath. - dstPath, err = validatePath(pathPrefix1, pathPrefix2, dstPath) - if err != nil { - return fmt.Errorf("invalid destination path to rename: %w", err) - } - if fs.IsPathExist(srcPath) { - if err := os.Rename(srcPath, dstPath); err != nil { - return fmt.Errorf("cannot rename %q to %q: %w", srcPath, dstPath, err) - } - } else if !fs.IsPathExist(dstPath) { - // Emit info message for the expected condition after unclean shutdown on NFS disk. - // The dstPath part may be missing because it could be already merged into bigger part - // while old source parts for the current txn weren't still deleted due to NFS locks. - logger.Infof("cannot find both source and destination paths: %q -> %q; this may be the case after unclean shutdown "+ - "(OOM, `kill -9`, hard reset) on NFS disk", srcPath, dstPath) - } - } else { - // Just remove srcPath. - fs.MustRemoveDirAtomic(srcPath) - } - } - - // Flush pathPrefix* directory metadata to the underlying storage, - // so the moved files become visible there. - fs.MustSyncPath(pathPrefix1) - fs.MustSyncPath(pathPrefix2) - - pendingTxnDeletionsWG.Add(1) - go func() { - defer pendingTxnDeletionsWG.Done() - - // There is no need in calling fs.MustSyncPath for pathPrefix* after parts' removal, - // since it is already called by fs.MustRemoveDirAtomic. - - if err := os.Remove(txnPath); err != nil { - logger.Errorf("cannot remove transaction file %q: %s", txnPath, err) - } - }() - - return nil -} - -var pendingTxnDeletionsWG syncwg.WaitGroup - -func validatePath(pathPrefix1, pathPrefix2, path string) (string, error) { - var err error - - pathPrefix1, err = filepath.Abs(pathPrefix1) - if err != nil { - return path, fmt.Errorf("cannot determine absolute path for pathPrefix1=%q: %w", pathPrefix1, err) - } - pathPrefix2, err = filepath.Abs(pathPrefix2) - if err != nil { - return path, fmt.Errorf("cannot determine absolute path for pathPrefix2=%q: %w", pathPrefix2, err) - } - - path, err = filepath.Abs(path) - if err != nil { - return path, fmt.Errorf("cannot determine absolute path for %q: %w", path, err) - } - if !strings.HasPrefix(path, pathPrefix1+"/") && !strings.HasPrefix(path, pathPrefix2+"/") { - return path, fmt.Errorf("invalid path %q; must start with either %q or %q", path, pathPrefix1+"/", pathPrefix2+"/") - } - return path, nil -} - -func createPartitionDirs(path string) error { - path = filepath.Clean(path) - txnPath := path + "/txn" - if err := fs.MkdirAllFailIfExist(txnPath); err != nil { - return fmt.Errorf("cannot create txn directory %q: %w", txnPath, err) - } - tmpPath := path + "/tmp" - if err := fs.MkdirAllFailIfExist(tmpPath); err != nil { - return fmt.Errorf("cannot create tmp directory %q: %w", tmpPath, err) - } - fs.MustSyncPath(path) - return nil +func isSpecialDir(name string) bool { + return name == "tmp" || name == "txn" || name == "snapshots" || fs.IsScheduledForRemoval(name) } diff --git a/lib/storage/storage.go b/lib/storage/storage.go index 38a06dec5c..d020ae9f97 100644 --- a/lib/storage/storage.go +++ b/lib/storage/storage.go @@ -160,8 +160,8 @@ func OpenStorage(path string, retentionMsecs int64, maxHourlySeries, maxDailySer // See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1447 for details. if fs.IsPathExist(s.cachePath + "/reset_cache_on_startup") { logger.Infof("removing cache directory at %q, since it contains `reset_cache_on_startup` file...", s.cachePath) - // Do not use fs.MustRemoveDirAtomic() here, since the cache directory may be mounted - // to a separate filesystem. In this case the fs.MustRemoveDirAtomic() will fail while + // Do not use fs.MustRemoveAll() here, since the cache directory may be mounted + // to a separate filesystem. In this case the fs.MustRemoveAll() will fail while // trying to remove the mount root. fs.RemoveDirContents(s.cachePath) logger.Infof("cache directory at %q has been successfully removed", s.cachePath) @@ -2339,25 +2339,19 @@ func (s *Storage) openIndexDBTables(path string) (curr, prev *indexDB, err error } fs.MustRemoveTemporaryDirs(path) - d, err := os.Open(path) - if err != nil { - return nil, nil, fmt.Errorf("cannot open directory: %w", err) - } - defer fs.MustClose(d) - // Search for the two most recent tables - the last one is active, // the previous one contains backup data. - fis, err := d.Readdir(-1) + des, err := os.ReadDir(path) if err != nil { return nil, nil, fmt.Errorf("cannot read directory: %w", err) } var tableNames []string - for _, fi := range fis { - if !fs.IsDirOrSymlink(fi) { + for _, de := range des { + if !fs.IsDirOrSymlink(de) { // Skip non-directories. continue } - tableName := fi.Name() + tableName := de.Name() if !indexDBTableNameRegexp.MatchString(tableName) { // Skip invalid directories. continue @@ -2383,7 +2377,7 @@ func (s *Storage) openIndexDBTables(path string) (curr, prev *indexDB, err error for _, tn := range tableNames[:len(tableNames)-2] { pathToRemove := path + "/" + tn logger.Infof("removing obsolete indexdb dir %q...", pathToRemove) - fs.MustRemoveDirAtomic(pathToRemove) + fs.MustRemoveAll(pathToRemove) logger.Infof("removed obsolete indexdb dir %q", pathToRemove) } diff --git a/lib/storage/table.go b/lib/storage/table.go index 32bb033733..95fd3a6570 100644 --- a/lib/storage/table.go +++ b/lib/storage/table.go @@ -466,7 +466,7 @@ func (tb *table) finalDedupWatcher() { timestamp := timestampFromTime(time.Now()) currentPartitionName := timestampToPartitionName(timestamp) for _, ptw := range ptws { - if ptw.pt.name == currentPartitionName { + if ptw.pt.name == currentPartitionName || !ptw.pt.isFinalDedupNeeded() { // Do not run final dedup for the current month. continue } @@ -535,22 +535,16 @@ func openPartitions(smallPartitionsPath, bigPartitionsPath string, s *Storage) ( } func populatePartitionNames(partitionsPath string, ptNames map[string]bool) error { - d, err := os.Open(partitionsPath) + des, err := os.ReadDir(partitionsPath) if err != nil { - return fmt.Errorf("cannot open directory with partitions: %w", err) + return fmt.Errorf("cannot read directory with partitions: %w", err) } - defer fs.MustClose(d) - - fis, err := d.Readdir(-1) - if err != nil { - return fmt.Errorf("cannot read directory with partitions %q: %w", partitionsPath, err) - } - for _, fi := range fis { - if !fs.IsDirOrSymlink(fi) { + for _, de := range des { + if !fs.IsDirOrSymlink(de) { // Skip non-directories continue } - ptName := fi.Name() + ptName := de.Name() if ptName == "snapshots" { // Skip directory with snapshots continue diff --git a/snap/local/README.md b/snap/local/README.md index fe55d355c6..4862bf3817 100644 --- a/snap/local/README.md +++ b/snap/local/README.md @@ -38,7 +38,7 @@ Configuration management: vi /var/snap/victoriametrics/current/etc/victoriametrics-scrape-config.yaml ``` -after changes, you can trigger config reread with `curl localhost:8248/-/reload`. +after changes, you can trigger config reread with `curl localhost:8428/-/reload`. Configuration tuning is possible with editing extra_flags: diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index da5f7e7bbd..651c1f60c2 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -40,7 +40,7 @@ description: | ** Configuration management** * Prometheus scrape config can be edited with your favorite editor, its located at `vi /var/snap/victoriametrics/current/etc/victoriametrics-scrape-config.yaml` - after changes, you can trigger config reread with `curl localhost:8248/-/reload`. + after changes, you can trigger config reread with `curl localhost:8428/-/reload`. * Configuration tuning is possible with editing extra_flags: `echo 'FLAGS="-selfScrapeInterval=10s -search.logSlowQueryDuration=20s"' > /var/snap/victoriametrics/current/extra_flags && snap restart victoriametrics` * Data folder located at `/var/snap/victoriametrics/current/var/lib/victoriametrics/`. diff --git a/vendor/cloud.google.com/go/iam/CHANGES.md b/vendor/cloud.google.com/go/iam/CHANGES.md index 9d39f98060..40ae15de52 100644 --- a/vendor/cloud.google.com/go/iam/CHANGES.md +++ b/vendor/cloud.google.com/go/iam/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.13.0](https://github.com/googleapis/google-cloud-go/compare/iam/v0.12.0...iam/v0.13.0) (2023-03-15) + + +### Features + +* **iam:** Update iam and longrunning deps ([91a1f78](https://github.com/googleapis/google-cloud-go/commit/91a1f784a109da70f63b96414bba8a9b4254cddd)) + ## [0.12.0](https://github.com/googleapis/google-cloud-go/compare/iam/v0.11.0...iam/v0.12.0) (2023-02-17) diff --git a/vendor/cloud.google.com/go/iam/apiv1/iampb/iam_policy.pb.go b/vendor/cloud.google.com/go/iam/apiv1/iampb/iam_policy.pb.go index 9ef7373d2c..21079f65c3 100644 --- a/vendor/cloud.google.com/go/iam/apiv1/iampb/iam_policy.pb.go +++ b/vendor/cloud.google.com/go/iam/apiv1/iampb/iam_policy.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v3.21.9 // source: google/iam/v1/iam_policy.proto package iampb diff --git a/vendor/cloud.google.com/go/iam/apiv1/iampb/options.pb.go b/vendor/cloud.google.com/go/iam/apiv1/iampb/options.pb.go index 026c115c27..e8a2aca9c7 100644 --- a/vendor/cloud.google.com/go/iam/apiv1/iampb/options.pb.go +++ b/vendor/cloud.google.com/go/iam/apiv1/iampb/options.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v3.21.9 // source: google/iam/v1/options.proto package iampb diff --git a/vendor/cloud.google.com/go/iam/apiv1/iampb/policy.pb.go b/vendor/cloud.google.com/go/iam/apiv1/iampb/policy.pb.go index 16bed436c6..e521db60fa 100644 --- a/vendor/cloud.google.com/go/iam/apiv1/iampb/policy.pb.go +++ b/vendor/cloud.google.com/go/iam/apiv1/iampb/policy.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v3.21.9 // source: google/iam/v1/policy.proto package iampb diff --git a/vendor/cloud.google.com/go/storage/CHANGES.md b/vendor/cloud.google.com/go/storage/CHANGES.md index 3f4097faea..07f0d829c3 100644 --- a/vendor/cloud.google.com/go/storage/CHANGES.md +++ b/vendor/cloud.google.com/go/storage/CHANGES.md @@ -1,6 +1,20 @@ # Changes +## [1.30.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.29.0...storage/v1.30.0) (2023-03-15) + + +### Features + +* **storage/internal:** Update routing annotation for CreateBucketRequest docs: Add support for end-to-end checksumming in the gRPC WriteObject flow feat!: BREAKING CHANGE - renaming Notification to NotificationConfig ([2fef56f](https://github.com/googleapis/google-cloud-go/commit/2fef56f75a63dc4ff6e0eea56c7b26d4831c8e27)) +* **storage:** Json downloads ([#7158](https://github.com/googleapis/google-cloud-go/issues/7158)) ([574a86c](https://github.com/googleapis/google-cloud-go/commit/574a86c614445f8c3f5a54446820df774c31cd47)) +* **storage:** Update iam and longrunning deps ([91a1f78](https://github.com/googleapis/google-cloud-go/commit/91a1f784a109da70f63b96414bba8a9b4254cddd)) + + +### Bug Fixes + +* **storage:** Specify credentials with STORAGE_EMULATOR_HOST ([#7271](https://github.com/googleapis/google-cloud-go/issues/7271)) ([940ae15](https://github.com/googleapis/google-cloud-go/commit/940ae15f725ff384e345e627feb03d22e1fd8db5)) + ## [1.29.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.28.1...storage/v1.29.0) (2023-01-19) diff --git a/vendor/cloud.google.com/go/storage/client.go b/vendor/cloud.google.com/go/storage/client.go index d579a2b1ee..3bed9b64c2 100644 --- a/vendor/cloud.google.com/go/storage/client.go +++ b/vendor/cloud.google.com/go/storage/client.go @@ -19,9 +19,9 @@ import ( "io" "time" + "cloud.google.com/go/iam/apiv1/iampb" gax "github.com/googleapis/gax-go/v2" "google.golang.org/api/option" - iampb "google.golang.org/genproto/googleapis/iam/v1" ) // TODO(noahdietz): Move existing factory methods to this file. diff --git a/vendor/cloud.google.com/go/storage/doc.go b/vendor/cloud.google.com/go/storage/doc.go index 8bf3098431..cde7cfdba9 100644 --- a/vendor/cloud.google.com/go/storage/doc.go +++ b/vendor/cloud.google.com/go/storage/doc.go @@ -36,6 +36,9 @@ The client will use your default application credentials. Clients should be reused instead of created as needed. The methods of [Client] are safe for concurrent use by multiple goroutines. +You may configure the client by passing in options from the [google.golang.org/api/option] +package. You may also use options defined in this package, such as [WithJSONReads]. + If you only wish to access public data, you can create an unauthenticated client with diff --git a/vendor/cloud.google.com/go/storage/grpc_client.go b/vendor/cloud.google.com/go/storage/grpc_client.go index 1dfb6f8302..f77afe317b 100644 --- a/vendor/cloud.google.com/go/storage/grpc_client.go +++ b/vendor/cloud.google.com/go/storage/grpc_client.go @@ -17,11 +17,13 @@ package storage import ( "context" "encoding/base64" + "errors" "fmt" "io" "net/url" "os" + "cloud.google.com/go/iam/apiv1/iampb" "cloud.google.com/go/internal/trace" gapic "cloud.google.com/go/storage/internal/apiv2" storagepb "cloud.google.com/go/storage/internal/apiv2/stubs" @@ -29,7 +31,6 @@ import ( "google.golang.org/api/iterator" "google.golang.org/api/option" "google.golang.org/api/option/internaloption" - iampb "google.golang.org/genproto/googleapis/iam/v1" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" @@ -110,6 +111,11 @@ func newGRPCStorageClient(ctx context.Context, opts ...storageOption) (storageCl s := initSettings(opts...) s.clientOption = append(defaultGRPCOptions(), s.clientOption...) + config := newStorageConfig(s.clientOption...) + if config.readAPIWasSet { + return nil, errors.New("storage: GRPC is incompatible with any option that specifies an API for reads") + } + g, err := gapic.NewClient(ctx, s.clientOption...) if err != nil { return nil, err @@ -855,13 +861,6 @@ func (c *grpcStorageClient) NewRangeReader(ctx context.Context, params *newRange ctx = setUserProjectMetadata(ctx, s.userProject) } - // A negative length means "read to the end of the object", but the - // read_limit field it corresponds to uses zero to mean the same thing. Thus - // we coerce the length to 0 to read to the end of the object. - if params.length < 0 { - params.length = 0 - } - b := bucketResourceName(globalProjectAlias, params.bucket) req := &storagepb.ReadObjectRequest{ Bucket: b, @@ -884,13 +883,20 @@ func (c *grpcStorageClient) NewRangeReader(ctx context.Context, params *newRange cc, cancel := context.WithCancel(ctx) - start := params.offset + seen + req.ReadOffset = params.offset + seen + + // A negative length means "read to the end of the object", but the + // read_limit field it corresponds to uses zero to mean the same thing. Thus + // we coerce the length to 0 to read to the end of the object. + if params.length < 0 { + params.length = 0 + } + // Only set a ReadLimit if length is greater than zero, because zero // means read it all. if params.length > 0 { req.ReadLimit = params.length - seen } - req.ReadOffset = start if err := applyCondsProto("gRPCReader.reopen", params.gen, params.conds, req); err != nil { cancel() @@ -963,7 +969,7 @@ func (c *grpcStorageClient) NewRangeReader(ctx context.Context, params *newRange cr := msg.GetContentRange() if cr != nil { r.Attrs.StartOffset = cr.GetStart() - r.remain = cr.GetEnd() - cr.GetStart() + 1 + r.remain = cr.GetEnd() - cr.GetStart() } else { r.remain = size } @@ -1254,12 +1260,12 @@ func (c *grpcStorageClient) ListNotifications(ctx context.Context, bucket string if s.userProject != "" { ctx = setUserProjectMetadata(ctx, s.userProject) } - req := &storagepb.ListNotificationsRequest{ + req := &storagepb.ListNotificationConfigsRequest{ Parent: bucketResourceName(globalProjectAlias, bucket), } - var notifications []*storagepb.Notification + var notifications []*storagepb.NotificationConfig err = run(ctx, func() error { - gitr := c.raw.ListNotifications(ctx, req, s.gax...) + gitr := c.raw.ListNotificationConfigs(ctx, req, s.gax...) for { // PageSize is not set and fallbacks to the API default pageSize of 100. items, nextPageToken, err := gitr.InternalFetch(int(req.GetPageSize()), req.GetPageToken()) @@ -1286,14 +1292,14 @@ func (c *grpcStorageClient) CreateNotification(ctx context.Context, bucket strin defer func() { trace.EndSpan(ctx, err) }() s := callSettings(c.settings, opts...) - req := &storagepb.CreateNotificationRequest{ - Parent: bucketResourceName(globalProjectAlias, bucket), - Notification: toProtoNotification(n), + req := &storagepb.CreateNotificationConfigRequest{ + Parent: bucketResourceName(globalProjectAlias, bucket), + NotificationConfig: toProtoNotification(n), } - var pbn *storagepb.Notification + var pbn *storagepb.NotificationConfig err = run(ctx, func() error { var err error - pbn, err = c.raw.CreateNotification(ctx, req, s.gax...) + pbn, err = c.raw.CreateNotificationConfig(ctx, req, s.gax...) return err }, s.retry, s.idempotent, setRetryHeaderGRPC(ctx)) if err != nil { @@ -1307,9 +1313,9 @@ func (c *grpcStorageClient) DeleteNotification(ctx context.Context, bucket strin defer func() { trace.EndSpan(ctx, err) }() s := callSettings(c.settings, opts...) - req := &storagepb.DeleteNotificationRequest{Name: id} + req := &storagepb.DeleteNotificationConfigRequest{Name: id} return run(ctx, func() error { - return c.raw.DeleteNotification(ctx, req, s.gax...) + return c.raw.DeleteNotificationConfig(ctx, req, s.gax...) }, s.retry, s.idempotent, setRetryHeaderGRPC(ctx)) } diff --git a/vendor/cloud.google.com/go/storage/http_client.go b/vendor/cloud.google.com/go/storage/http_client.go index fae96043a9..2d0cbe117e 100644 --- a/vendor/cloud.google.com/go/storage/http_client.go +++ b/vendor/cloud.google.com/go/storage/http_client.go @@ -29,6 +29,7 @@ import ( "strings" "time" + "cloud.google.com/go/iam/apiv1/iampb" "cloud.google.com/go/internal/optional" "cloud.google.com/go/internal/trace" "golang.org/x/oauth2/google" @@ -39,7 +40,6 @@ import ( raw "google.golang.org/api/storage/v1" "google.golang.org/api/transport" htransport "google.golang.org/api/transport/http" - iampb "google.golang.org/genproto/googleapis/iam/v1" ) // httpStorageClient is the HTTP-JSON API implementation of the transport-agnostic @@ -53,6 +53,7 @@ type httpStorageClient struct { raw *raw.Service scheme string settings *settings + config *storageConfig } // newHTTPStorageClient initializes a new storageClient that uses the HTTP-JSON @@ -62,6 +63,7 @@ type httpStorageClient struct { func newHTTPStorageClient(ctx context.Context, opts ...storageOption) (storageClient, error) { s := initSettings(opts...) o := s.clientOption + config := newStorageConfig(o...) var creds *google.Credentials // In general, it is recommended to use raw.NewService instead of htransport.NewClient @@ -134,6 +136,7 @@ func newHTTPStorageClient(ctx context.Context, opts ...storageOption) (storageCl raw: rawService, scheme: u.Scheme, settings: s, + config: &config, }, nil } @@ -779,6 +782,13 @@ func (c *httpStorageClient) NewRangeReader(ctx context.Context, params *newRange s := callSettings(c.settings, opts...) + if c.config.useJSONforReads { + return c.newRangeReaderJSON(ctx, params, s) + } + return c.newRangeReaderXML(ctx, params, s) +} + +func (c *httpStorageClient) newRangeReaderXML(ctx context.Context, params *newRangeReaderParams, s *settings) (r *Reader, err error) { u := &url.URL{ Scheme: c.scheme, Host: c.readHost, @@ -793,186 +803,51 @@ func (c *httpStorageClient) NewRangeReader(ctx context.Context, params *newRange return nil, err } req = req.WithContext(ctx) + if s.userProject != "" { req.Header.Set("X-Goog-User-Project", s.userProject) } - if params.readCompressed { - req.Header.Set("Accept-Encoding", "gzip") - } - if err := setEncryptionHeaders(req.Header, params.encryptionKey, false); err != nil { + + if err := setRangeReaderHeaders(req.Header, params); err != nil { return nil, err } - // Define a function that initiates a Read with offset and length, assuming we - // have already read seen bytes. - reopen := func(seen int64) (*http.Response, error) { - // If the context has already expired, return immediately without making a - // call. - if err := ctx.Err(); err != nil { - return nil, err - } - start := params.offset + seen - if params.length < 0 && start < 0 { - req.Header.Set("Range", fmt.Sprintf("bytes=%d", start)) - } else if params.length < 0 && start > 0 { - req.Header.Set("Range", fmt.Sprintf("bytes=%d-", start)) - } else if params.length > 0 { - // The end character isn't affected by how many bytes we've seen. - req.Header.Set("Range", fmt.Sprintf("bytes=%d-%d", start, params.offset+params.length-1)) - } - // We wait to assign conditions here because the generation number can change in between reopen() runs. - if err := setConditionsHeaders(req.Header, params.conds); err != nil { - return nil, err - } - // If an object generation is specified, include generation as query string parameters. - if params.gen >= 0 { - req.URL.RawQuery = fmt.Sprintf("generation=%d", params.gen) - } - - var res *http.Response - err = run(ctx, func() error { - res, err = c.hc.Do(req) - if err != nil { - return err - } - if res.StatusCode == http.StatusNotFound { - res.Body.Close() - return ErrObjectNotExist - } - if res.StatusCode < 200 || res.StatusCode > 299 { - body, _ := ioutil.ReadAll(res.Body) - res.Body.Close() - return &googleapi.Error{ - Code: res.StatusCode, - Header: res.Header, - Body: string(body), - } - } - - partialContentNotSatisfied := - !decompressiveTranscoding(res) && - start > 0 && params.length != 0 && - res.StatusCode != http.StatusPartialContent - - if partialContentNotSatisfied { - res.Body.Close() - return errors.New("storage: partial request not satisfied") - } - - // With "Content-Encoding": "gzip" aka decompressive transcoding, GCS serves - // back the whole file regardless of the range count passed in as per: - // https://cloud.google.com/storage/docs/transcoding#range, - // thus we have to manually move the body forward by seen bytes. - if decompressiveTranscoding(res) && seen > 0 { - _, _ = io.CopyN(ioutil.Discard, res.Body, seen) - } - - // If a generation hasn't been specified, and this is the first response we get, let's record the - // generation. In future requests we'll use this generation as a precondition to avoid data races. - if params.gen < 0 && res.Header.Get("X-Goog-Generation") != "" { - gen64, err := strconv.ParseInt(res.Header.Get("X-Goog-Generation"), 10, 64) - if err != nil { - return err - } - params.gen = gen64 - } - return nil - }, s.retry, s.idempotent, setRetryHeaderHTTP(nil)) - if err != nil { - return nil, err - } - return res, nil - } + reopen := readerReopen(ctx, req.Header, params, s, + func() (*http.Response, error) { return c.hc.Do(req) }, + func() error { return setConditionsHeaders(req.Header, params.conds) }, + func() { req.URL.RawQuery = fmt.Sprintf("generation=%d", params.gen) }) res, err := reopen(0) if err != nil { return nil, err } - var ( - size int64 // total size of object, even if a range was requested. - checkCRC bool - crc uint32 - startOffset int64 // non-zero if range request. - ) - if res.StatusCode == http.StatusPartialContent { - cr := strings.TrimSpace(res.Header.Get("Content-Range")) - if !strings.HasPrefix(cr, "bytes ") || !strings.Contains(cr, "/") { - return nil, fmt.Errorf("storage: invalid Content-Range %q", cr) - } - // Content range is formatted <first byte>-<last byte>/<total size>. We take - // the total size. - size, err = strconv.ParseInt(cr[strings.LastIndex(cr, "/")+1:], 10, 64) - if err != nil { - return nil, fmt.Errorf("storage: invalid Content-Range %q", cr) - } + return parseReadResponse(res, params, reopen) +} - dashIndex := strings.Index(cr, "-") - if dashIndex >= 0 { - startOffset, err = strconv.ParseInt(cr[len("bytes="):dashIndex], 10, 64) - if err != nil { - return nil, fmt.Errorf("storage: invalid Content-Range %q: %w", cr, err) - } - } - } else { - size = res.ContentLength - // Check the CRC iff all of the following hold: - // - We asked for content (length != 0). - // - We got all the content (status != PartialContent). - // - The server sent a CRC header. - // - The Go http stack did not uncompress the file. - // - We were not served compressed data that was uncompressed on download. - // The problem with the last two cases is that the CRC will not match -- GCS - // computes it on the compressed contents, but we compute it on the - // uncompressed contents. - if params.length != 0 && !res.Uncompressed && !uncompressedByServer(res) { - crc, checkCRC = parseCRC32c(res) - } +func (c *httpStorageClient) newRangeReaderJSON(ctx context.Context, params *newRangeReaderParams, s *settings) (r *Reader, err error) { + call := c.raw.Objects.Get(params.bucket, params.object) + + setClientHeader(call.Header()) + call.Context(ctx) + call.Projection("full") + + if s.userProject != "" { + call.UserProject(s.userProject) } - remain := res.ContentLength - body := res.Body - if params.length == 0 { - remain = 0 - body.Close() - body = emptyBody - } - var metaGen int64 - if res.Header.Get("X-Goog-Metageneration") != "" { - metaGen, err = strconv.ParseInt(res.Header.Get("X-Goog-Metageneration"), 10, 64) - if err != nil { - return nil, err - } + if err := setRangeReaderHeaders(call.Header(), params); err != nil { + return nil, err } - var lm time.Time - if res.Header.Get("Last-Modified") != "" { - lm, err = http.ParseTime(res.Header.Get("Last-Modified")) - if err != nil { - return nil, err - } - } + reopen := readerReopen(ctx, call.Header(), params, s, func() (*http.Response, error) { return call.Download() }, + func() error { return applyConds("NewReader", params.gen, params.conds, call) }, + func() { call.Generation(params.gen) }) - attrs := ReaderObjectAttrs{ - Size: size, - ContentType: res.Header.Get("Content-Type"), - ContentEncoding: res.Header.Get("Content-Encoding"), - CacheControl: res.Header.Get("Cache-Control"), - LastModified: lm, - StartOffset: startOffset, - Generation: params.gen, - Metageneration: metaGen, + res, err := reopen(0) + if err != nil { + return nil, err } - return &Reader{ - Attrs: attrs, - size: size, - remain: remain, - wantCRC: crc, - checkCRC: checkCRC, - reader: &httpReader{ - reopen: reopen, - body: body, - }, - }, nil + return parseReadResponse(res, params, reopen) } func (c *httpStorageClient) OpenWriter(params *openWriterParams, opts ...storageOption) (*io.PipeWriter, error) { @@ -1349,3 +1224,195 @@ func (r *httpReader) Read(p []byte) (int, error) { func (r *httpReader) Close() error { return r.body.Close() } + +func setRangeReaderHeaders(h http.Header, params *newRangeReaderParams) error { + if params.readCompressed { + h.Set("Accept-Encoding", "gzip") + } + if err := setEncryptionHeaders(h, params.encryptionKey, false); err != nil { + return err + } + return nil +} + +// readerReopen initiates a Read with offset and length, assuming we +// have already read seen bytes. +func readerReopen(ctx context.Context, header http.Header, params *newRangeReaderParams, s *settings, + doDownload func() (*http.Response, error), applyConditions func() error, setGeneration func()) func(int64) (*http.Response, error) { + return func(seen int64) (*http.Response, error) { + // If the context has already expired, return immediately without making a + // call. + if err := ctx.Err(); err != nil { + return nil, err + } + start := params.offset + seen + if params.length < 0 && start < 0 { + header.Set("Range", fmt.Sprintf("bytes=%d", start)) + } else if params.length < 0 && start > 0 { + header.Set("Range", fmt.Sprintf("bytes=%d-", start)) + } else if params.length > 0 { + // The end character isn't affected by how many bytes we've seen. + header.Set("Range", fmt.Sprintf("bytes=%d-%d", start, params.offset+params.length-1)) + } + // We wait to assign conditions here because the generation number can change in between reopen() runs. + if err := applyConditions(); err != nil { + return nil, err + } + // If an object generation is specified, include generation as query string parameters. + if params.gen >= 0 { + setGeneration() + } + + var err error + var res *http.Response + err = run(ctx, func() error { + res, err = doDownload() + if err != nil { + var e *googleapi.Error + if errors.As(err, &e) { + if e.Code == http.StatusNotFound { + return ErrObjectNotExist + } + } + return err + } + + if res.StatusCode == http.StatusNotFound { + // this check is necessary only for XML + res.Body.Close() + return ErrObjectNotExist + } + if res.StatusCode < 200 || res.StatusCode > 299 { + body, _ := ioutil.ReadAll(res.Body) + res.Body.Close() + return &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + Body: string(body), + } + } + + partialContentNotSatisfied := + !decompressiveTranscoding(res) && + start > 0 && params.length != 0 && + res.StatusCode != http.StatusPartialContent + + if partialContentNotSatisfied { + res.Body.Close() + return errors.New("storage: partial request not satisfied") + } + + // With "Content-Encoding": "gzip" aka decompressive transcoding, GCS serves + // back the whole file regardless of the range count passed in as per: + // https://cloud.google.com/storage/docs/transcoding#range, + // thus we have to manually move the body forward by seen bytes. + if decompressiveTranscoding(res) && seen > 0 { + _, _ = io.CopyN(ioutil.Discard, res.Body, seen) + } + + // If a generation hasn't been specified, and this is the first response we get, let's record the + // generation. In future requests we'll use this generation as a precondition to avoid data races. + if params.gen < 0 && res.Header.Get("X-Goog-Generation") != "" { + gen64, err := strconv.ParseInt(res.Header.Get("X-Goog-Generation"), 10, 64) + if err != nil { + return err + } + params.gen = gen64 + } + return nil + }, s.retry, s.idempotent, setRetryHeaderHTTP(nil)) + if err != nil { + return nil, err + } + return res, nil + } +} + +func parseReadResponse(res *http.Response, params *newRangeReaderParams, reopen func(int64) (*http.Response, error)) (*Reader, error) { + var err error + var ( + size int64 // total size of object, even if a range was requested. + checkCRC bool + crc uint32 + startOffset int64 // non-zero if range request. + ) + if res.StatusCode == http.StatusPartialContent { + cr := strings.TrimSpace(res.Header.Get("Content-Range")) + if !strings.HasPrefix(cr, "bytes ") || !strings.Contains(cr, "/") { + return nil, fmt.Errorf("storage: invalid Content-Range %q", cr) + } + // Content range is formatted <first byte>-<last byte>/<total size>. We take + // the total size. + size, err = strconv.ParseInt(cr[strings.LastIndex(cr, "/")+1:], 10, 64) + if err != nil { + return nil, fmt.Errorf("storage: invalid Content-Range %q", cr) + } + + dashIndex := strings.Index(cr, "-") + if dashIndex >= 0 { + startOffset, err = strconv.ParseInt(cr[len("bytes="):dashIndex], 10, 64) + if err != nil { + return nil, fmt.Errorf("storage: invalid Content-Range %q: %w", cr, err) + } + } + } else { + size = res.ContentLength + // Check the CRC iff all of the following hold: + // - We asked for content (length != 0). + // - We got all the content (status != PartialContent). + // - The server sent a CRC header. + // - The Go http stack did not uncompress the file. + // - We were not served compressed data that was uncompressed on download. + // The problem with the last two cases is that the CRC will not match -- GCS + // computes it on the compressed contents, but we compute it on the + // uncompressed contents. + if params.length != 0 && !res.Uncompressed && !uncompressedByServer(res) { + crc, checkCRC = parseCRC32c(res) + } + } + + remain := res.ContentLength + body := res.Body + if params.length == 0 { + remain = 0 + body.Close() + body = emptyBody + } + var metaGen int64 + if res.Header.Get("X-Goog-Metageneration") != "" { + metaGen, err = strconv.ParseInt(res.Header.Get("X-Goog-Metageneration"), 10, 64) + if err != nil { + return nil, err + } + } + + var lm time.Time + if res.Header.Get("Last-Modified") != "" { + lm, err = http.ParseTime(res.Header.Get("Last-Modified")) + if err != nil { + return nil, err + } + } + + attrs := ReaderObjectAttrs{ + Size: size, + ContentType: res.Header.Get("Content-Type"), + ContentEncoding: res.Header.Get("Content-Encoding"), + CacheControl: res.Header.Get("Cache-Control"), + LastModified: lm, + StartOffset: startOffset, + Generation: params.gen, + Metageneration: metaGen, + } + return &Reader{ + Attrs: attrs, + size: size, + remain: remain, + wantCRC: crc, + checkCRC: checkCRC, + reader: &httpReader{ + reopen: reopen, + body: body, + }, + }, nil +} diff --git a/vendor/cloud.google.com/go/storage/iam.go b/vendor/cloud.google.com/go/storage/iam.go index 408661718f..4c01bff4f3 100644 --- a/vendor/cloud.google.com/go/storage/iam.go +++ b/vendor/cloud.google.com/go/storage/iam.go @@ -18,9 +18,9 @@ import ( "context" "cloud.google.com/go/iam" + "cloud.google.com/go/iam/apiv1/iampb" "cloud.google.com/go/internal/trace" raw "google.golang.org/api/storage/v1" - iampb "google.golang.org/genproto/googleapis/iam/v1" "google.golang.org/genproto/googleapis/type/expr" ) diff --git a/vendor/cloud.google.com/go/storage/internal/apiv2/gapic_metadata.json b/vendor/cloud.google.com/go/storage/internal/apiv2/gapic_metadata.json index 01103fa93b..8bbb154c07 100644 --- a/vendor/cloud.google.com/go/storage/internal/apiv2/gapic_metadata.json +++ b/vendor/cloud.google.com/go/storage/internal/apiv2/gapic_metadata.json @@ -30,9 +30,9 @@ "CreateHmacKey" ] }, - "CreateNotification": { + "CreateNotificationConfig": { "methods": [ - "CreateNotification" + "CreateNotificationConfig" ] }, "DeleteBucket": { @@ -45,9 +45,9 @@ "DeleteHmacKey" ] }, - "DeleteNotification": { + "DeleteNotificationConfig": { "methods": [ - "DeleteNotification" + "DeleteNotificationConfig" ] }, "DeleteObject": { @@ -70,9 +70,9 @@ "GetIamPolicy" ] }, - "GetNotification": { + "GetNotificationConfig": { "methods": [ - "GetNotification" + "GetNotificationConfig" ] }, "GetObject": { @@ -95,9 +95,9 @@ "ListHmacKeys" ] }, - "ListNotifications": { + "ListNotificationConfigs": { "methods": [ - "ListNotifications" + "ListNotificationConfigs" ] }, "ListObjects": { diff --git a/vendor/cloud.google.com/go/storage/internal/apiv2/storage_client.go b/vendor/cloud.google.com/go/storage/internal/apiv2/storage_client.go index aa2c1aff57..f1475dfd57 100644 --- a/vendor/cloud.google.com/go/storage/internal/apiv2/storage_client.go +++ b/vendor/cloud.google.com/go/storage/internal/apiv2/storage_client.go @@ -24,13 +24,13 @@ import ( "regexp" "strings" + "cloud.google.com/go/iam/apiv1/iampb" storagepb "cloud.google.com/go/storage/internal/apiv2/stubs" gax "github.com/googleapis/gax-go/v2" "google.golang.org/api/iterator" "google.golang.org/api/option" "google.golang.org/api/option/internaloption" gtransport "google.golang.org/api/transport/grpc" - iampb "google.golang.org/genproto/googleapis/iam/v1" "google.golang.org/grpc" "google.golang.org/grpc/metadata" "google.golang.org/protobuf/proto" @@ -49,10 +49,10 @@ type CallOptions struct { SetIamPolicy []gax.CallOption TestIamPermissions []gax.CallOption UpdateBucket []gax.CallOption - DeleteNotification []gax.CallOption - GetNotification []gax.CallOption - CreateNotification []gax.CallOption - ListNotifications []gax.CallOption + DeleteNotificationConfig []gax.CallOption + GetNotificationConfig []gax.CallOption + CreateNotificationConfig []gax.CallOption + ListNotificationConfigs []gax.CallOption ComposeObject []gax.CallOption DeleteObject []gax.CallOption CancelResumableWrite []gax.CallOption @@ -95,10 +95,10 @@ func defaultCallOptions() *CallOptions { SetIamPolicy: []gax.CallOption{}, TestIamPermissions: []gax.CallOption{}, UpdateBucket: []gax.CallOption{}, - DeleteNotification: []gax.CallOption{}, - GetNotification: []gax.CallOption{}, - CreateNotification: []gax.CallOption{}, - ListNotifications: []gax.CallOption{}, + DeleteNotificationConfig: []gax.CallOption{}, + GetNotificationConfig: []gax.CallOption{}, + CreateNotificationConfig: []gax.CallOption{}, + ListNotificationConfigs: []gax.CallOption{}, ComposeObject: []gax.CallOption{}, DeleteObject: []gax.CallOption{}, CancelResumableWrite: []gax.CallOption{}, @@ -133,10 +133,10 @@ type internalClient interface { SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest, ...gax.CallOption) (*iampb.Policy, error) TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest, ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) UpdateBucket(context.Context, *storagepb.UpdateBucketRequest, ...gax.CallOption) (*storagepb.Bucket, error) - DeleteNotification(context.Context, *storagepb.DeleteNotificationRequest, ...gax.CallOption) error - GetNotification(context.Context, *storagepb.GetNotificationRequest, ...gax.CallOption) (*storagepb.Notification, error) - CreateNotification(context.Context, *storagepb.CreateNotificationRequest, ...gax.CallOption) (*storagepb.Notification, error) - ListNotifications(context.Context, *storagepb.ListNotificationsRequest, ...gax.CallOption) *NotificationIterator + DeleteNotificationConfig(context.Context, *storagepb.DeleteNotificationConfigRequest, ...gax.CallOption) error + GetNotificationConfig(context.Context, *storagepb.GetNotificationConfigRequest, ...gax.CallOption) (*storagepb.NotificationConfig, error) + CreateNotificationConfig(context.Context, *storagepb.CreateNotificationConfigRequest, ...gax.CallOption) (*storagepb.NotificationConfig, error) + ListNotificationConfigs(context.Context, *storagepb.ListNotificationConfigsRequest, ...gax.CallOption) *NotificationConfigIterator ComposeObject(context.Context, *storagepb.ComposeObjectRequest, ...gax.CallOption) (*storagepb.Object, error) DeleteObject(context.Context, *storagepb.DeleteObjectRequest, ...gax.CallOption) error CancelResumableWrite(context.Context, *storagepb.CancelResumableWriteRequest, ...gax.CallOption) (*storagepb.CancelResumableWriteResponse, error) @@ -267,27 +267,27 @@ func (c *Client) UpdateBucket(ctx context.Context, req *storagepb.UpdateBucketRe return c.internalClient.UpdateBucket(ctx, req, opts...) } -// DeleteNotification permanently deletes a notification subscription. -func (c *Client) DeleteNotification(ctx context.Context, req *storagepb.DeleteNotificationRequest, opts ...gax.CallOption) error { - return c.internalClient.DeleteNotification(ctx, req, opts...) +// DeleteNotificationConfig permanently deletes a NotificationConfig. +func (c *Client) DeleteNotificationConfig(ctx context.Context, req *storagepb.DeleteNotificationConfigRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteNotificationConfig(ctx, req, opts...) } -// GetNotification view a notification config. -func (c *Client) GetNotification(ctx context.Context, req *storagepb.GetNotificationRequest, opts ...gax.CallOption) (*storagepb.Notification, error) { - return c.internalClient.GetNotification(ctx, req, opts...) +// GetNotificationConfig view a NotificationConfig. +func (c *Client) GetNotificationConfig(ctx context.Context, req *storagepb.GetNotificationConfigRequest, opts ...gax.CallOption) (*storagepb.NotificationConfig, error) { + return c.internalClient.GetNotificationConfig(ctx, req, opts...) } -// CreateNotification creates a notification subscription for a given bucket. -// These notifications, when triggered, publish messages to the specified -// Pub/Sub topics. -// See https://cloud.google.com/storage/docs/pubsub-notifications (at https://cloud.google.com/storage/docs/pubsub-notifications). -func (c *Client) CreateNotification(ctx context.Context, req *storagepb.CreateNotificationRequest, opts ...gax.CallOption) (*storagepb.Notification, error) { - return c.internalClient.CreateNotification(ctx, req, opts...) +// CreateNotificationConfig creates a NotificationConfig for a given bucket. +// These NotificationConfigs, when triggered, publish messages to the +// specified Pub/Sub topics. See +// https://cloud.google.com/storage/docs/pubsub-notifications (at https://cloud.google.com/storage/docs/pubsub-notifications). +func (c *Client) CreateNotificationConfig(ctx context.Context, req *storagepb.CreateNotificationConfigRequest, opts ...gax.CallOption) (*storagepb.NotificationConfig, error) { + return c.internalClient.CreateNotificationConfig(ctx, req, opts...) } -// ListNotifications retrieves a list of notification subscriptions for a given bucket. -func (c *Client) ListNotifications(ctx context.Context, req *storagepb.ListNotificationsRequest, opts ...gax.CallOption) *NotificationIterator { - return c.internalClient.ListNotifications(ctx, req, opts...) +// ListNotificationConfigs retrieves a list of NotificationConfigs for a given bucket. +func (c *Client) ListNotificationConfigs(ctx context.Context, req *storagepb.ListNotificationConfigsRequest, opts ...gax.CallOption) *NotificationConfigIterator { + return c.internalClient.ListNotificationConfigs(ctx, req, opts...) } // ComposeObject concatenates a list of existing objects into a new object in the same @@ -365,8 +365,9 @@ func (c *Client) UpdateObject(ctx context.Context, req *storagepb.UpdateObjectRe // returned persisted_size; in this case, the service will skip data at // offsets that were already persisted (without checking that it matches // the previously written data), and write only the data starting from the -// persisted offset. This behavior can make client-side handling simpler -// in some cases. +// persisted offset. Even though the data isn’t written, it may still +// incur a performance cost over resuming at the correct write offset. +// This behavior can make client-side handling simpler in some cases. // // The service will not view the object as complete until the client has // sent a WriteObjectRequest with finish_write set to true. Sending any @@ -603,6 +604,9 @@ func (c *gRPCClient) CreateBucket(ctx context.Context, req *storagepb.CreateBuck if reg := regexp.MustCompile("(?P<project>.*)"); reg.MatchString(req.GetParent()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetParent())[1])) > 0 { routingHeadersMap["project"] = url.QueryEscape(reg.FindStringSubmatch(req.GetParent())[1]) } + if reg := regexp.MustCompile("(?P<project>.*)"); reg.MatchString(req.GetBucket().GetProject()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetBucket().GetProject())[1])) > 0 { + routingHeadersMap["project"] = url.QueryEscape(reg.FindStringSubmatch(req.GetBucket().GetProject())[1]) + } for headerName, headerValue := range routingHeadersMap { routingHeaders = fmt.Sprintf("%s%s=%s&", routingHeaders, headerName, headerValue) } @@ -816,7 +820,7 @@ func (c *gRPCClient) UpdateBucket(ctx context.Context, req *storagepb.UpdateBuck return resp, nil } -func (c *gRPCClient) DeleteNotification(ctx context.Context, req *storagepb.DeleteNotificationRequest, opts ...gax.CallOption) error { +func (c *gRPCClient) DeleteNotificationConfig(ctx context.Context, req *storagepb.DeleteNotificationConfigRequest, opts ...gax.CallOption) error { routingHeaders := "" routingHeadersMap := make(map[string]string) if reg := regexp.MustCompile("(?P<bucket>projects/[^/]+/buckets/[^/]+)(?:/.*)?"); reg.MatchString(req.GetName()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetName())[1])) > 0 { @@ -829,16 +833,16 @@ func (c *gRPCClient) DeleteNotification(ctx context.Context, req *storagepb.Dele md := metadata.Pairs("x-goog-request-params", routingHeaders) ctx = insertMetadata(ctx, c.xGoogMetadata, md) - opts = append((*c.CallOptions).DeleteNotification[0:len((*c.CallOptions).DeleteNotification):len((*c.CallOptions).DeleteNotification)], opts...) + opts = append((*c.CallOptions).DeleteNotificationConfig[0:len((*c.CallOptions).DeleteNotificationConfig):len((*c.CallOptions).DeleteNotificationConfig)], opts...) err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error - _, err = c.client.DeleteNotification(ctx, req, settings.GRPC...) + _, err = c.client.DeleteNotificationConfig(ctx, req, settings.GRPC...) return err }, opts...) return err } -func (c *gRPCClient) GetNotification(ctx context.Context, req *storagepb.GetNotificationRequest, opts ...gax.CallOption) (*storagepb.Notification, error) { +func (c *gRPCClient) GetNotificationConfig(ctx context.Context, req *storagepb.GetNotificationConfigRequest, opts ...gax.CallOption) (*storagepb.NotificationConfig, error) { routingHeaders := "" routingHeadersMap := make(map[string]string) if reg := regexp.MustCompile("(?P<bucket>projects/[^/]+/buckets/[^/]+)(?:/.*)?"); reg.MatchString(req.GetName()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetName())[1])) > 0 { @@ -851,11 +855,11 @@ func (c *gRPCClient) GetNotification(ctx context.Context, req *storagepb.GetNoti md := metadata.Pairs("x-goog-request-params", routingHeaders) ctx = insertMetadata(ctx, c.xGoogMetadata, md) - opts = append((*c.CallOptions).GetNotification[0:len((*c.CallOptions).GetNotification):len((*c.CallOptions).GetNotification)], opts...) - var resp *storagepb.Notification + opts = append((*c.CallOptions).GetNotificationConfig[0:len((*c.CallOptions).GetNotificationConfig):len((*c.CallOptions).GetNotificationConfig)], opts...) + var resp *storagepb.NotificationConfig err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error - resp, err = c.client.GetNotification(ctx, req, settings.GRPC...) + resp, err = c.client.GetNotificationConfig(ctx, req, settings.GRPC...) return err }, opts...) if err != nil { @@ -864,7 +868,7 @@ func (c *gRPCClient) GetNotification(ctx context.Context, req *storagepb.GetNoti return resp, nil } -func (c *gRPCClient) CreateNotification(ctx context.Context, req *storagepb.CreateNotificationRequest, opts ...gax.CallOption) (*storagepb.Notification, error) { +func (c *gRPCClient) CreateNotificationConfig(ctx context.Context, req *storagepb.CreateNotificationConfigRequest, opts ...gax.CallOption) (*storagepb.NotificationConfig, error) { routingHeaders := "" routingHeadersMap := make(map[string]string) if reg := regexp.MustCompile("(?P<bucket>.*)"); reg.MatchString(req.GetParent()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetParent())[1])) > 0 { @@ -877,11 +881,11 @@ func (c *gRPCClient) CreateNotification(ctx context.Context, req *storagepb.Crea md := metadata.Pairs("x-goog-request-params", routingHeaders) ctx = insertMetadata(ctx, c.xGoogMetadata, md) - opts = append((*c.CallOptions).CreateNotification[0:len((*c.CallOptions).CreateNotification):len((*c.CallOptions).CreateNotification)], opts...) - var resp *storagepb.Notification + opts = append((*c.CallOptions).CreateNotificationConfig[0:len((*c.CallOptions).CreateNotificationConfig):len((*c.CallOptions).CreateNotificationConfig)], opts...) + var resp *storagepb.NotificationConfig err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error - resp, err = c.client.CreateNotification(ctx, req, settings.GRPC...) + resp, err = c.client.CreateNotificationConfig(ctx, req, settings.GRPC...) return err }, opts...) if err != nil { @@ -890,7 +894,7 @@ func (c *gRPCClient) CreateNotification(ctx context.Context, req *storagepb.Crea return resp, nil } -func (c *gRPCClient) ListNotifications(ctx context.Context, req *storagepb.ListNotificationsRequest, opts ...gax.CallOption) *NotificationIterator { +func (c *gRPCClient) ListNotificationConfigs(ctx context.Context, req *storagepb.ListNotificationConfigsRequest, opts ...gax.CallOption) *NotificationConfigIterator { routingHeaders := "" routingHeadersMap := make(map[string]string) if reg := regexp.MustCompile("(?P<bucket>.*)"); reg.MatchString(req.GetParent()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetParent())[1])) > 0 { @@ -903,11 +907,11 @@ func (c *gRPCClient) ListNotifications(ctx context.Context, req *storagepb.ListN md := metadata.Pairs("x-goog-request-params", routingHeaders) ctx = insertMetadata(ctx, c.xGoogMetadata, md) - opts = append((*c.CallOptions).ListNotifications[0:len((*c.CallOptions).ListNotifications):len((*c.CallOptions).ListNotifications)], opts...) - it := &NotificationIterator{} - req = proto.Clone(req).(*storagepb.ListNotificationsRequest) - it.InternalFetch = func(pageSize int, pageToken string) ([]*storagepb.Notification, string, error) { - resp := &storagepb.ListNotificationsResponse{} + opts = append((*c.CallOptions).ListNotificationConfigs[0:len((*c.CallOptions).ListNotificationConfigs):len((*c.CallOptions).ListNotificationConfigs)], opts...) + it := &NotificationConfigIterator{} + req = proto.Clone(req).(*storagepb.ListNotificationConfigsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*storagepb.NotificationConfig, string, error) { + resp := &storagepb.ListNotificationConfigsResponse{} if pageToken != "" { req.PageToken = pageToken } @@ -918,7 +922,7 @@ func (c *gRPCClient) ListNotifications(ctx context.Context, req *storagepb.ListN } err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error - resp, err = c.client.ListNotifications(ctx, req, settings.GRPC...) + resp, err = c.client.ListNotificationConfigs(ctx, req, settings.GRPC...) return err }, opts...) if err != nil { @@ -926,7 +930,7 @@ func (c *gRPCClient) ListNotifications(ctx context.Context, req *storagepb.ListN } it.Response = resp - return resp.GetNotifications(), resp.GetNextPageToken(), nil + return resp.GetNotificationConfigs(), resp.GetNextPageToken(), nil } fetch := func(pageSize int, pageToken string) (string, error) { items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) @@ -1520,9 +1524,9 @@ func (it *HmacKeyMetadataIterator) takeBuf() interface{} { return b } -// NotificationIterator manages a stream of *storagepb.Notification. -type NotificationIterator struct { - items []*storagepb.Notification +// NotificationConfigIterator manages a stream of *storagepb.NotificationConfig. +type NotificationConfigIterator struct { + items []*storagepb.NotificationConfig pageInfo *iterator.PageInfo nextFunc func() error @@ -1537,18 +1541,18 @@ type NotificationIterator struct { // InternalFetch returns results from a single call to the underlying RPC. // The number of results is no greater than pageSize. // If there are no more results, nextPageToken is empty and err is nil. - InternalFetch func(pageSize int, pageToken string) (results []*storagepb.Notification, nextPageToken string, err error) + InternalFetch func(pageSize int, pageToken string) (results []*storagepb.NotificationConfig, nextPageToken string, err error) } // PageInfo supports pagination. See the google.golang.org/api/iterator package for details. -func (it *NotificationIterator) PageInfo() *iterator.PageInfo { +func (it *NotificationConfigIterator) PageInfo() *iterator.PageInfo { return it.pageInfo } // Next returns the next result. Its second return value is iterator.Done if there are no more // results. Once Next returns Done, all subsequent calls will return Done. -func (it *NotificationIterator) Next() (*storagepb.Notification, error) { - var item *storagepb.Notification +func (it *NotificationConfigIterator) Next() (*storagepb.NotificationConfig, error) { + var item *storagepb.NotificationConfig if err := it.nextFunc(); err != nil { return item, err } @@ -1557,11 +1561,11 @@ func (it *NotificationIterator) Next() (*storagepb.Notification, error) { return item, nil } -func (it *NotificationIterator) bufLen() int { +func (it *NotificationConfigIterator) bufLen() int { return len(it.items) } -func (it *NotificationIterator) takeBuf() interface{} { +func (it *NotificationConfigIterator) takeBuf() interface{} { b := it.items it.items = nil return b diff --git a/vendor/cloud.google.com/go/storage/internal/apiv2/stubs/storage.pb.go b/vendor/cloud.google.com/go/storage/internal/apiv2/stubs/storage.pb.go index f81e216c57..fe6820449d 100644 --- a/vendor/cloud.google.com/go/storage/internal/apiv2/stubs/storage.pb.go +++ b/vendor/cloud.google.com/go/storage/internal/apiv2/stubs/storage.pb.go @@ -25,8 +25,8 @@ import ( reflect "reflect" sync "sync" + v1 "cloud.google.com/go/iam/apiv1/iampb" _ "google.golang.org/genproto/googleapis/api/annotations" - v1 "google.golang.org/genproto/googleapis/iam/v1" date "google.golang.org/genproto/googleapis/type/date" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -742,18 +742,18 @@ func (x *UpdateBucketRequest) GetUpdateMask() *fieldmaskpb.FieldMask { return nil } -// Request message for DeleteNotification. -type DeleteNotificationRequest struct { +// Request message for DeleteNotificationConfig. +type DeleteNotificationConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The parent bucket of the notification. + // Required. The parent bucket of the NotificationConfig. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteNotificationRequest) Reset() { - *x = DeleteNotificationRequest{} +func (x *DeleteNotificationConfigRequest) Reset() { + *x = DeleteNotificationConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_storage_v2_storage_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -761,13 +761,13 @@ func (x *DeleteNotificationRequest) Reset() { } } -func (x *DeleteNotificationRequest) String() string { +func (x *DeleteNotificationConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteNotificationRequest) ProtoMessage() {} +func (*DeleteNotificationConfigRequest) ProtoMessage() {} -func (x *DeleteNotificationRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteNotificationConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_google_storage_v2_storage_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -779,32 +779,32 @@ func (x *DeleteNotificationRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteNotificationRequest.ProtoReflect.Descriptor instead. -func (*DeleteNotificationRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteNotificationConfigRequest.ProtoReflect.Descriptor instead. +func (*DeleteNotificationConfigRequest) Descriptor() ([]byte, []int) { return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{7} } -func (x *DeleteNotificationRequest) GetName() string { +func (x *DeleteNotificationConfigRequest) GetName() string { if x != nil { return x.Name } return "" } -// Request message for GetNotification. -type GetNotificationRequest struct { +// Request message for GetNotificationConfig. +type GetNotificationConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The parent bucket of the notification. + // Required. The parent bucket of the NotificationConfig. // Format: - // `projects/{project}/buckets/{bucket}/notificationConfigs/{notification}` + // `projects/{project}/buckets/{bucket}/notificationConfigs/{notificationConfig}` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *GetNotificationRequest) Reset() { - *x = GetNotificationRequest{} +func (x *GetNotificationConfigRequest) Reset() { + *x = GetNotificationConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_storage_v2_storage_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -812,13 +812,13 @@ func (x *GetNotificationRequest) Reset() { } } -func (x *GetNotificationRequest) String() string { +func (x *GetNotificationConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNotificationRequest) ProtoMessage() {} +func (*GetNotificationConfigRequest) ProtoMessage() {} -func (x *GetNotificationRequest) ProtoReflect() protoreflect.Message { +func (x *GetNotificationConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_google_storage_v2_storage_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -830,32 +830,32 @@ func (x *GetNotificationRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNotificationRequest.ProtoReflect.Descriptor instead. -func (*GetNotificationRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetNotificationConfigRequest.ProtoReflect.Descriptor instead. +func (*GetNotificationConfigRequest) Descriptor() ([]byte, []int) { return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{8} } -func (x *GetNotificationRequest) GetName() string { +func (x *GetNotificationConfigRequest) GetName() string { if x != nil { return x.Name } return "" } -// Request message for CreateNotification. -type CreateNotificationRequest struct { +// Request message for CreateNotificationConfig. +type CreateNotificationConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The bucket to which this notification belongs. + // Required. The bucket to which this NotificationConfig belongs. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. Properties of the notification to be inserted. - Notification *Notification `protobuf:"bytes,2,opt,name=notification,proto3" json:"notification,omitempty"` + // Required. Properties of the NotificationConfig to be inserted. + NotificationConfig *NotificationConfig `protobuf:"bytes,2,opt,name=notification_config,json=notificationConfig,proto3" json:"notification_config,omitempty"` } -func (x *CreateNotificationRequest) Reset() { - *x = CreateNotificationRequest{} +func (x *CreateNotificationConfigRequest) Reset() { + *x = CreateNotificationConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_storage_v2_storage_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -863,13 +863,13 @@ func (x *CreateNotificationRequest) Reset() { } } -func (x *CreateNotificationRequest) String() string { +func (x *CreateNotificationConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateNotificationRequest) ProtoMessage() {} +func (*CreateNotificationConfigRequest) ProtoMessage() {} -func (x *CreateNotificationRequest) ProtoReflect() protoreflect.Message { +func (x *CreateNotificationConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_google_storage_v2_storage_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -881,48 +881,47 @@ func (x *CreateNotificationRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateNotificationRequest.ProtoReflect.Descriptor instead. -func (*CreateNotificationRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateNotificationConfigRequest.ProtoReflect.Descriptor instead. +func (*CreateNotificationConfigRequest) Descriptor() ([]byte, []int) { return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{9} } -func (x *CreateNotificationRequest) GetParent() string { +func (x *CreateNotificationConfigRequest) GetParent() string { if x != nil { return x.Parent } return "" } -func (x *CreateNotificationRequest) GetNotification() *Notification { +func (x *CreateNotificationConfigRequest) GetNotificationConfig() *NotificationConfig { if x != nil { - return x.Notification + return x.NotificationConfig } return nil } // Request message for ListNotifications. -type ListNotificationsRequest struct { +type ListNotificationConfigsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Name of a Google Cloud Storage bucket. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // The maximum number of notifications to return. The service may return fewer - // than this value. - // The default value is 100. Specifying a value above 100 will result in a - // page_size of 100. + // The maximum number of NotificationConfigs to return. The service may + // return fewer than this value. The default value is 100. Specifying a value + // above 100 will result in a page_size of 100. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // A page token, received from a previous `ListNotifications` call. + // A page token, received from a previous `ListNotificationConfigs` call. // Provide this to retrieve the subsequent page. // - // When paginating, all other parameters provided to `ListNotifications` must - // match the call that provided the page token. + // When paginating, all other parameters provided to `ListNotificationConfigs` + // must match the call that provided the page token. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } -func (x *ListNotificationsRequest) Reset() { - *x = ListNotificationsRequest{} +func (x *ListNotificationConfigsRequest) Reset() { + *x = ListNotificationConfigsRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_storage_v2_storage_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -930,13 +929,13 @@ func (x *ListNotificationsRequest) Reset() { } } -func (x *ListNotificationsRequest) String() string { +func (x *ListNotificationConfigsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNotificationsRequest) ProtoMessage() {} +func (*ListNotificationConfigsRequest) ProtoMessage() {} -func (x *ListNotificationsRequest) ProtoReflect() protoreflect.Message { +func (x *ListNotificationConfigsRequest) ProtoReflect() protoreflect.Message { mi := &file_google_storage_v2_storage_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -948,47 +947,47 @@ func (x *ListNotificationsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNotificationsRequest.ProtoReflect.Descriptor instead. -func (*ListNotificationsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListNotificationConfigsRequest.ProtoReflect.Descriptor instead. +func (*ListNotificationConfigsRequest) Descriptor() ([]byte, []int) { return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{10} } -func (x *ListNotificationsRequest) GetParent() string { +func (x *ListNotificationConfigsRequest) GetParent() string { if x != nil { return x.Parent } return "" } -func (x *ListNotificationsRequest) GetPageSize() int32 { +func (x *ListNotificationConfigsRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } -func (x *ListNotificationsRequest) GetPageToken() string { +func (x *ListNotificationConfigsRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } -// The result of a call to Notifications.ListNotifications -type ListNotificationsResponse struct { +// The result of a call to ListNotificationConfigs +type ListNotificationConfigsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The list of items. - Notifications []*Notification `protobuf:"bytes,1,rep,name=notifications,proto3" json:"notifications,omitempty"` + NotificationConfigs []*NotificationConfig `protobuf:"bytes,1,rep,name=notification_configs,json=notificationConfigs,proto3" json:"notification_configs,omitempty"` // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *ListNotificationsResponse) Reset() { - *x = ListNotificationsResponse{} +func (x *ListNotificationConfigsResponse) Reset() { + *x = ListNotificationConfigsResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_storage_v2_storage_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -996,13 +995,13 @@ func (x *ListNotificationsResponse) Reset() { } } -func (x *ListNotificationsResponse) String() string { +func (x *ListNotificationConfigsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNotificationsResponse) ProtoMessage() {} +func (*ListNotificationConfigsResponse) ProtoMessage() {} -func (x *ListNotificationsResponse) ProtoReflect() protoreflect.Message { +func (x *ListNotificationConfigsResponse) ProtoReflect() protoreflect.Message { mi := &file_google_storage_v2_storage_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1014,19 +1013,19 @@ func (x *ListNotificationsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNotificationsResponse.ProtoReflect.Descriptor instead. -func (*ListNotificationsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListNotificationConfigsResponse.ProtoReflect.Descriptor instead. +func (*ListNotificationConfigsResponse) Descriptor() ([]byte, []int) { return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{11} } -func (x *ListNotificationsResponse) GetNotifications() []*Notification { +func (x *ListNotificationConfigsResponse) GetNotificationConfigs() []*NotificationConfig { if x != nil { - return x.Notifications + return x.NotificationConfigs } return nil } -func (x *ListNotificationsResponse) GetNextPageToken() string { +func (x *ListNotificationConfigsResponse) GetNextPageToken() string { if x != nil { return x.NextPageToken } @@ -4432,39 +4431,39 @@ func (x *HmacKeyMetadata) GetEtag() string { } // A directive to publish Pub/Sub notifications upon changes to a bucket. -type Notification struct { +type NotificationConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The resource name of this notification. + // Required. The resource name of this NotificationConfig. // Format: - // `projects/{project}/buckets/{bucket}/notificationConfigs/{notification}` + // `projects/{project}/buckets/{bucket}/notificationConfigs/{notificationConfig}` // The `{project}` portion may be `_` for globally unique buckets. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. The Pub/Sub topic to which this subscription publishes. Formatted // as: // '//pubsub.googleapis.com/projects/{project-identifier}/topics/{my-topic}' Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` - // The etag of the Notification. - // If included in the metadata of GetNotificationRequest, the operation will - // only be performed if the etag matches that of the Notification. + // The etag of the NotificationConfig. + // If included in the metadata of GetNotificationConfigRequest, the operation + // will only be performed if the etag matches that of the NotificationConfig. Etag string `protobuf:"bytes,7,opt,name=etag,proto3" json:"etag,omitempty"` - // If present, only send notifications about listed event types. If empty, - // sent notifications for all event types. + // If present, only send notifications about listed event types. If + // empty, sent notifications for all event types. EventTypes []string `protobuf:"bytes,3,rep,name=event_types,json=eventTypes,proto3" json:"event_types,omitempty"` // A list of additional attributes to attach to each Pub/Sub - // message published for this notification subscription. + // message published for this NotificationConfig. CustomAttributes map[string]string `protobuf:"bytes,4,rep,name=custom_attributes,json=customAttributes,proto3" json:"custom_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // If present, only apply this notification config to object names that + // If present, only apply this NotificationConfig to object names that // begin with this prefix. ObjectNamePrefix string `protobuf:"bytes,5,opt,name=object_name_prefix,json=objectNamePrefix,proto3" json:"object_name_prefix,omitempty"` // Required. The desired content of the Payload. PayloadFormat string `protobuf:"bytes,6,opt,name=payload_format,json=payloadFormat,proto3" json:"payload_format,omitempty"` } -func (x *Notification) Reset() { - *x = Notification{} +func (x *NotificationConfig) Reset() { + *x = NotificationConfig{} if protoimpl.UnsafeEnabled { mi := &file_google_storage_v2_storage_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4472,13 +4471,13 @@ func (x *Notification) Reset() { } } -func (x *Notification) String() string { +func (x *NotificationConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Notification) ProtoMessage() {} +func (*NotificationConfig) ProtoMessage() {} -func (x *Notification) ProtoReflect() protoreflect.Message { +func (x *NotificationConfig) ProtoReflect() protoreflect.Message { mi := &file_google_storage_v2_storage_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4490,54 +4489,54 @@ func (x *Notification) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Notification.ProtoReflect.Descriptor instead. -func (*Notification) Descriptor() ([]byte, []int) { +// Deprecated: Use NotificationConfig.ProtoReflect.Descriptor instead. +func (*NotificationConfig) Descriptor() ([]byte, []int) { return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{45} } -func (x *Notification) GetName() string { +func (x *NotificationConfig) GetName() string { if x != nil { return x.Name } return "" } -func (x *Notification) GetTopic() string { +func (x *NotificationConfig) GetTopic() string { if x != nil { return x.Topic } return "" } -func (x *Notification) GetEtag() string { +func (x *NotificationConfig) GetEtag() string { if x != nil { return x.Etag } return "" } -func (x *Notification) GetEventTypes() []string { +func (x *NotificationConfig) GetEventTypes() []string { if x != nil { return x.EventTypes } return nil } -func (x *Notification) GetCustomAttributes() map[string]string { +func (x *NotificationConfig) GetCustomAttributes() map[string]string { if x != nil { return x.CustomAttributes } return nil } -func (x *Notification) GetObjectNamePrefix() string { +func (x *NotificationConfig) GetObjectNamePrefix() string { if x != nil { return x.ObjectNamePrefix } return "" } -func (x *Notification) GetPayloadFormat() string { +func (x *NotificationConfig) GetPayloadFormat() string { if x != nil { return x.PayloadFormat } @@ -6678,1491 +6677,1503 @@ var file_google_storage_v2_storage_proto_rawDesc = []byte{ 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x5c, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x19, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, - 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x95, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, - 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x68, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2b, 0x0a, + 0x29, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x59, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x1f, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x5b, + 0x0a, 0x13, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9b, 0x01, 0x0a, 0x1e, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa3, 0x01, 0x0a, 0x1f, 0x4c, 0x69, + 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, + 0x14, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x13, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0xc3, 0x07, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, - 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xc3, 0x07, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x5b, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x0d, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x3c, 0x0a, - 0x1a, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x18, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, - 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x03, 0x48, 0x01, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, - 0x07, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, - 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x6d, - 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4d, 0x0a, - 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x1a, 0xa8, 0x02, 0x0a, - 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7b, 0x0a, 0x14, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x13, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x1a, 0x62, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, - 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, - 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xc0, 0x04, 0x0a, 0x13, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, - 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, - 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, - 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, - 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3f, - 0x0a, 0x1b, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, - 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, - 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, - 0x1e, 0x0a, 0x1c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, - 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xca, 0x05, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, - 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, - 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, - 0x01, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x48, - 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, - 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x89, 0x05, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, - 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, - 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, - 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, - 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, - 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3c, 0x0a, 0x09, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x48, 0x04, 0x52, 0x08, 0x72, - 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, - 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, - 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xaf, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x61, - 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4d, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, - 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x44, 0x0a, - 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8c, 0x04, 0x0a, 0x0f, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, - 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, - 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, - 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, - 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, + 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x64, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xf8, 0x03, 0x0a, 0x12, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1d, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, - 0x50, 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, - 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x26, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x4f, 0x0a, 0x10, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x10, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x6d, 0x0a, 0x1c, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x66, - 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0e, - 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xd3, - 0x03, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x3c, - 0x0a, 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, - 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x18, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, - 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x48, - 0x00, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x34, - 0x0a, 0x13, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x12, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x11, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x69, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x69, 0x63, 0x45, 0x6e, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xaa, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x20, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x49, 0x64, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, - 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x42, 0x0e, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x93, 0x0e, 0x0a, 0x14, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x10, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0f, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x12, - 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, - 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x56, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x1b, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, - 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x3b, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, - 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, - 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x3c, 0x0a, 0x1a, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x1c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, - 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, - 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, - 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, - 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x40, 0x0a, 0x1a, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x17, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1e, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x1a, 0x69, 0x66, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1e, 0x69, - 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x06, 0x52, 0x1b, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x22, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x03, 0x48, 0x07, 0x52, 0x1e, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x65, - 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x6d, 0x61, - 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x50, - 0x65, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x47, 0x0a, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x1d, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, - 0x46, 0x0a, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x63, 0x6f, 0x70, 0x79, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, - 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x27, 0x63, 0x6f, 0x70, 0x79, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x22, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x1c, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, - 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, - 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, - 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, - 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, - 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, - 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, - 0x25, 0x0a, 0x23, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xd6, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, - 0x74, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x12, 0x1f, - 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, - 0x6f, 0x6e, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, - 0xaf, 0x02, 0x0a, 0x1a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, - 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, - 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, - 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x73, 0x22, 0x3a, 0x0a, 0x1b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, - 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0x87, 0x05, - 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x0a, - 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, - 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, - 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, - 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x15, 0x69, + 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x07, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, + 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, - 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, + 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x1a, 0xa8, 0x02, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x7b, 0x0a, 0x14, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x62, 0x0a, + 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, + 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xc0, 0x04, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, + 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, + 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, + 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, + 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, + 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3f, 0x0a, 0x1b, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x43, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xca, 0x05, 0x0a, 0x11, 0x52, 0x65, + 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x72, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x72, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, + 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, + 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, + 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x1c, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, + 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x48, 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x89, 0x05, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, + 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, + 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, + 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x48, 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x22, 0xaf, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x35, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x8c, 0x04, 0x0a, 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, + 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, + 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, + 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, - 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x69, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, + 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, + 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, + 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x48, 0x04, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x69, 0x7a, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, + 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, + 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x22, 0xf8, 0x03, 0x0a, 0x12, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x75, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x50, 0x0a, 0x11, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0c, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x12, 0x4f, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, + 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x01, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x5f, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x87, + 0x01, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, + 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x37, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xd3, 0x03, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x1a, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1a, + 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x61, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6c, 0x65, 0x78, 0x69, + 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x6c, 0x65, 0x78, 0x69, + 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x30, + 0x0a, 0x11, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x5f, + 0x65, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, + 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x45, 0x6e, 0x64, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xaa, + 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x75, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x6d, 0x0a, 0x1c, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x18, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x48, 0x00, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x37, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, + 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x93, 0x0e, 0x0a, 0x14, 0x52, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, + 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x19, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x11, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, + 0x56, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, + 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, + 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x28, + 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3c, 0x0a, 0x1a, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, + 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, + 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, + 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, + 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x1a, 0x69, 0x66, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, + 0x52, 0x17, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1e, + 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x1a, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1e, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x48, 0x06, 0x52, + 0x1b, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, + 0x4f, 0x0a, 0x22, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x48, 0x07, 0x52, 0x1e, 0x69, + 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, + 0x12, 0x3e, 0x0a, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, + 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x43, 0x61, 0x6c, 0x6c, + 0x12, 0x47, 0x0a, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1d, 0x63, 0x6f, 0x70, 0x79, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x46, 0x0a, 0x20, 0x63, 0x6f, 0x70, + 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x53, 0x0a, 0x27, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x22, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, + 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x69, 0x66, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x22, 0xd6, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x23, 0x0a, + 0x0d, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xaf, 0x02, 0x0a, 0x1a, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6d, 0x0a, + 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4d, 0x0a, 0x10, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x22, 0x3a, 0x0a, 0x1b, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0x87, 0x05, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, + 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, + 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, + 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, + 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, + 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, + 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, + 0x73, 0x6b, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, + 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x22, 0x69, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x9e, 0x01, 0x0a, + 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x37, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x81, 0x01, + 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6d, + 0x61, 0x63, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x22, 0x87, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, + 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x84, 0x01, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, - 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x37, 0x0a, 0x15, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x13, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, - 0x61, 0x69, 0x6c, 0x22, 0x81, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6d, - 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, - 0x10, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, - 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x20, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x84, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, + 0x63, 0x74, 0x22, 0x80, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, + 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x68, 0x6f, + 0x77, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x7f, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6d, 0x61, + 0x63, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, + 0x09, 0x68, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x68, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x26, + 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x42, 0x0a, 0x08, 0x68, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x68, 0x6d, 0x61, 0x63, + 0x4b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0xbf, 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x31, + 0x0a, 0x14, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x12, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x18, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x22, 0xca, 0x05, 0x0a, 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x22, 0xb5, 0x05, 0x0a, 0x06, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x53, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x14, 0x4d, 0x41, + 0x58, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x43, 0x48, 0x55, 0x4e, 0x4b, 0x5f, 0x42, 0x59, 0x54, + 0x45, 0x53, 0x10, 0x80, 0x80, 0x80, 0x01, 0x12, 0x1c, 0x0a, 0x15, 0x4d, 0x41, 0x58, 0x5f, 0x57, + 0x52, 0x49, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x55, 0x4e, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, + 0x10, 0x80, 0x80, 0x80, 0x01, 0x12, 0x19, 0x0a, 0x12, 0x4d, 0x41, 0x58, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x4d, 0x42, 0x10, 0x80, 0x80, 0xc0, 0x02, + 0x12, 0x29, 0x0a, 0x24, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x4d, + 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x41, + 0x4d, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x08, 0x12, 0x2a, 0x0a, 0x25, 0x4d, + 0x41, 0x58, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x42, + 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x20, 0x12, 0x29, 0x0a, 0x24, 0x4d, 0x41, 0x58, 0x5f, 0x43, + 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, + 0x80, 0x40, 0x12, 0x2a, 0x0a, 0x24, 0x4d, 0x41, 0x58, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, + 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0xa0, 0x01, 0x12, 0x27, + 0x0a, 0x23, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x42, + 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x41, 0x58, 0x5f, 0x4c, + 0x49, 0x46, 0x45, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x5f, 0x50, + 0x45, 0x52, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x64, 0x12, 0x26, 0x0a, 0x22, 0x4d, + 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, + 0x53, 0x10, 0x05, 0x12, 0x31, 0x0a, 0x2c, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, + 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4c, 0x45, 0x4e, + 0x47, 0x54, 0x48, 0x10, 0x80, 0x02, 0x12, 0x33, 0x0a, 0x2e, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, + 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, + 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, + 0x45, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x80, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x4d, + 0x41, 0x58, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x49, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x40, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, + 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x55, + 0x45, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x3f, 0x12, 0x1f, 0x0a, 0x1a, 0x4d, 0x41, + 0x58, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x56, 0x41, 0x4c, + 0x55, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x4d, + 0x41, 0x58, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x49, 0x44, 0x53, 0x5f, 0x50, 0x45, + 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x53, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0xe8, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x53, + 0x50, 0x4c, 0x49, 0x54, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x56, + 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x0e, 0x1a, 0x02, 0x10, 0x01, 0x22, + 0xf0, 0x1e, 0x0a, 0x06, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x1d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x80, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, - 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, - 0x2a, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x68, 0x6f, 0x77, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x7f, 0x0a, 0x14, 0x4c, - 0x69, 0x73, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x68, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6d, 0x61, 0x63, 0x4b, - 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x68, 0x6d, 0x61, 0x63, - 0x4b, 0x65, 0x79, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x97, 0x01, 0x0a, - 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x08, 0x68, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6d, 0x61, 0x63, - 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x07, 0x68, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbf, 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x4b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x65, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x32, - 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x18, - 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x68, 0x61, - 0x32, 0x35, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xca, 0x05, 0x0a, 0x10, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x22, 0xb5, 0x05, - 0x0a, 0x06, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x41, 0x4c, 0x55, - 0x45, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1b, 0x0a, 0x14, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x43, 0x48, 0x55, - 0x4e, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x80, 0x80, 0x01, 0x12, 0x1c, 0x0a, - 0x15, 0x4d, 0x41, 0x58, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x55, 0x4e, 0x4b, - 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x80, 0x80, 0x01, 0x12, 0x19, 0x0a, 0x12, 0x4d, - 0x41, 0x58, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x4d, - 0x42, 0x10, 0x80, 0x80, 0xc0, 0x02, 0x12, 0x29, 0x0a, 0x24, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x55, - 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, - 0x08, 0x12, 0x2a, 0x0a, 0x25, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, - 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, - 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x20, 0x12, 0x29, 0x0a, - 0x24, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, - 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, - 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x40, 0x12, 0x2a, 0x0a, 0x24, 0x4d, 0x41, 0x58, 0x5f, - 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, - 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, - 0x10, 0x80, 0xa0, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, - 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x53, - 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x64, 0x12, 0x22, 0x0a, - 0x1e, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x49, 0x46, 0x45, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x52, - 0x55, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, - 0x64, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53, 0x10, 0x05, 0x12, 0x31, 0x0a, 0x2c, 0x4d, 0x41, 0x58, - 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, - 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x4b, - 0x45, 0x59, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x80, 0x02, 0x12, 0x33, 0x0a, 0x2e, - 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, - 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x80, - 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x49, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x40, 0x12, - 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x5f, 0x4b, 0x45, - 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x3f, - 0x12, 0x1f, 0x0a, 0x1a, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x5f, 0x4b, - 0x45, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, - 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x4d, 0x41, 0x58, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x49, 0x44, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0xe8, - 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, - 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, - 0x0e, 0x1a, 0x02, 0x10, 0x01, 0x22, 0xf0, 0x1e, 0x0a, 0x06, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, - 0x74, 0x61, 0x67, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, - 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x33, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, - 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6d, 0x65, 0x74, - 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x72, - 0x70, 0x6f, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x70, 0x6f, 0x12, 0x38, 0x0a, - 0x03, 0x61, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x70, 0x6f, 0x18, 0x1b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x72, 0x70, 0x6f, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x03, 0x61, 0x63, + 0x6c, 0x12, 0x54, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x6c, 0x69, 0x66, 0x65, 0x63, + 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, 0x54, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x10, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x6c, 0x12, 0x41, 0x0a, - 0x09, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x52, + 0x09, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x04, + 0x63, 0x6f, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, + 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x48, 0x6f, 0x6c, 0x64, 0x12, 0x3d, 0x0a, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x77, 0x65, + 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x07, + 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, + 0x67, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, + 0x07, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, + 0x67, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, 0x05, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x77, + 0x6e, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, + 0x44, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x07, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x62, 0x69, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x69, 0x61, 0x6d, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x09, 0x69, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x73, 0x18, 0x19, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, + 0x73, 0x12, 0x67, 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x09, 0x61, 0x75, + 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x52, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x1a, 0x30, 0x0a, + 0x07, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x79, 0x73, 0x1a, + 0x87, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x41, + 0x67, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, 0x5c, 0x0a, 0x0a, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x1a, 0xb1, 0x02, 0x0a, 0x09, 0x49, 0x61, 0x6d, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7b, 0x0a, 0x1b, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, + 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x18, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, + 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x50, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x6d, 0x0a, 0x18, + 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0xdb, 0x07, 0x0a, 0x09, + 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x72, 0x75, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, + 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x1a, 0x8f, 0x07, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, + 0x12, 0x47, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, - 0x63, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x09, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, + 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x09, 0x63, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, + 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x41, 0x0a, 0x06, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x1a, 0xa8, + 0x05, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, + 0x61, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, + 0x52, 0x07, 0x61, 0x67, 0x65, 0x44, 0x61, 0x79, 0x73, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0e, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x76, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x69, 0x73, 0x4c, 0x69, 0x76, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x65, 0x77, 0x65, + 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x48, 0x02, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x4e, 0x65, 0x77, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x16, 0x64, + 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x13, 0x64, + 0x61, 0x79, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, + 0x44, 0x61, 0x74, 0x65, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, + 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x40, 0x0a, 0x1a, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, + 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x17, 0x64, 0x61, + 0x79, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x16, 0x6e, 0x6f, 0x6e, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, + 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x14, 0x6e, 0x6f, 0x6e, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x75, 0x6d, + 0x5f, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, + 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x64, + 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0x54, 0x0a, 0x07, 0x4c, 0x6f, 0x67, + 0x67, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, + 0x80, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, + 0x0f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x12, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x72, 0x65, 0x74, 0x65, + 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x1a, 0x26, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x59, 0x0a, 0x07, 0x57, 0x65, + 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6d, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x67, 0x65, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, + 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, + 0x64, 0x50, 0x61, 0x67, 0x65, 0x1a, 0x3e, 0x0a, 0x15, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, + 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x67, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0b, + 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, + 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x1d, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x23, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x7d, 0x22, 0x97, 0x02, 0x0a, 0x13, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x5f, 0x61, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x41, 0x0a, 0x0c, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, + 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x22, 0x53, 0x0a, 0x0f, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x72, 0x63, + 0x33, 0x32, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x06, 0x63, 0x72, 0x63, + 0x33, 0x32, 0x63, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, + 0x63, 0x22, 0x54, 0x0a, 0x0f, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x06, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x64, 0x35, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x64, 0x35, 0x48, 0x61, 0x73, 0x68, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x22, 0xfe, 0x02, 0x0a, 0x0f, 0x48, 0x6d, 0x61, 0x63, + 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x13, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x20, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x37, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x72, 0x73, - 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, - 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x48, 0x6f, 0x6c, - 0x64, 0x12, 0x3d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x12, 0x3b, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x57, 0x65, 0x62, - 0x73, 0x69, 0x74, 0x65, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x44, 0x0a, - 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x07, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, - 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, - 0x12, 0x33, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x07, 0x62, - 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, - 0x07, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x65, - 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x16, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x52, 0x65, - 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0f, 0x72, - 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, - 0x0a, 0x0a, 0x69, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x61, - 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x69, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x5f, - 0x70, 0x7a, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x61, 0x74, 0x69, 0x73, - 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x73, 0x12, 0x67, 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x41, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x1c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x41, - 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x1a, 0x30, 0x0a, 0x07, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x25, - 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, - 0x72, 0x50, 0x61, 0x79, 0x73, 0x1a, 0x87, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x72, 0x73, 0x12, 0x16, - 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x27, - 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, - 0x5c, 0x0a, 0x0a, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, - 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x0d, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x1a, 0xb1, 0x02, - 0x0a, 0x09, 0x49, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7b, 0x0a, 0x1b, 0x75, - 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x61, 0x6d, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x18, - 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, - 0x6f, 0x6e, 0x1a, 0x6d, 0x0a, 0x18, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, - 0x65, 0x1a, 0xdb, 0x07, 0x0a, 0x09, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, - 0x3c, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, - 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x1a, 0x8f, 0x07, - 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x50, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, - 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x41, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x1a, 0xa8, 0x05, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x07, 0x61, 0x67, 0x65, 0x44, 0x61, 0x79, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x65, - 0x66, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x07, - 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, - 0x06, 0x69, 0x73, 0x4c, 0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x6e, 0x75, - 0x6d, 0x5f, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x4e, 0x65, 0x77, - 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, - 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x12, 0x38, 0x0a, 0x16, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x48, 0x03, 0x52, 0x13, 0x64, 0x61, 0x79, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x12, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x40, 0x0a, 0x1a, - 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, - 0x48, 0x04, 0x52, 0x17, 0x64, 0x61, 0x79, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x6e, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x47, - 0x0a, 0x16, 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, - 0x65, 0x52, 0x14, 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x25, - 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, - 0x75, 0x66, 0x66, 0x69, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x61, - 0x79, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, - 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, - 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, - 0x54, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, - 0x67, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6c, 0x6f, 0x67, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x6f, 0x67, - 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0x80, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0e, 0x65, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x65, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x69, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x72, 0x65, 0x74, - 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x12, 0x72, 0x65, 0x74, - 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x11, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x1a, 0x26, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x1a, 0x59, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6d, - 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x67, 0x65, 0x53, - 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, - 0x6e, 0x64, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, - 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x61, 0x67, 0x65, 0x1a, 0x3e, 0x0a, 0x15, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x61, - 0x74, 0x61, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x67, 0x0a, 0x09, 0x41, - 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, - 0x47, 0xea, 0x41, 0x44, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x23, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, - 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x7d, 0x22, 0x97, 0x02, 0x0a, 0x13, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0a, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, - 0x67, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, - 0x41, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, - 0x61, 0x6d, 0x22, 0x53, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, - 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, - 0x1b, 0x0a, 0x06, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x22, 0x54, 0x0a, 0x0f, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x72, - 0x63, 0x33, 0x32, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x06, 0x63, 0x72, - 0x63, 0x33, 0x32, 0x63, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x64, 0x35, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x64, 0x35, 0x48, 0x61, - 0x73, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x22, 0xfe, 0x02, - 0x0a, 0x0f, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x08, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x05, 0xfa, 0x41, - 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x37, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, - 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, 0xec, - 0x03, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, 0x85, 0x04, 0x0a, 0x12, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x11, 0x63, 0x75, 0x73, 0x74, + 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x68, 0x0a, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x1a, 0x43, 0x0a, 0x15, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x70, 0xea, 0x41, 0x6d, - 0x0a, 0x23, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x2f, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x22, 0x71, 0x0a, - 0x12, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x14, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x13, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x28, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x68, - 0x61, 0x32, 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x22, 0xec, 0x0b, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x05, - 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x0e, - 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x17, - 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, - 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x03, 0x61, - 0x63, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, - 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x1a, 0x43, 0x0a, 0x15, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x3a, 0x7d, 0xea, 0x41, 0x7a, 0x0a, 0x29, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x4d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, + 0x22, 0x71, 0x0a, 0x12, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x14, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x28, 0x0a, 0x10, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x22, 0xec, 0x0b, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x1f, 0x0a, + 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x1b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, + 0xe0, 0x41, 0x05, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2b, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6d, 0x65, + 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x03, 0x61, + 0x63, 0x6c, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, + 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3f, + 0x0a, 0x07, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, + 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, + 0x5a, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0xe0, 0x41, 0x03, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x48, 0x6f, + 0x6c, 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x13, 0x72, + 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x16, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x48, + 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, + 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x13, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, + 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, + 0x6c, 0x64, 0x22, 0x97, 0x02, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x5f, 0x61, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x41, 0x0a, 0x0c, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, + 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, + 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x6b, - 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, - 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x5a, 0x0a, 0x19, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x65, 0x6d, 0x70, - 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x48, 0x6f, 0x6c, 0x64, 0x12, - 0x4e, 0x0a, 0x15, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x13, 0x72, 0x65, 0x74, 0x65, - 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x43, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x16, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, - 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, - 0x52, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x48, 0x6f, 0x6c, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x18, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, - 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x22, - 0x97, 0x02, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x6c, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, - 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x41, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, + 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x48, 0x0a, + 0x0b, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x25, 0x0a, 0x0e, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x35, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3c, + 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, + 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x5f, 0x0a, 0x0c, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x65, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x32, 0x98, 0x26, + 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x72, 0x0a, 0x0c, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x22, 0x8a, 0xd3, 0xe4, 0x93, 0x02, + 0x15, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6f, 0x0a, + 0x09, 0x47, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x22, 0x8a, 0xd3, 0xe4, 0x93, + 0x02, 0x15, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xab, + 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, + 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x22, 0x58, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x3d, 0x2a, + 0x2a, 0x7d, 0x12, 0x1e, 0x0a, 0x0e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0c, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x3d, 0x2a, + 0x2a, 0x7d, 0xda, 0x41, 0x17, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x2c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x85, 0x01, 0x0a, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x0b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, - 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x48, 0x0a, 0x0b, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x65, 0x61, 0x6d, 0x22, 0x35, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3c, 0x0a, 0x05, 0x4f, - 0x77, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x5f, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x32, 0xaf, 0x25, 0x0a, 0x07, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x72, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x22, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, - 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6f, 0x0a, 0x09, 0x47, 0x65, - 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x22, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, - 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x0c, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, - 0x38, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x0c, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, - 0x41, 0x17, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x85, 0x01, 0x0a, 0x0b, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x18, - 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x93, 0x01, 0x0a, 0x19, 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, - 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, - 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, - 0x26, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, - 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0xab, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x49, - 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x22, 0x60, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x12, 0x17, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x28, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0xda, 0x41, 0x08, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xb2, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x22, 0x67, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x12, 0x17, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, - 0x2a, 0x7d, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x28, - 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0xda, 0x41, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x2c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0xd7, 0x01, 0x0a, 0x12, 0x54, - 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x12, 0x17, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x8a, 0xd3, 0xe4, + 0x93, 0x02, 0x18, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0x93, 0x01, 0x0a, 0x19, 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x22, 0x26, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, + 0x7d, 0xda, 0x41, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0xab, 0x01, 0x0a, 0x0c, 0x47, + 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, + 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x60, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x12, 0x17, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x28, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, - 0x2a, 0x7d, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0xda, 0x41, 0x14, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x37, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1c, - 0x12, 0x1a, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x12, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x12, 0x93, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x37, - 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, - 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x96, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x37, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, - 0x28, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x98, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x33, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x96, 0x01, 0x0a, 0x11, - 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x2a, 0x7d, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0xda, 0x41, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xb2, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x74, + 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x22, 0x67, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x12, 0x17, 0x0a, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x28, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0xda, 0x41, 0x0f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0xd7, 0x01, + 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x8a, 0xd3, 0xe4, 0x93, 0x02, + 0x4f, 0x12, 0x17, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x7b, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x28, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, + 0xda, 0x41, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x37, 0x8a, 0xd3, 0xe4, + 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, + 0x41, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x9f, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x37, 0x8a, + 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x7b, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0xda, + 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xa8, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x37, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x2a, + 0x12, 0x28, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x3a, 0x8a, 0xd3, 0xe4, 0x93, 0x02, + 0x17, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x1a, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x2c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0xa8, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x8a, 0xd3, - 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0b, - 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x7e, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x29, 0x8a, 0xd3, 0xe4, 0x93, 0x02, - 0x23, 0x12, 0x21, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x98, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x48, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, - 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0xba, 0x01, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, - 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x8a, 0xd3, 0xe4, 0x93, 0x02, - 0x2f, 0x12, 0x2d, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x12, 0x20, - 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, - 0xda, 0x41, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x12, 0x95, 0x01, 0x0a, - 0x09, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x48, 0x8a, 0xd3, 0xe4, 0x93, - 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x0d, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xa5, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, - 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x48, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, - 0x41, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0xda, - 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, - 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x22, 0x39, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x60, 0x0a, 0x0b, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x84, 0x01, - 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x25, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x8a, 0xd3, - 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0b, - 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x98, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x0f, 0x0a, 0x0d, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x12, - 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, - 0xae, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, - 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, - 0x0a, 0x21, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x62, 0x75, 0x63, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, + 0x12, 0x15, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x7e, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x29, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x0a, + 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, - 0x12, 0xae, 0x01, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, - 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x69, 0x64, 0x12, 0x20, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, - 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0xda, 0x41, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, - 0x64, 0x12, 0x80, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1b, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, - 0x09, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x95, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, - 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x8a, 0xd3, 0xe4, 0x93, 0x02, - 0x0b, 0x12, 0x09, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x1d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x77, 0x0a, 0x0d, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, + 0x12, 0x98, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x48, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, + 0xda, 0x41, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0xda, 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xba, 0x01, 0x0a, 0x14, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, + 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, + 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x0a, + 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x12, 0x20, 0x7b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0xda, 0x41, 0x09, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x12, 0x95, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x48, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, + 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0xa5, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x8a, 0xd3, + 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, + 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x0d, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x18, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x39, 0x8a, 0xd3, + 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, + 0x2a, 0x7d, 0xda, 0x41, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x60, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x25, - 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0xda, 0x41, 0x11, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x2c, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x7d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x48, 0x6d, 0x61, 0x63, - 0x4b, 0x65, 0x79, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, + 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x84, 0x01, 0x0a, 0x0b, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, + 0x12, 0x15, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x98, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x3a, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x0f, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, + 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x13, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x38, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x0a, 0x21, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, + 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xae, 0x01, 0x0a, + 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x8a, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x12, 0x2d, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x12, + 0x20, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, + 0x2a, 0xda, 0x41, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x12, 0x80, 0x01, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x1b, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x95, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, + 0x65, 0x79, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, + 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x1d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x2c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x77, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x25, 0x8a, 0xd3, 0xe4, 0x93, + 0x02, 0x0b, 0x12, 0x09, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x11, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x2c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x7d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x12, + 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, + 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x25, 0x8a, 0xd3, 0xe4, 0x93, 0x02, + 0x0b, 0x12, 0x09, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x11, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x2c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x7c, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x73, + 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1b, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x9d, + 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, + 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6d, - 0x61, 0x63, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x25, 0x8a, - 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0xda, 0x41, 0x11, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x2c, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x7c, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6d, 0x61, 0x63, - 0x4b, 0x65, 0x79, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6d, 0x61, - 0x63, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x9d, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6d, 0x61, - 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, - 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x48, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x3f, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x0a, 0x10, 0x68, 0x6d, 0x61, - 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0c, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x14, 0x68, 0x6d, - 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x1a, 0xa7, 0x02, 0xca, 0x41, 0x16, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, - 0x8a, 0x02, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, - 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x72, 0x65, 0x61, 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, - 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x64, 0x65, 0x76, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, - 0x68, 0x2f, 0x64, 0x65, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x64, 0x65, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0xdc, 0x01, 0x0a, - 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, - 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x32, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0xea, 0x41, 0x78, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, - 0x6b, 0x65, 0x79, 0x52, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x69, - 0x6e, 0x67, 0x7d, 0x2f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x73, 0x2f, 0x7b, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x61, 0x63, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3f, 0x8a, + 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x0a, 0x10, 0x68, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0c, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x14, 0x68, 0x6d, 0x61, 0x63, 0x5f, 0x6b, + 0x65, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0xa7, + 0x02, 0xca, 0x41, 0x16, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x8a, 0x02, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x61, 0x64, + 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x64, 0x65, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2c, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x64, 0x65, + 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, + 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x2f, 0x64, 0x65, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0xdc, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x42, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, + 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2f, 0x76, 0x32, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0xea, 0x41, 0x78, 0x0a, + 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, + 0x65, 0x79, 0x12, 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x52, + 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x7d, 0x2f, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -8188,11 +8199,11 @@ var file_google_storage_v2_storage_proto_goTypes = []interface{}{ (*ListBucketsResponse)(nil), // 5: google.storage.v2.ListBucketsResponse (*LockBucketRetentionPolicyRequest)(nil), // 6: google.storage.v2.LockBucketRetentionPolicyRequest (*UpdateBucketRequest)(nil), // 7: google.storage.v2.UpdateBucketRequest - (*DeleteNotificationRequest)(nil), // 8: google.storage.v2.DeleteNotificationRequest - (*GetNotificationRequest)(nil), // 9: google.storage.v2.GetNotificationRequest - (*CreateNotificationRequest)(nil), // 10: google.storage.v2.CreateNotificationRequest - (*ListNotificationsRequest)(nil), // 11: google.storage.v2.ListNotificationsRequest - (*ListNotificationsResponse)(nil), // 12: google.storage.v2.ListNotificationsResponse + (*DeleteNotificationConfigRequest)(nil), // 8: google.storage.v2.DeleteNotificationConfigRequest + (*GetNotificationConfigRequest)(nil), // 9: google.storage.v2.GetNotificationConfigRequest + (*CreateNotificationConfigRequest)(nil), // 10: google.storage.v2.CreateNotificationConfigRequest + (*ListNotificationConfigsRequest)(nil), // 11: google.storage.v2.ListNotificationConfigsRequest + (*ListNotificationConfigsResponse)(nil), // 12: google.storage.v2.ListNotificationConfigsResponse (*ComposeObjectRequest)(nil), // 13: google.storage.v2.ComposeObjectRequest (*DeleteObjectRequest)(nil), // 14: google.storage.v2.DeleteObjectRequest (*CancelResumableWriteRequest)(nil), // 15: google.storage.v2.CancelResumableWriteRequest @@ -8226,7 +8237,7 @@ var file_google_storage_v2_storage_proto_goTypes = []interface{}{ (*ChecksummedData)(nil), // 43: google.storage.v2.ChecksummedData (*ObjectChecksums)(nil), // 44: google.storage.v2.ObjectChecksums (*HmacKeyMetadata)(nil), // 45: google.storage.v2.HmacKeyMetadata - (*Notification)(nil), // 46: google.storage.v2.Notification + (*NotificationConfig)(nil), // 46: google.storage.v2.NotificationConfig (*CustomerEncryption)(nil), // 47: google.storage.v2.CustomerEncryption (*Object)(nil), // 48: google.storage.v2.Object (*ObjectAccessControl)(nil), // 49: google.storage.v2.ObjectAccessControl @@ -8253,7 +8264,7 @@ var file_google_storage_v2_storage_proto_goTypes = []interface{}{ (*Bucket_Lifecycle_Rule)(nil), // 70: google.storage.v2.Bucket.Lifecycle.Rule (*Bucket_Lifecycle_Rule_Action)(nil), // 71: google.storage.v2.Bucket.Lifecycle.Rule.Action (*Bucket_Lifecycle_Rule_Condition)(nil), // 72: google.storage.v2.Bucket.Lifecycle.Rule.Condition - nil, // 73: google.storage.v2.Notification.CustomAttributesEntry + nil, // 73: google.storage.v2.NotificationConfig.CustomAttributesEntry nil, // 74: google.storage.v2.Object.MetadataEntry (*fieldmaskpb.FieldMask)(nil), // 75: google.protobuf.FieldMask (*timestamppb.Timestamp)(nil), // 76: google.protobuf.Timestamp @@ -8273,8 +8284,8 @@ var file_google_storage_v2_storage_proto_depIdxs = []int32{ 41, // 3: google.storage.v2.ListBucketsResponse.buckets:type_name -> google.storage.v2.Bucket 41, // 4: google.storage.v2.UpdateBucketRequest.bucket:type_name -> google.storage.v2.Bucket 75, // 5: google.storage.v2.UpdateBucketRequest.update_mask:type_name -> google.protobuf.FieldMask - 46, // 6: google.storage.v2.CreateNotificationRequest.notification:type_name -> google.storage.v2.Notification - 46, // 7: google.storage.v2.ListNotificationsResponse.notifications:type_name -> google.storage.v2.Notification + 46, // 6: google.storage.v2.CreateNotificationConfigRequest.notification_config:type_name -> google.storage.v2.NotificationConfig + 46, // 7: google.storage.v2.ListNotificationConfigsResponse.notification_configs:type_name -> google.storage.v2.NotificationConfig 48, // 8: google.storage.v2.ComposeObjectRequest.destination:type_name -> google.storage.v2.Object 55, // 9: google.storage.v2.ComposeObjectRequest.source_objects:type_name -> google.storage.v2.ComposeObjectRequest.SourceObject 39, // 10: google.storage.v2.ComposeObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams @@ -8331,7 +8342,7 @@ var file_google_storage_v2_storage_proto_depIdxs = []int32{ 51, // 61: google.storage.v2.BucketAccessControl.project_team:type_name -> google.storage.v2.ProjectTeam 76, // 62: google.storage.v2.HmacKeyMetadata.create_time:type_name -> google.protobuf.Timestamp 76, // 63: google.storage.v2.HmacKeyMetadata.update_time:type_name -> google.protobuf.Timestamp - 73, // 64: google.storage.v2.Notification.custom_attributes:type_name -> google.storage.v2.Notification.CustomAttributesEntry + 73, // 64: google.storage.v2.NotificationConfig.custom_attributes:type_name -> google.storage.v2.NotificationConfig.CustomAttributesEntry 49, // 65: google.storage.v2.Object.acl:type_name -> google.storage.v2.ObjectAccessControl 76, // 66: google.storage.v2.Object.delete_time:type_name -> google.protobuf.Timestamp 76, // 67: google.storage.v2.Object.create_time:type_name -> google.protobuf.Timestamp @@ -8366,10 +8377,10 @@ var file_google_storage_v2_storage_proto_depIdxs = []int32{ 80, // 96: google.storage.v2.Storage.SetIamPolicy:input_type -> google.iam.v1.SetIamPolicyRequest 81, // 97: google.storage.v2.Storage.TestIamPermissions:input_type -> google.iam.v1.TestIamPermissionsRequest 7, // 98: google.storage.v2.Storage.UpdateBucket:input_type -> google.storage.v2.UpdateBucketRequest - 8, // 99: google.storage.v2.Storage.DeleteNotification:input_type -> google.storage.v2.DeleteNotificationRequest - 9, // 100: google.storage.v2.Storage.GetNotification:input_type -> google.storage.v2.GetNotificationRequest - 10, // 101: google.storage.v2.Storage.CreateNotification:input_type -> google.storage.v2.CreateNotificationRequest - 11, // 102: google.storage.v2.Storage.ListNotifications:input_type -> google.storage.v2.ListNotificationsRequest + 8, // 99: google.storage.v2.Storage.DeleteNotificationConfig:input_type -> google.storage.v2.DeleteNotificationConfigRequest + 9, // 100: google.storage.v2.Storage.GetNotificationConfig:input_type -> google.storage.v2.GetNotificationConfigRequest + 10, // 101: google.storage.v2.Storage.CreateNotificationConfig:input_type -> google.storage.v2.CreateNotificationConfigRequest + 11, // 102: google.storage.v2.Storage.ListNotificationConfigs:input_type -> google.storage.v2.ListNotificationConfigsRequest 13, // 103: google.storage.v2.Storage.ComposeObject:input_type -> google.storage.v2.ComposeObjectRequest 14, // 104: google.storage.v2.Storage.DeleteObject:input_type -> google.storage.v2.DeleteObjectRequest 15, // 105: google.storage.v2.Storage.CancelResumableWrite:input_type -> google.storage.v2.CancelResumableWriteRequest @@ -8396,10 +8407,10 @@ var file_google_storage_v2_storage_proto_depIdxs = []int32{ 83, // 126: google.storage.v2.Storage.SetIamPolicy:output_type -> google.iam.v1.Policy 84, // 127: google.storage.v2.Storage.TestIamPermissions:output_type -> google.iam.v1.TestIamPermissionsResponse 41, // 128: google.storage.v2.Storage.UpdateBucket:output_type -> google.storage.v2.Bucket - 82, // 129: google.storage.v2.Storage.DeleteNotification:output_type -> google.protobuf.Empty - 46, // 130: google.storage.v2.Storage.GetNotification:output_type -> google.storage.v2.Notification - 46, // 131: google.storage.v2.Storage.CreateNotification:output_type -> google.storage.v2.Notification - 12, // 132: google.storage.v2.Storage.ListNotifications:output_type -> google.storage.v2.ListNotificationsResponse + 82, // 129: google.storage.v2.Storage.DeleteNotificationConfig:output_type -> google.protobuf.Empty + 46, // 130: google.storage.v2.Storage.GetNotificationConfig:output_type -> google.storage.v2.NotificationConfig + 46, // 131: google.storage.v2.Storage.CreateNotificationConfig:output_type -> google.storage.v2.NotificationConfig + 12, // 132: google.storage.v2.Storage.ListNotificationConfigs:output_type -> google.storage.v2.ListNotificationConfigsResponse 48, // 133: google.storage.v2.Storage.ComposeObject:output_type -> google.storage.v2.Object 82, // 134: google.storage.v2.Storage.DeleteObject:output_type -> google.protobuf.Empty 16, // 135: google.storage.v2.Storage.CancelResumableWrite:output_type -> google.storage.v2.CancelResumableWriteResponse @@ -8515,7 +8526,7 @@ func file_google_storage_v2_storage_proto_init() { } } file_google_storage_v2_storage_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteNotificationRequest); i { + switch v := v.(*DeleteNotificationConfigRequest); i { case 0: return &v.state case 1: @@ -8527,7 +8538,7 @@ func file_google_storage_v2_storage_proto_init() { } } file_google_storage_v2_storage_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNotificationRequest); i { + switch v := v.(*GetNotificationConfigRequest); i { case 0: return &v.state case 1: @@ -8539,7 +8550,7 @@ func file_google_storage_v2_storage_proto_init() { } } file_google_storage_v2_storage_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateNotificationRequest); i { + switch v := v.(*CreateNotificationConfigRequest); i { case 0: return &v.state case 1: @@ -8551,7 +8562,7 @@ func file_google_storage_v2_storage_proto_init() { } } file_google_storage_v2_storage_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNotificationsRequest); i { + switch v := v.(*ListNotificationConfigsRequest); i { case 0: return &v.state case 1: @@ -8563,7 +8574,7 @@ func file_google_storage_v2_storage_proto_init() { } } file_google_storage_v2_storage_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNotificationsResponse); i { + switch v := v.(*ListNotificationConfigsResponse); i { case 0: return &v.state case 1: @@ -8971,7 +8982,7 @@ func file_google_storage_v2_storage_proto_init() { } } file_google_storage_v2_storage_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Notification); i { + switch v := v.(*NotificationConfig); i { case 0: return &v.state case 1: @@ -9375,17 +9386,17 @@ type StorageClient interface { TestIamPermissions(ctx context.Context, in *v1.TestIamPermissionsRequest, opts ...grpc.CallOption) (*v1.TestIamPermissionsResponse, error) // Updates a bucket. Equivalent to JSON API's storage.buckets.patch method. UpdateBucket(ctx context.Context, in *UpdateBucketRequest, opts ...grpc.CallOption) (*Bucket, error) - // Permanently deletes a notification subscription. - DeleteNotification(ctx context.Context, in *DeleteNotificationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) - // View a notification config. - GetNotification(ctx context.Context, in *GetNotificationRequest, opts ...grpc.CallOption) (*Notification, error) - // Creates a notification subscription for a given bucket. - // These notifications, when triggered, publish messages to the specified - // Pub/Sub topics. - // See https://cloud.google.com/storage/docs/pubsub-notifications. - CreateNotification(ctx context.Context, in *CreateNotificationRequest, opts ...grpc.CallOption) (*Notification, error) - // Retrieves a list of notification subscriptions for a given bucket. - ListNotifications(ctx context.Context, in *ListNotificationsRequest, opts ...grpc.CallOption) (*ListNotificationsResponse, error) + // Permanently deletes a NotificationConfig. + DeleteNotificationConfig(ctx context.Context, in *DeleteNotificationConfigRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // View a NotificationConfig. + GetNotificationConfig(ctx context.Context, in *GetNotificationConfigRequest, opts ...grpc.CallOption) (*NotificationConfig, error) + // Creates a NotificationConfig for a given bucket. + // These NotificationConfigs, when triggered, publish messages to the + // specified Pub/Sub topics. See + // https://cloud.google.com/storage/docs/pubsub-notifications. + CreateNotificationConfig(ctx context.Context, in *CreateNotificationConfigRequest, opts ...grpc.CallOption) (*NotificationConfig, error) + // Retrieves a list of NotificationConfigs for a given bucket. + ListNotificationConfigs(ctx context.Context, in *ListNotificationConfigsRequest, opts ...grpc.CallOption) (*ListNotificationConfigsResponse, error) // Concatenates a list of existing objects into a new object in the same // bucket. ComposeObject(ctx context.Context, in *ComposeObjectRequest, opts ...grpc.CallOption) (*Object, error) @@ -9440,8 +9451,9 @@ type StorageClient interface { // returned `persisted_size`; in this case, the service will skip data at // offsets that were already persisted (without checking that it matches // the previously written data), and write only the data starting from the - // persisted offset. This behavior can make client-side handling simpler - // in some cases. + // persisted offset. Even though the data isn't written, it may still + // incur a performance cost over resuming at the correct write offset. + // This behavior can make client-side handling simpler in some cases. // // The service will not view the object as complete until the client has // sent a `WriteObjectRequest` with `finish_write` set to `true`. Sending any @@ -9580,36 +9592,36 @@ func (c *storageClient) UpdateBucket(ctx context.Context, in *UpdateBucketReques return out, nil } -func (c *storageClient) DeleteNotification(ctx context.Context, in *DeleteNotificationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { +func (c *storageClient) DeleteNotificationConfig(ctx context.Context, in *DeleteNotificationConfigRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, "/google.storage.v2.Storage/DeleteNotification", in, out, opts...) + err := c.cc.Invoke(ctx, "/google.storage.v2.Storage/DeleteNotificationConfig", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *storageClient) GetNotification(ctx context.Context, in *GetNotificationRequest, opts ...grpc.CallOption) (*Notification, error) { - out := new(Notification) - err := c.cc.Invoke(ctx, "/google.storage.v2.Storage/GetNotification", in, out, opts...) +func (c *storageClient) GetNotificationConfig(ctx context.Context, in *GetNotificationConfigRequest, opts ...grpc.CallOption) (*NotificationConfig, error) { + out := new(NotificationConfig) + err := c.cc.Invoke(ctx, "/google.storage.v2.Storage/GetNotificationConfig", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *storageClient) CreateNotification(ctx context.Context, in *CreateNotificationRequest, opts ...grpc.CallOption) (*Notification, error) { - out := new(Notification) - err := c.cc.Invoke(ctx, "/google.storage.v2.Storage/CreateNotification", in, out, opts...) +func (c *storageClient) CreateNotificationConfig(ctx context.Context, in *CreateNotificationConfigRequest, opts ...grpc.CallOption) (*NotificationConfig, error) { + out := new(NotificationConfig) + err := c.cc.Invoke(ctx, "/google.storage.v2.Storage/CreateNotificationConfig", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *storageClient) ListNotifications(ctx context.Context, in *ListNotificationsRequest, opts ...grpc.CallOption) (*ListNotificationsResponse, error) { - out := new(ListNotificationsResponse) - err := c.cc.Invoke(ctx, "/google.storage.v2.Storage/ListNotifications", in, out, opts...) +func (c *storageClient) ListNotificationConfigs(ctx context.Context, in *ListNotificationConfigsRequest, opts ...grpc.CallOption) (*ListNotificationConfigsResponse, error) { + out := new(ListNotificationConfigsResponse) + err := c.cc.Invoke(ctx, "/google.storage.v2.Storage/ListNotificationConfigs", in, out, opts...) if err != nil { return nil, err } @@ -9847,17 +9859,17 @@ type StorageServer interface { TestIamPermissions(context.Context, *v1.TestIamPermissionsRequest) (*v1.TestIamPermissionsResponse, error) // Updates a bucket. Equivalent to JSON API's storage.buckets.patch method. UpdateBucket(context.Context, *UpdateBucketRequest) (*Bucket, error) - // Permanently deletes a notification subscription. - DeleteNotification(context.Context, *DeleteNotificationRequest) (*emptypb.Empty, error) - // View a notification config. - GetNotification(context.Context, *GetNotificationRequest) (*Notification, error) - // Creates a notification subscription for a given bucket. - // These notifications, when triggered, publish messages to the specified - // Pub/Sub topics. - // See https://cloud.google.com/storage/docs/pubsub-notifications. - CreateNotification(context.Context, *CreateNotificationRequest) (*Notification, error) - // Retrieves a list of notification subscriptions for a given bucket. - ListNotifications(context.Context, *ListNotificationsRequest) (*ListNotificationsResponse, error) + // Permanently deletes a NotificationConfig. + DeleteNotificationConfig(context.Context, *DeleteNotificationConfigRequest) (*emptypb.Empty, error) + // View a NotificationConfig. + GetNotificationConfig(context.Context, *GetNotificationConfigRequest) (*NotificationConfig, error) + // Creates a NotificationConfig for a given bucket. + // These NotificationConfigs, when triggered, publish messages to the + // specified Pub/Sub topics. See + // https://cloud.google.com/storage/docs/pubsub-notifications. + CreateNotificationConfig(context.Context, *CreateNotificationConfigRequest) (*NotificationConfig, error) + // Retrieves a list of NotificationConfigs for a given bucket. + ListNotificationConfigs(context.Context, *ListNotificationConfigsRequest) (*ListNotificationConfigsResponse, error) // Concatenates a list of existing objects into a new object in the same // bucket. ComposeObject(context.Context, *ComposeObjectRequest) (*Object, error) @@ -9912,8 +9924,9 @@ type StorageServer interface { // returned `persisted_size`; in this case, the service will skip data at // offsets that were already persisted (without checking that it matches // the previously written data), and write only the data starting from the - // persisted offset. This behavior can make client-side handling simpler - // in some cases. + // persisted offset. Even though the data isn't written, it may still + // incur a performance cost over resuming at the correct write offset. + // This behavior can make client-side handling simpler in some cases. // // The service will not view the object as complete until the client has // sent a `WriteObjectRequest` with `finish_write` set to `true`. Sending any @@ -9994,17 +10007,17 @@ func (*UnimplementedStorageServer) TestIamPermissions(context.Context, *v1.TestI func (*UnimplementedStorageServer) UpdateBucket(context.Context, *UpdateBucketRequest) (*Bucket, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateBucket not implemented") } -func (*UnimplementedStorageServer) DeleteNotification(context.Context, *DeleteNotificationRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteNotification not implemented") +func (*UnimplementedStorageServer) DeleteNotificationConfig(context.Context, *DeleteNotificationConfigRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteNotificationConfig not implemented") } -func (*UnimplementedStorageServer) GetNotification(context.Context, *GetNotificationRequest) (*Notification, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetNotification not implemented") +func (*UnimplementedStorageServer) GetNotificationConfig(context.Context, *GetNotificationConfigRequest) (*NotificationConfig, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNotificationConfig not implemented") } -func (*UnimplementedStorageServer) CreateNotification(context.Context, *CreateNotificationRequest) (*Notification, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateNotification not implemented") +func (*UnimplementedStorageServer) CreateNotificationConfig(context.Context, *CreateNotificationConfigRequest) (*NotificationConfig, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateNotificationConfig not implemented") } -func (*UnimplementedStorageServer) ListNotifications(context.Context, *ListNotificationsRequest) (*ListNotificationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListNotifications not implemented") +func (*UnimplementedStorageServer) ListNotificationConfigs(context.Context, *ListNotificationConfigsRequest) (*ListNotificationConfigsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListNotificationConfigs not implemented") } func (*UnimplementedStorageServer) ComposeObject(context.Context, *ComposeObjectRequest) (*Object, error) { return nil, status.Errorf(codes.Unimplemented, "method ComposeObject not implemented") @@ -10224,74 +10237,74 @@ func _Storage_UpdateBucket_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } -func _Storage_DeleteNotification_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteNotificationRequest) +func _Storage_DeleteNotificationConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteNotificationConfigRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(StorageServer).DeleteNotification(ctx, in) + return srv.(StorageServer).DeleteNotificationConfig(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.storage.v2.Storage/DeleteNotification", + FullMethod: "/google.storage.v2.Storage/DeleteNotificationConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageServer).DeleteNotification(ctx, req.(*DeleteNotificationRequest)) + return srv.(StorageServer).DeleteNotificationConfig(ctx, req.(*DeleteNotificationConfigRequest)) } return interceptor(ctx, in, info, handler) } -func _Storage_GetNotification_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetNotificationRequest) +func _Storage_GetNotificationConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNotificationConfigRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(StorageServer).GetNotification(ctx, in) + return srv.(StorageServer).GetNotificationConfig(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.storage.v2.Storage/GetNotification", + FullMethod: "/google.storage.v2.Storage/GetNotificationConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageServer).GetNotification(ctx, req.(*GetNotificationRequest)) + return srv.(StorageServer).GetNotificationConfig(ctx, req.(*GetNotificationConfigRequest)) } return interceptor(ctx, in, info, handler) } -func _Storage_CreateNotification_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateNotificationRequest) +func _Storage_CreateNotificationConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateNotificationConfigRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(StorageServer).CreateNotification(ctx, in) + return srv.(StorageServer).CreateNotificationConfig(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.storage.v2.Storage/CreateNotification", + FullMethod: "/google.storage.v2.Storage/CreateNotificationConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageServer).CreateNotification(ctx, req.(*CreateNotificationRequest)) + return srv.(StorageServer).CreateNotificationConfig(ctx, req.(*CreateNotificationConfigRequest)) } return interceptor(ctx, in, info, handler) } -func _Storage_ListNotifications_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNotificationsRequest) +func _Storage_ListNotificationConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListNotificationConfigsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(StorageServer).ListNotifications(ctx, in) + return srv.(StorageServer).ListNotificationConfigs(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.storage.v2.Storage/ListNotifications", + FullMethod: "/google.storage.v2.Storage/ListNotificationConfigs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageServer).ListNotifications(ctx, req.(*ListNotificationsRequest)) + return srv.(StorageServer).ListNotificationConfigs(ctx, req.(*ListNotificationConfigsRequest)) } return interceptor(ctx, in, info, handler) } @@ -10654,20 +10667,20 @@ var _Storage_serviceDesc = grpc.ServiceDesc{ Handler: _Storage_UpdateBucket_Handler, }, { - MethodName: "DeleteNotification", - Handler: _Storage_DeleteNotification_Handler, + MethodName: "DeleteNotificationConfig", + Handler: _Storage_DeleteNotificationConfig_Handler, }, { - MethodName: "GetNotification", - Handler: _Storage_GetNotification_Handler, + MethodName: "GetNotificationConfig", + Handler: _Storage_GetNotificationConfig_Handler, }, { - MethodName: "CreateNotification", - Handler: _Storage_CreateNotification_Handler, + MethodName: "CreateNotificationConfig", + Handler: _Storage_CreateNotificationConfig_Handler, }, { - MethodName: "ListNotifications", - Handler: _Storage_ListNotifications_Handler, + MethodName: "ListNotificationConfigs", + Handler: _Storage_ListNotificationConfigs_Handler, }, { MethodName: "ComposeObject", diff --git a/vendor/cloud.google.com/go/storage/internal/version.go b/vendor/cloud.google.com/go/storage/internal/version.go index a08cb7cabc..5856ebbb47 100644 --- a/vendor/cloud.google.com/go/storage/internal/version.go +++ b/vendor/cloud.google.com/go/storage/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.29.0" +const Version = "1.30.0" diff --git a/vendor/cloud.google.com/go/storage/notifications.go b/vendor/cloud.google.com/go/storage/notifications.go index 614feb7b6d..d5619ac5ad 100644 --- a/vendor/cloud.google.com/go/storage/notifications.go +++ b/vendor/cloud.google.com/go/storage/notifications.go @@ -92,7 +92,7 @@ func toNotification(rn *raw.Notification) *Notification { return n } -func toNotificationFromProto(pbn *storagepb.Notification) *Notification { +func toNotificationFromProto(pbn *storagepb.NotificationConfig) *Notification { n := &Notification{ ID: pbn.GetName(), EventTypes: pbn.GetEventTypes(), @@ -104,8 +104,8 @@ func toNotificationFromProto(pbn *storagepb.Notification) *Notification { return n } -func toProtoNotification(n *Notification) *storagepb.Notification { - return &storagepb.Notification{ +func toProtoNotification(n *Notification) *storagepb.NotificationConfig { + return &storagepb.NotificationConfig{ Name: n.ID, Topic: fmt.Sprintf("//pubsub.googleapis.com/projects/%s/topics/%s", n.TopicProjectID, n.TopicID), @@ -182,7 +182,7 @@ func notificationsToMap(rns []*raw.Notification) map[string]*Notification { return m } -func notificationsToMapFromProto(ns []*storagepb.Notification) map[string]*Notification { +func notificationsToMapFromProto(ns []*storagepb.NotificationConfig) map[string]*Notification { m := map[string]*Notification{} for _, n := range ns { m[n.Name] = toNotificationFromProto(n) diff --git a/vendor/cloud.google.com/go/storage/option.go b/vendor/cloud.google.com/go/storage/option.go new file mode 100644 index 0000000000..f59ab818f6 --- /dev/null +++ b/vendor/cloud.google.com/go/storage/option.go @@ -0,0 +1,75 @@ +// Copyright 2023 Google LLC +// +// 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. + +package storage + +import ( + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" +) + +// storageConfig contains the Storage client option configuration that can be +// set through storageClientOptions. +type storageConfig struct { + useJSONforReads bool + readAPIWasSet bool +} + +// newStorageConfig generates a new storageConfig with all the given +// storageClientOptions applied. +func newStorageConfig(opts ...option.ClientOption) storageConfig { + var conf storageConfig + for _, opt := range opts { + if storageOpt, ok := opt.(storageClientOption); ok { + storageOpt.ApplyStorageOpt(&conf) + } + } + return conf +} + +// A storageClientOption is an option for a Google Storage client. +type storageClientOption interface { + option.ClientOption + ApplyStorageOpt(*storageConfig) +} + +// WithJSONReads is an option that may be passed to a Storage Client on creation. +// It sets the client to use the JSON API for object reads. Currently, the +// default API used for reads is XML. +// Setting this option is required to use the GenerationNotMatch condition. +// +// Note that when this option is set, reads will return a zero date for +// [ReaderObjectAttrs].LastModified and may return a different value for +// [ReaderObjectAttrs].CacheControl. +func WithJSONReads() option.ClientOption { + return &withReadAPI{useJSON: true} +} + +// WithXMLReads is an option that may be passed to a Storage Client on creation. +// It sets the client to use the JSON API for object reads. +// +// This is the current default. +func WithXMLReads() option.ClientOption { + return &withReadAPI{useJSON: false} +} + +type withReadAPI struct { + internaloption.EmbeddableAdapter + useJSON bool +} + +func (w *withReadAPI) ApplyStorageOpt(c *storageConfig) { + c.useJSONforReads = w.useJSON + c.readAPIWasSet = true +} diff --git a/vendor/cloud.google.com/go/storage/reader.go b/vendor/cloud.google.com/go/storage/reader.go index 46487d2b77..1bb65ec810 100644 --- a/vendor/cloud.google.com/go/storage/reader.go +++ b/vendor/cloud.google.com/go/storage/reader.go @@ -139,15 +139,23 @@ func uncompressedByServer(res *http.Response) bool { res.Header.Get("Content-Encoding") != "gzip" } +// parseCRC32c parses the crc32c hash from the X-Goog-Hash header. +// It can parse headers in the form [crc32c=xxx md5=xxx] (XML responses) or the +// form [crc32c=xxx,md5=xxx] (JSON responses). The md5 hash is ignored. func parseCRC32c(res *http.Response) (uint32, bool) { const prefix = "crc32c=" for _, spec := range res.Header["X-Goog-Hash"] { - if strings.HasPrefix(spec, prefix) { - c, err := decodeUint32(spec[len(prefix):]) - if err == nil { - return c, true + values := strings.Split(spec, ",") + + for _, v := range values { + if strings.HasPrefix(v, prefix) { + c, err := decodeUint32(v[len(prefix):]) + if err == nil { + return c, true + } } } + } return 0, false } diff --git a/vendor/cloud.google.com/go/storage/storage.go b/vendor/cloud.google.com/go/storage/storage.go index 7fc3fc4cb9..e9cd7003ba 100644 --- a/vendor/cloud.google.com/go/storage/storage.go +++ b/vendor/cloud.google.com/go/storage/storage.go @@ -129,8 +129,10 @@ type Client struct { // // Clients should be reused instead of created as needed. The methods of Client // are safe for concurrent use by multiple goroutines. +// +// You may configure the client by passing in options from the [google.golang.org/api/option] +// package. You may also use options defined in this package, such as [WithJSONReads]. func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { - // Use the experimental gRPC client if the env var is set. // This is an experimental API and not intended for public use. if withGRPC := os.Getenv("STORAGE_USE_GRPC"); withGRPC != "" { @@ -179,10 +181,12 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error endpoint := hostURL.String() // Append the emulator host as default endpoint for the user - opts = append([]option.ClientOption{option.WithoutAuthentication()}, opts...) - - opts = append(opts, internaloption.WithDefaultEndpoint(endpoint)) - opts = append(opts, internaloption.WithDefaultMTLSEndpoint(endpoint)) + opts = append([]option.ClientOption{ + option.WithoutAuthentication(), + internaloption.SkipDialSettingsValidation(), + internaloption.WithDefaultEndpoint(endpoint), + internaloption.WithDefaultMTLSEndpoint(endpoint), + }, opts...) } // htransport selects the correct endpoint among WithEndpoint (user override), WithDefaultEndpoint, and WithDefaultMTLSEndpoint. @@ -1713,6 +1717,8 @@ type Conditions struct { // GenerationNotMatch specifies that the object must not have the given // generation for the operation to occur. // If GenerationNotMatch is zero, it has no effect. + // This condition only works for object reads if the WithJSONReads client + // option is set. GenerationNotMatch int64 // DoesNotExist specifies that the object must not exist in the bucket for @@ -1731,6 +1737,8 @@ type Conditions struct { // MetagenerationNotMatch specifies that the object must not have the given // metageneration for the operation to occur. // If MetagenerationNotMatch is zero, it has no effect. + // This condition only works for object reads if the WithJSONReads client + // option is set. MetagenerationNotMatch int64 } diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index 8ee9af87d6..e950df717a 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -11119,6 +11119,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -25779,6 +25782,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, @@ -25788,6 +25794,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index 8b8c4e79db..c5c2307ae6 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.44.221" +const SDKVersion = "1.44.222" diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go index d756d8cc52..4fffd0427b 100644 --- a/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go @@ -45,7 +45,7 @@ func (u *UnmarshalTypedError) UnmarshalError( msg := resp.Header.Get(errorMessageHeader) body := resp.Body - if len(code) == 0 { + if len(code) == 0 || len(msg) == 0 { // If unable to get code from HTTP headers have to parse JSON message // to determine what kind of exception this will be. var buf bytes.Buffer @@ -57,7 +57,9 @@ func (u *UnmarshalTypedError) UnmarshalError( } body = ioutil.NopCloser(&buf) - code = jsonErr.Code + if len(code) == 0 { + code = jsonErr.Code + } msg = jsonErr.Message } diff --git a/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json b/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json index 10295639c5..b76fad076b 100644 --- a/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json +++ b/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "v2": "2.7.1" + "v2": "2.8.0" } diff --git a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md index 41a7ca94d4..456953d277 100644 --- a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md +++ b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [2.8.0](https://github.com/googleapis/gax-go/compare/v2.7.1...v2.8.0) (2023-03-15) + + +### Features + +* **v2:** add WithTimeout option ([#259](https://github.com/googleapis/gax-go/issues/259)) ([9a8da43](https://github.com/googleapis/gax-go/commit/9a8da43693002448b1e8758023699387481866d1)) + ## [2.7.1](https://github.com/googleapis/gax-go/compare/v2.7.0...v2.7.1) (2023-03-06) diff --git a/vendor/github.com/googleapis/gax-go/v2/call_option.go b/vendor/github.com/googleapis/gax-go/v2/call_option.go index e092005563..c52e03f643 100644 --- a/vendor/github.com/googleapis/gax-go/v2/call_option.go +++ b/vendor/github.com/googleapis/gax-go/v2/call_option.go @@ -218,6 +218,14 @@ func (p pathOpt) Resolve(s *CallSettings) { s.Path = p.p } +type timeoutOpt struct { + t time.Duration +} + +func (t timeoutOpt) Resolve(s *CallSettings) { + s.timeout = t.t +} + // WithPath applies a Path override to the HTTP-based APICall. // // This is for internal use only. @@ -230,6 +238,15 @@ func WithGRPCOptions(opt ...grpc.CallOption) CallOption { return grpcOpt(append([]grpc.CallOption(nil), opt...)) } +// WithTimeout is a convenience option for setting a context.WithTimeout on the +// singular context.Context used for **all** APICall attempts. Calculated from +// the start of the first APICall attempt. +// If the context.Context provided to Invoke already has a Deadline set, that +// will always be respected over the deadline calculated using this option. +func WithTimeout(t time.Duration) CallOption { + return &timeoutOpt{t: t} +} + // CallSettings allow fine-grained control over how calls are made. type CallSettings struct { // Retry returns a Retryer to be used to control retry logic of a method call. @@ -241,4 +258,8 @@ type CallSettings struct { // Path is an HTTP override for an APICall. Path string + + // Timeout defines the amount of time that Invoke has to complete. + // Unexported so it cannot be changed by the code in an APICall. + timeout time.Duration } diff --git a/vendor/github.com/googleapis/gax-go/v2/internal/version.go b/vendor/github.com/googleapis/gax-go/v2/internal/version.go index 936873ec4f..b4a8ba9824 100644 --- a/vendor/github.com/googleapis/gax-go/v2/internal/version.go +++ b/vendor/github.com/googleapis/gax-go/v2/internal/version.go @@ -30,4 +30,4 @@ package internal // Version is the current tagged release of the library. -const Version = "2.7.1" +const Version = "2.8.0" diff --git a/vendor/github.com/googleapis/gax-go/v2/invoke.go b/vendor/github.com/googleapis/gax-go/v2/invoke.go index 9fcc29959b..721d1af551 100644 --- a/vendor/github.com/googleapis/gax-go/v2/invoke.go +++ b/vendor/github.com/googleapis/gax-go/v2/invoke.go @@ -68,6 +68,16 @@ type sleeper func(ctx context.Context, d time.Duration) error // invoke implements Invoke, taking an additional sleeper argument for testing. func invoke(ctx context.Context, call APICall, settings CallSettings, sp sleeper) error { var retryer Retryer + + // Only use the value provided via WithTimeout if the context doesn't + // already have a deadline. This is important for backwards compatibility if + // the user already set a deadline on the context given to Invoke. + if _, ok := ctx.Deadline(); !ok && settings.timeout != 0 { + c, cc := context.WithTimeout(ctx, settings.timeout) + defer cc() + ctx = c + } + for { err := call(ctx, settings) if err == nil { diff --git a/vendor/google.golang.org/api/transport/cert/default_cert.go b/vendor/google.golang.org/api/internal/cert/default_cert.go similarity index 100% rename from vendor/google.golang.org/api/transport/cert/default_cert.go rename to vendor/google.golang.org/api/internal/cert/default_cert.go diff --git a/vendor/google.golang.org/api/transport/cert/enterprise_cert.go b/vendor/google.golang.org/api/internal/cert/enterprise_cert.go similarity index 100% rename from vendor/google.golang.org/api/transport/cert/enterprise_cert.go rename to vendor/google.golang.org/api/internal/cert/enterprise_cert.go diff --git a/vendor/google.golang.org/api/transport/cert/secureconnect_cert.go b/vendor/google.golang.org/api/internal/cert/secureconnect_cert.go similarity index 100% rename from vendor/google.golang.org/api/transport/cert/secureconnect_cert.go rename to vendor/google.golang.org/api/internal/cert/secureconnect_cert.go diff --git a/vendor/google.golang.org/api/internal/creds.go b/vendor/google.golang.org/api/internal/creds.go index 32d52413b3..63c6609220 100644 --- a/vendor/google.golang.org/api/internal/creds.go +++ b/vendor/google.golang.org/api/internal/creds.go @@ -6,10 +6,15 @@ package internal import ( "context" + "crypto/tls" "encoding/json" "errors" "fmt" "io/ioutil" + "net" + "net/http" + "os" + "time" "golang.org/x/oauth2" "google.golang.org/api/internal/impersonate" @@ -17,6 +22,8 @@ import ( "golang.org/x/oauth2/google" ) +const quotaProjectEnvVar = "GOOGLE_CLOUD_QUOTA_PROJECT" + // Creds returns credential information obtained from DialSettings, or if none, then // it returns default credential information. func Creds(ctx context.Context, ds *DialSettings) (*google.Credentials, error) { @@ -80,8 +87,25 @@ const ( // - Otherwise, executes standard OAuth 2.0 flow // More details: google.aip.dev/auth/4111 func credentialsFromJSON(ctx context.Context, data []byte, ds *DialSettings) (*google.Credentials, error) { + var params google.CredentialsParams + params.Scopes = ds.GetScopes() + + // Determine configurations for the OAuth2 transport, which is separate from the API transport. + // The OAuth2 transport and endpoint will be configured for mTLS if applicable. + clientCertSource, oauth2Endpoint, err := GetClientCertificateSourceAndEndpoint(oauth2DialSettings(ds)) + if err != nil { + return nil, err + } + params.TokenURL = oauth2Endpoint + if clientCertSource != nil { + tlsConfig := &tls.Config{ + GetClientCertificate: clientCertSource, + } + ctx = context.WithValue(ctx, oauth2.HTTPClient, customHTTPClient(tlsConfig)) + } + // By default, a standard OAuth 2.0 token source is created - cred, err := google.CredentialsFromJSON(ctx, data, ds.GetScopes()...) + cred, err := google.CredentialsFromJSONWithParams(ctx, data, params) if err != nil { return nil, err } @@ -131,14 +155,22 @@ func selfSignedJWTTokenSource(data []byte, ds *DialSettings) (oauth2.TokenSource } } -// QuotaProjectFromCreds returns the quota project from the JSON blob in the provided credentials. -// -// NOTE(cbro): consider promoting this to a field on google.Credentials. -func QuotaProjectFromCreds(cred *google.Credentials) string { +// GetQuotaProject retrieves quota project with precedence being: client option, +// environment variable, creds file. +func GetQuotaProject(creds *google.Credentials, clientOpt string) string { + if clientOpt != "" { + return clientOpt + } + if env := os.Getenv(quotaProjectEnvVar); env != "" { + return env + } + if creds == nil { + return "" + } var v struct { QuotaProject string `json:"quota_project_id"` } - if err := json.Unmarshal(cred.JSON, &v); err != nil { + if err := json.Unmarshal(creds.JSON, &v); err != nil { return "" } return v.QuotaProject @@ -157,3 +189,35 @@ func impersonateCredentials(ctx context.Context, creds *google.Credentials, ds * ProjectID: creds.ProjectID, }, nil } + +// oauth2DialSettings returns the settings to be used by the OAuth2 transport, which is separate from the API transport. +func oauth2DialSettings(ds *DialSettings) *DialSettings { + var ods DialSettings + ods.DefaultEndpoint = google.Endpoint.TokenURL + ods.DefaultMTLSEndpoint = google.MTLSTokenURL + ods.ClientCertSource = ds.ClientCertSource + return &ods +} + +// customHTTPClient constructs an HTTPClient using the provided tlsConfig, to support mTLS. +func customHTTPClient(tlsConfig *tls.Config) *http.Client { + trans := baseTransport() + trans.TLSClientConfig = tlsConfig + return &http.Client{Transport: trans} +} + +func baseTransport() *http.Transport { + return &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + DualStack: true, + }).DialContext, + MaxIdleConns: 100, + MaxIdleConnsPerHost: 100, + IdleConnTimeout: 90 * time.Second, + TLSHandshakeTimeout: 10 * time.Second, + ExpectContinueTimeout: 1 * time.Second, + } +} diff --git a/vendor/google.golang.org/api/transport/internal/dca/dca.go b/vendor/google.golang.org/api/internal/dca.go similarity index 92% rename from vendor/google.golang.org/api/transport/internal/dca/dca.go rename to vendor/google.golang.org/api/internal/dca.go index 78004f0475..204a3fd2f3 100644 --- a/vendor/google.golang.org/api/transport/internal/dca/dca.go +++ b/vendor/google.golang.org/api/internal/dca.go @@ -23,15 +23,16 @@ // // This package is not intended for use by end developers. Use the // google.golang.org/api/option package to configure API clients. -package dca + +// Package internal supports the options and transport packages. +package internal import ( "net/url" "os" "strings" - "google.golang.org/api/internal" - "google.golang.org/api/transport/cert" + "google.golang.org/api/internal/cert" ) const ( @@ -43,7 +44,7 @@ const ( // GetClientCertificateSourceAndEndpoint is a convenience function that invokes // getClientCertificateSource and getEndpoint sequentially and returns the client // cert source and endpoint as a tuple. -func GetClientCertificateSourceAndEndpoint(settings *internal.DialSettings) (cert.Source, string, error) { +func GetClientCertificateSourceAndEndpoint(settings *DialSettings) (cert.Source, string, error) { clientCertSource, err := getClientCertificateSource(settings) if err != nil { return nil, "", err @@ -65,7 +66,7 @@ func GetClientCertificateSourceAndEndpoint(settings *internal.DialSettings) (cer // Important Note: For now, the environment variable GOOGLE_API_USE_CLIENT_CERTIFICATE // must be set to "true" to allow certificate to be used (including user provided // certificates). For details, see AIP-4114. -func getClientCertificateSource(settings *internal.DialSettings) (cert.Source, error) { +func getClientCertificateSource(settings *DialSettings) (cert.Source, error) { if !isClientCertificateEnabled() { return nil, nil } else if settings.ClientCertSource != nil { @@ -94,7 +95,7 @@ func isClientCertificateEnabled() bool { // URL (ex. https://...), then the user-provided address will be merged into // the default endpoint. For example, WithEndpoint("myhost:8000") and // WithDefaultEndpoint("https://foo.com/bar/baz") will return "https://myhost:8080/bar/baz" -func getEndpoint(settings *internal.DialSettings, clientCertSource cert.Source) (string, error) { +func getEndpoint(settings *DialSettings, clientCertSource cert.Source) (string, error) { if settings.Endpoint == "" { mtlsMode := getMTLSMode() if mtlsMode == mTLSModeAlways || (clientCertSource != nil && mtlsMode == mTLSModeAuto) { diff --git a/vendor/google.golang.org/api/internal/version.go b/vendor/google.golang.org/api/internal/version.go index a5a6809ea1..be5fc4e3e4 100644 --- a/vendor/google.golang.org/api/internal/version.go +++ b/vendor/google.golang.org/api/internal/version.go @@ -5,4 +5,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.112.0" +const Version = "0.113.0" diff --git a/vendor/google.golang.org/api/transport/grpc/dial.go b/vendor/google.golang.org/api/transport/grpc/dial.go index efcc8e6c64..20c94fa640 100644 --- a/vendor/google.golang.org/api/transport/grpc/dial.go +++ b/vendor/google.golang.org/api/transport/grpc/dial.go @@ -21,7 +21,6 @@ import ( "golang.org/x/oauth2" "google.golang.org/api/internal" "google.golang.org/api/option" - "google.golang.org/api/transport/internal/dca" "google.golang.org/grpc" "google.golang.org/grpc/credentials" grpcgoogle "google.golang.org/grpc/credentials/google" @@ -123,7 +122,7 @@ func dial(ctx context.Context, insecure bool, o *internal.DialSettings) (*grpc.C if o.GRPCConn != nil { return o.GRPCConn, nil } - clientCertSource, endpoint, err := dca.GetClientCertificateSourceAndEndpoint(o) + clientCertSource, endpoint, err := internal.GetClientCertificateSourceAndEndpoint(o) if err != nil { return nil, err } @@ -155,14 +154,10 @@ func dial(ctx context.Context, insecure bool, o *internal.DialSettings) (*grpc.C return nil, err } - if o.QuotaProject == "" { - o.QuotaProject = internal.QuotaProjectFromCreds(creds) - } - grpcOpts = append(grpcOpts, grpc.WithPerRPCCredentials(grpcTokenSource{ TokenSource: oauth.TokenSource{creds.TokenSource}, - quotaProject: o.QuotaProject, + quotaProject: internal.GetQuotaProject(creds, o.QuotaProject), requestReason: o.RequestReason, }), ) diff --git a/vendor/google.golang.org/api/transport/http/dial.go b/vendor/google.golang.org/api/transport/http/dial.go index 47568a4061..403509d08f 100644 --- a/vendor/google.golang.org/api/transport/http/dial.go +++ b/vendor/google.golang.org/api/transport/http/dial.go @@ -20,10 +20,9 @@ import ( "golang.org/x/oauth2" "google.golang.org/api/googleapi/transport" "google.golang.org/api/internal" + "google.golang.org/api/internal/cert" "google.golang.org/api/option" - "google.golang.org/api/transport/cert" "google.golang.org/api/transport/http/internal/propagation" - "google.golang.org/api/transport/internal/dca" ) // NewClient returns an HTTP client for use communicating with a Google cloud @@ -34,7 +33,7 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*http.Client, if err != nil { return nil, "", err } - clientCertSource, endpoint, err := dca.GetClientCertificateSourceAndEndpoint(settings) + clientCertSource, endpoint, err := internal.GetClientCertificateSourceAndEndpoint(settings) if err != nil { return nil, "", err } @@ -66,7 +65,6 @@ func newTransport(ctx context.Context, base http.RoundTripper, settings *interna paramTransport := ¶meterTransport{ base: base, userAgent: settings.UserAgent, - quotaProject: settings.QuotaProject, requestReason: settings.RequestReason, } var trans http.RoundTripper = paramTransport @@ -75,6 +73,7 @@ func newTransport(ctx context.Context, base http.RoundTripper, settings *interna case settings.NoAuth: // Do nothing. case settings.APIKey != "": + paramTransport.quotaProject = internal.GetQuotaProject(nil, settings.QuotaProject) trans = &transport.APIKey{ Transport: trans, Key: settings.APIKey, @@ -84,10 +83,7 @@ func newTransport(ctx context.Context, base http.RoundTripper, settings *interna if err != nil { return nil, err } - if paramTransport.quotaProject == "" { - paramTransport.quotaProject = internal.QuotaProjectFromCreds(creds) - } - + paramTransport.quotaProject = internal.GetQuotaProject(creds, settings.QuotaProject) ts := creds.TokenSource if settings.ImpersonationConfig == nil && settings.TokenSource != nil { ts = settings.TokenSource diff --git a/vendor/google.golang.org/genproto/googleapis/iam/v1/alias.go b/vendor/google.golang.org/genproto/googleapis/iam/v1/alias.go deleted file mode 100644 index 9fb745926a..0000000000 --- a/vendor/google.golang.org/genproto/googleapis/iam/v1/alias.go +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright 2022 Google LLC -// -// 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 aliasgen. DO NOT EDIT. - -// Package iam aliases all exported identifiers in package -// "cloud.google.com/go/iam/apiv1/iampb". -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb. -// Please read https://github.com/googleapis/google-cloud-go/blob/main/migration.md -// for more details. -package iam - -import ( - src "cloud.google.com/go/iam/apiv1/iampb" - grpc "google.golang.org/grpc" -) - -// Deprecated: Please use consts in: cloud.google.com/go/iam/apiv1/iampb -const ( - AuditConfigDelta_ACTION_UNSPECIFIED = src.AuditConfigDelta_ACTION_UNSPECIFIED - AuditConfigDelta_ADD = src.AuditConfigDelta_ADD - AuditConfigDelta_REMOVE = src.AuditConfigDelta_REMOVE - AuditLogConfig_ADMIN_READ = src.AuditLogConfig_ADMIN_READ - AuditLogConfig_DATA_READ = src.AuditLogConfig_DATA_READ - AuditLogConfig_DATA_WRITE = src.AuditLogConfig_DATA_WRITE - AuditLogConfig_LOG_TYPE_UNSPECIFIED = src.AuditLogConfig_LOG_TYPE_UNSPECIFIED - BindingDelta_ACTION_UNSPECIFIED = src.BindingDelta_ACTION_UNSPECIFIED - BindingDelta_ADD = src.BindingDelta_ADD - BindingDelta_REMOVE = src.BindingDelta_REMOVE -) - -// Deprecated: Please use vars in: cloud.google.com/go/iam/apiv1/iampb -var ( - AuditConfigDelta_Action_name = src.AuditConfigDelta_Action_name - AuditConfigDelta_Action_value = src.AuditConfigDelta_Action_value - AuditLogConfig_LogType_name = src.AuditLogConfig_LogType_name - AuditLogConfig_LogType_value = src.AuditLogConfig_LogType_value - BindingDelta_Action_name = src.BindingDelta_Action_name - BindingDelta_Action_value = src.BindingDelta_Action_value - File_google_iam_v1_iam_policy_proto = src.File_google_iam_v1_iam_policy_proto - File_google_iam_v1_options_proto = src.File_google_iam_v1_options_proto - File_google_iam_v1_policy_proto = src.File_google_iam_v1_policy_proto -) - -// Specifies the audit configuration for a service. The configuration -// determines which permission types are logged, and what identities, if any, -// are exempted from logging. An AuditConfig must have one or more -// AuditLogConfigs. If there are AuditConfigs for both `allServices` and a -// specific service, the union of the two AuditConfigs is used for that -// service: the log_types specified in each AuditConfig are enabled, and the -// exempted_members in each AuditLogConfig are exempted. Example Policy with -// multiple AuditConfigs: { "audit_configs": [ { "service": "allServices", -// "audit_log_configs": [ { "log_type": "DATA_READ", "exempted_members": [ -// "user:jose@example.com" ] }, { "log_type": "DATA_WRITE" }, { "log_type": -// "ADMIN_READ" } ] }, { "service": "sampleservice.googleapis.com", -// "audit_log_configs": [ { "log_type": "DATA_READ" }, { "log_type": -// "DATA_WRITE", "exempted_members": [ "user:aliya@example.com" ] } ] } ] } For -// sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ -// logging. It also exempts jose@example.com from DATA_READ logging, and -// aliya@example.com from DATA_WRITE logging. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type AuditConfig = src.AuditConfig - -// One delta entry for AuditConfig. Each individual change (only one -// exempted_member in each entry) to a AuditConfig will be a separate entry. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type AuditConfigDelta = src.AuditConfigDelta - -// The type of action performed on an audit configuration in a policy. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type AuditConfigDelta_Action = src.AuditConfigDelta_Action - -// Provides the configuration for logging a type of permissions. Example: { -// "audit_log_configs": [ { "log_type": "DATA_READ", "exempted_members": [ -// "user:jose@example.com" ] }, { "log_type": "DATA_WRITE" } ] } This enables -// 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from -// DATA_READ logging. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type AuditLogConfig = src.AuditLogConfig - -// The list of valid permission types for which logging can be configured. -// Admin writes are always logged, and are not configurable. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type AuditLogConfig_LogType = src.AuditLogConfig_LogType - -// Associates `members`, or principals, with a `role`. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type Binding = src.Binding - -// One delta entry for Binding. Each individual change (only one member in -// each entry) to a binding will be a separate entry. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type BindingDelta = src.BindingDelta - -// The type of action performed on a Binding in a policy. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type BindingDelta_Action = src.BindingDelta_Action - -// Request message for `GetIamPolicy` method. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type GetIamPolicyRequest = src.GetIamPolicyRequest - -// Encapsulates settings provided to GetIamPolicy. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type GetPolicyOptions = src.GetPolicyOptions - -// IAMPolicyClient is the client API for IAMPolicy service. For semantics -// around ctx use and closing/ending streaming RPCs, please refer to -// https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type IAMPolicyClient = src.IAMPolicyClient - -// IAMPolicyServer is the server API for IAMPolicy service. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type IAMPolicyServer = src.IAMPolicyServer - -// An Identity and Access Management (IAM) policy, which specifies access -// controls for Google Cloud resources. A `Policy` is a collection of -// `bindings`. A `binding` binds one or more `members`, or principals, to a -// single `role`. Principals can be user accounts, service accounts, Google -// groups, and domains (such as G Suite). A `role` is a named list of -// permissions; each `role` can be an IAM predefined role or a user-created -// custom role. For some types of Google Cloud resources, a `binding` can also -// specify a `condition`, which is a logical expression that allows access to a -// resource only if the expression evaluates to `true`. A condition can add -// constraints based on attributes of the request, the resource, or both. To -// learn which resources support conditions in their IAM policies, see the [IAM -// documentation](https://cloud.google.com/iam/help/conditions/resource-policies). -// **JSON example:** { "bindings": [ { "role": -// "roles/resourcemanager.organizationAdmin", "members": [ -// "user:mike@example.com", "group:admins@example.com", "domain:google.com", -// "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, { "role": -// "roles/resourcemanager.organizationViewer", "members": [ -// "user:eve@example.com" ], "condition": { "title": "expirable access", -// "description": "Does not grant access after Sep 2020", "expression": -// "request.time < timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag": -// "BwWWja0YfJA=", "version": 3 } **YAML example:** bindings: - members: - -// user:mike@example.com - group:admins@example.com - domain:google.com - -// serviceAccount:my-project-id@appspot.gserviceaccount.com role: -// roles/resourcemanager.organizationAdmin - members: - user:eve@example.com -// role: roles/resourcemanager.organizationViewer condition: title: expirable -// access description: Does not grant access after Sep 2020 expression: -// request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= -// version: 3 For a description of IAM and its features, see the [IAM -// documentation](https://cloud.google.com/iam/docs/). -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type Policy = src.Policy - -// The difference delta between two policies. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type PolicyDelta = src.PolicyDelta - -// Request message for `SetIamPolicy` method. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type SetIamPolicyRequest = src.SetIamPolicyRequest - -// Request message for `TestIamPermissions` method. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type TestIamPermissionsRequest = src.TestIamPermissionsRequest - -// Response message for `TestIamPermissions` method. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type TestIamPermissionsResponse = src.TestIamPermissionsResponse - -// UnimplementedIAMPolicyServer can be embedded to have forward compatible -// implementations. -// -// Deprecated: Please use types in: cloud.google.com/go/iam/apiv1/iampb -type UnimplementedIAMPolicyServer = src.UnimplementedIAMPolicyServer - -// Deprecated: Please use funcs in: cloud.google.com/go/iam/apiv1/iampb -func NewIAMPolicyClient(cc grpc.ClientConnInterface) IAMPolicyClient { - return src.NewIAMPolicyClient(cc) -} - -// Deprecated: Please use funcs in: cloud.google.com/go/iam/apiv1/iampb -func RegisterIAMPolicyServer(s *grpc.Server, srv IAMPolicyServer) { - src.RegisterIAMPolicyServer(s, srv) -} diff --git a/vendor/modules.txt b/vendor/modules.txt index b0fd4d4a55..223525d04f 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -10,11 +10,11 @@ cloud.google.com/go/compute/internal # cloud.google.com/go/compute/metadata v0.2.3 ## explicit; go 1.19 cloud.google.com/go/compute/metadata -# cloud.google.com/go/iam v0.12.0 +# cloud.google.com/go/iam v0.13.0 ## explicit; go 1.19 cloud.google.com/go/iam cloud.google.com/go/iam/apiv1/iampb -# cloud.google.com/go/storage v1.29.0 +# cloud.google.com/go/storage v1.30.0 ## explicit; go 1.19 cloud.google.com/go/storage cloud.google.com/go/storage/internal @@ -81,7 +81,7 @@ github.com/VividCortex/ewma # github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 ## explicit; go 1.15 github.com/alecthomas/units -# github.com/aws/aws-sdk-go v1.44.221 +# github.com/aws/aws-sdk-go v1.44.222 ## explicit; go 1.11 github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/awserr @@ -317,7 +317,7 @@ github.com/google/uuid ## explicit; go 1.19 github.com/googleapis/enterprise-certificate-proxy/client github.com/googleapis/enterprise-certificate-proxy/client/util -# github.com/googleapis/gax-go/v2 v2.7.1 +# github.com/googleapis/gax-go/v2 v2.8.0 ## explicit; go 1.19 github.com/googleapis/gax-go/v2 github.com/googleapis/gax-go/v2/apierror @@ -528,7 +528,7 @@ go.uber.org/atomic ## explicit; go 1.18 go.uber.org/goleak go.uber.org/goleak/internal/stack -# golang.org/x/exp v0.0.0-20230314191032-db074128a8ec +# golang.org/x/exp v0.0.0-20230315142452-642cacee5cc0 ## explicit; go 1.18 golang.org/x/exp/constraints golang.org/x/exp/slices @@ -575,12 +575,13 @@ golang.org/x/time/rate ## explicit; go 1.17 golang.org/x/xerrors golang.org/x/xerrors/internal -# google.golang.org/api v0.112.0 +# google.golang.org/api v0.113.0 ## explicit; go 1.19 google.golang.org/api/googleapi google.golang.org/api/googleapi/transport google.golang.org/api/iamcredentials/v1 google.golang.org/api/internal +google.golang.org/api/internal/cert google.golang.org/api/internal/gensupport google.golang.org/api/internal/impersonate google.golang.org/api/internal/third_party/uritemplates @@ -589,11 +590,9 @@ google.golang.org/api/option google.golang.org/api/option/internaloption google.golang.org/api/storage/v1 google.golang.org/api/transport -google.golang.org/api/transport/cert google.golang.org/api/transport/grpc google.golang.org/api/transport/http google.golang.org/api/transport/http/internal/propagation -google.golang.org/api/transport/internal/dca # google.golang.org/appengine v1.6.7 ## explicit; go 1.11 google.golang.org/appengine @@ -612,7 +611,6 @@ google.golang.org/appengine/urlfetch ## explicit; go 1.19 google.golang.org/genproto/googleapis/api google.golang.org/genproto/googleapis/api/annotations -google.golang.org/genproto/googleapis/iam/v1 google.golang.org/genproto/googleapis/rpc/code google.golang.org/genproto/googleapis/rpc/errdetails google.golang.org/genproto/googleapis/rpc/status