From cee76b115fb4ed766c442748e27c9b0af9456db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Sun, 15 Oct 2023 21:43:10 +0200 Subject: [PATCH] feat: support for reverse proxy trusted header authentication (resolve #534) --- README.md | 14 + config.default.yml | 9 +- config/config.go | 46 +- coverage/coverage.out | 2906 +++++++++++++++--------------- middlewares/authenticate.go | 21 +- middlewares/authenticate_test.go | 78 + routes/api/badge_test.go | 3 + 7 files changed, 1624 insertions(+), 1453 deletions(-) diff --git a/README.md b/README.md index b4fb4163..7e0669b8 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,9 @@ You can specify configuration options either via a config file (default: `config | `security.allow_signup` /
`WAKAPI_ALLOW_SIGNUP` | `true` | Whether to enable user registration | | `security.disable_frontpage` /
`WAKAPI_DISABLE_FRONTPAGE` | `false` | Whether to disable landing page (useful for personal instances) | | `security.expose_metrics` /
`WAKAPI_EXPOSE_METRICS` | `false` | Whether to expose Prometheus metrics under `/api/metrics` | +| `security.trusted_header_auth` /
`WAKAPI_TRUSTED_HEADER_AUTH` | `false` | Whether to enable trusted header authentication for reverse proxies (see [#534](https://github.com/muety/wakapi/issues/534)). **Use with caution!** | +| `security.trusted_header_auth_key` /
`WAKAPI_TRUSTED_HEADER_AUTH_KEY` | `Remote-User` | Header field for trusted header authentication. **Caution:** proxy must be configured to strip this header from client requests! | +| `security.trust_reverse_proxy_ips` /
`WAKAPI_TRUST_REVERSE_PROXY_IPS` | - | Comma-separated list IPv4 or IPv6 addresses of reverse proxies to trust to handle authentication. | | `db.host` /
`WAKAPI_DB_HOST` | - | Database host | | `db.port` /
`WAKAPI_DB_PORT` | - | Database port | | `db.socket` /
`WAKAPI_DB_SOCKET` | - | Database UNIX socket (alternative to `host`) (for MySQL only) | @@ -200,6 +203,17 @@ Wakapi uses [GORM](https://gorm.io) as an ORM. As a consequence, a set of differ * [Postgres](https://hub.docker.com/_/postgres) (_open-source as well_) * [CockroachDB](https://www.cockroachlabs.com/docs/stable/install-cockroachdb-linux.html) (_cloud-native, distributed, Postgres-compatible API_) +## 🔐 Authentication +Wakapi supports different types of user authentication. + +* **Cookie:** This method is used in the browser. Users authenticate by sending along an encrypted, secure, HTTP-only cookie (`wakapi_auth`) that was set in the server's response upon login. +* **API key:** + * **Via header:** This method is inspired by [WakaTime's auth. mechanism](https://wakatime.com/developers/#authentication) and is the common way to authenticate against API endpoints. Users set the `Authorization` header to `Basic `, where the latter part corresponds to your base64-hashed API key. + * **Vis query param:** Alternatively, users can also pass their plain API key as a query parameter (e.g. `?api_key=86648d74-19c5-452b-ba01-fb3ec70d4c2f`) in the URL with every request. +* **Trusted header:** This mechanism allows to delegate authentication to a **reverse proxy** (e.g. for SSO), that Wakapi will then trust blindly. See [#534](https://github.com/muety/wakapi/issues/534) for details. + * Must be enabled via `trusted_header_auth` and configuring `trust_reverse_proxy_ip` in the config + * Warning: This type of authentication is quite prone to misconfiguration. Make sure that your reverse proxy properly strips relevant headers from client requests. + ## 🔧 API endpoints See our [Swagger API Documentation](https://wakapi.dev/swagger-ui). diff --git a/config.default.yml b/config.default.yml index d215175d..52bbcb26 100644 --- a/config.default.yml +++ b/config.default.yml @@ -54,13 +54,16 @@ db: automigrate_fail_silently: false # whether to ignore schema auto-migration failures when starting up security: - password_salt: # change this - insecure_cookies: true # should be set to 'false', except when not running with HTTPS (e.g. on localhost) + password_salt: # change this + insecure_cookies: true # should be set to 'false', except when not running with HTTPS (e.g. on localhost) cookie_max_age: 172800 allow_signup: true disable_frontpage: false expose_metrics: false - enable_proxy: false # only intended for production instance at wakapi.dev + enable_proxy: false # only intended for production instance at wakapi.dev + trusted_header_auth: false # whether to enable trusted header auth for reverse proxies, use with caution!! (https://github.com/muety/wakapi/issues/534) + trusted_header_auth_key: Remote-User # header field for trusted header auth (warning: your proxy must correctly strip this header from client requests!!) + trust_reverse_proxy_ips: # single ip address of the reverse proxy which you trust to pass headers for authentication sentry: dsn: # leave blank to disable sentry integration diff --git a/config/config.go b/config/config.go index ca3a55e0..d08a910a 100644 --- a/config/config.go +++ b/config/config.go @@ -3,6 +3,7 @@ package config import ( "encoding/json" "fmt" + "net" "net/http" "os" "regexp" @@ -93,11 +94,15 @@ type securityConfig struct { EnableProxy bool `yaml:"enable_proxy" default:"false" env:"WAKAPI_ENABLE_PROXY"` // only intended for production instance at wakapi.dev DisableFrontpage bool `yaml:"disable_frontpage" default:"false" env:"WAKAPI_DISABLE_FRONTPAGE"` // this is actually a pepper (https://en.wikipedia.org/wiki/Pepper_(cryptography)) - PasswordSalt string `yaml:"password_salt" default:"" env:"WAKAPI_PASSWORD_SALT"` - InsecureCookies bool `yaml:"insecure_cookies" default:"false" env:"WAKAPI_INSECURE_COOKIES"` - CookieMaxAgeSec int `yaml:"cookie_max_age" default:"172800" env:"WAKAPI_COOKIE_MAX_AGE"` - SecureCookie *securecookie.SecureCookie `yaml:"-"` - SessionKey []byte `yaml:"-"` + PasswordSalt string `yaml:"password_salt" default:"" env:"WAKAPI_PASSWORD_SALT"` + InsecureCookies bool `yaml:"insecure_cookies" default:"false" env:"WAKAPI_INSECURE_COOKIES"` + CookieMaxAgeSec int `yaml:"cookie_max_age" default:"172800" env:"WAKAPI_COOKIE_MAX_AGE"` + TrustedHeaderAuth bool `yaml:"trusted_header_auth" default:"false" env:"WAKAPI_TRUSTED_HEADER_AUTH"` + TrustedHeaderAuthKey string `yaml:"trusted_header_auth_key" default:"Remote-User" env:"WAKAPI_TRUSTED_HEADER_AUTH_KEY"` + TrustReverseProxyIps string `yaml:"trust_reverse_proxy_ips" default:"" env:"WAKAPI_TRUST_REVERSE_PROXY_IPS"` // comma-separated list of trusted reverse proxy ips + SecureCookie *securecookie.SecureCookie `yaml:"-"` + SessionKey []byte `yaml:"-"` + trustReverseProxyIpParsed []net.IP } type dbConfig struct { @@ -310,6 +315,21 @@ func (c *appConfig) HeartbeatsMaxAge() time.Duration { return d } +func (c *securityConfig) ParseTrustReverseProxyIPs() { + c.trustReverseProxyIpParsed = make([]net.IP, 0) + for _, ip := range strings.Split(c.TrustReverseProxyIps, ",") { + if parsedIp := net.ParseIP(strings.TrimSpace(ip)); parsedIp == nil { + logbuch.Warn("failed to parse reverse proxy ip") + } else { + c.trustReverseProxyIpParsed = append(c.trustReverseProxyIpParsed, parsedIp) + } + } +} + +func (c *securityConfig) TrustReverseProxyIPs() []net.IP { + return c.trustReverseProxyIpParsed +} + func (c *dbConfig) IsSQLite() bool { return c.Dialect == "sqlite3" } @@ -409,6 +429,7 @@ func Load(configFlag string, version string) *Config { config.Security.SecureCookie = securecookie.New(hashKey, blockKey) config.Security.SessionKey = sessionKey + config.Security.ParseTrustReverseProxyIPs() config.Server.BasePath = strings.TrimSuffix(config.Server.BasePath, "/") @@ -450,6 +471,9 @@ func Load(configFlag string, version string) *Config { if _, err := time.ParseDuration(config.App.HeartbeatMaxAge); err != nil { logbuch.Fatal("invalid duration set for heartbeat_max_age") } + if config.Security.TrustedHeaderAuth && len(config.Security.trustReverseProxyIpParsed) == 0 { + config.Security.TrustedHeaderAuth = false + } cronParser := cron.NewParser(cron.Second | cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow | cron.Descriptor) @@ -479,3 +503,15 @@ func Load(configFlag string, version string) *Config { Set(config) return Get() } + +func Empty() *Config { + return &Config{ + App: appConfig{}, + Security: securityConfig{}, + Db: dbConfig{}, + Server: serverConfig{}, + Subscriptions: subscriptionsConfig{}, + Sentry: sentryConfig{}, + Mail: mailConfig{}, + } +} diff --git a/coverage/coverage.out b/coverage/coverage.out index b091dcee..c6460d3e 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,100 +1,196 @@ mode: set -github.com/muety/wakapi/config/config.go:187.64,189.2 1 0 -github.com/muety/wakapi/config/config.go:191.59,193.2 1 0 -github.com/muety/wakapi/config/config.go:195.82,205.2 1 0 -github.com/muety/wakapi/config/config.go:207.31,209.2 1 0 -github.com/muety/wakapi/config/config.go:211.32,213.2 1 0 -github.com/muety/wakapi/config/config.go:215.60,217.2 1 0 -github.com/muety/wakapi/config/config.go:219.59,221.2 1 0 -github.com/muety/wakapi/config/config.go:223.57,225.2 1 0 -github.com/muety/wakapi/config/config.go:227.53,229.2 1 0 -github.com/muety/wakapi/config/config.go:231.53,232.46 1 0 -github.com/muety/wakapi/config/config.go:232.46,236.17 3 0 -github.com/muety/wakapi/config/config.go:236.17,238.4 1 0 -github.com/muety/wakapi/config/config.go:240.3,241.17 2 0 +github.com/muety/wakapi/helpers/date.go:17.73,18.58 1 0 +github.com/muety/wakapi/helpers/date.go:18.58,20.3 1 0 +github.com/muety/wakapi/helpers/date.go:21.2,21.87 1 0 +github.com/muety/wakapi/helpers/date.go:21.87,23.3 1 0 +github.com/muety/wakapi/helpers/date.go:24.2,24.64 1 0 +github.com/muety/wakapi/helpers/date.go:27.40,29.2 1 0 +github.com/muety/wakapi/helpers/date.go:31.44,33.2 1 0 +github.com/muety/wakapi/helpers/date.go:35.49,37.2 1 0 +github.com/muety/wakapi/helpers/date.go:39.45,41.2 1 0 +github.com/muety/wakapi/helpers/date.go:43.50,49.2 5 0 +github.com/muety/wakapi/helpers/http.go:11.94,13.16 2 0 +github.com/muety/wakapi/helpers/http.go:13.16,15.3 1 0 +github.com/muety/wakapi/helpers/http.go:17.2,17.107 1 0 +github.com/muety/wakapi/helpers/http.go:17.107,19.3 1 0 +github.com/muety/wakapi/helpers/http.go:21.2,21.22 1 0 +github.com/muety/wakapi/helpers/http.go:24.90,27.58 3 0 +github.com/muety/wakapi/helpers/http.go:27.58,29.3 1 0 +github.com/muety/wakapi/helpers/interval.go:10.66,11.40 1 0 +github.com/muety/wakapi/helpers/interval.go:11.40,12.27 1 0 +github.com/muety/wakapi/helpers/interval.go:12.27,14.4 1 0 +github.com/muety/wakapi/helpers/interval.go:16.2,16.48 1 0 +github.com/muety/wakapi/helpers/interval.go:19.61,22.2 2 0 +github.com/muety/wakapi/helpers/interval.go:24.88,27.2 2 0 +github.com/muety/wakapi/helpers/interval.go:29.95,31.16 2 0 +github.com/muety/wakapi/helpers/interval.go:31.16,33.3 1 0 +github.com/muety/wakapi/helpers/interval.go:34.2,34.38 1 0 +github.com/muety/wakapi/helpers/interval.go:37.105,41.18 3 1 +github.com/muety/wakapi/helpers/interval.go:42.28,43.32 1 0 +github.com/muety/wakapi/helpers/interval.go:44.32,46.30 2 0 +github.com/muety/wakapi/helpers/interval.go:47.30,48.34 1 1 +github.com/muety/wakapi/helpers/interval.go:49.31,50.35 1 0 +github.com/muety/wakapi/helpers/interval.go:51.31,53.33 2 0 +github.com/muety/wakapi/helpers/interval.go:54.32,55.36 1 0 +github.com/muety/wakapi/helpers/interval.go:56.32,58.34 2 0 +github.com/muety/wakapi/helpers/interval.go:59.31,60.35 1 0 +github.com/muety/wakapi/helpers/interval.go:61.32,62.31 1 1 +github.com/muety/wakapi/helpers/interval.go:63.41,65.48 2 0 +github.com/muety/wakapi/helpers/interval.go:66.33,67.32 1 1 +github.com/muety/wakapi/helpers/interval.go:68.33,69.32 1 1 +github.com/muety/wakapi/helpers/interval.go:70.34,71.31 1 1 +github.com/muety/wakapi/helpers/interval.go:72.35,73.32 1 1 +github.com/muety/wakapi/helpers/interval.go:74.26,75.21 1 0 +github.com/muety/wakapi/helpers/interval.go:76.10,77.39 1 0 +github.com/muety/wakapi/helpers/interval.go:80.2,80.22 1 1 +github.com/muety/wakapi/helpers/interval.go:84.65,85.15 1 1 +github.com/muety/wakapi/helpers/interval.go:85.15,87.3 1 1 +github.com/muety/wakapi/helpers/interval.go:88.2,88.14 1 1 +github.com/muety/wakapi/helpers/interval.go:88.14,90.3 1 1 +github.com/muety/wakapi/helpers/interval.go:91.2,91.14 1 1 +github.com/muety/wakapi/helpers/interval.go:91.14,93.3 1 1 +github.com/muety/wakapi/helpers/interval.go:94.2,94.15 1 1 +github.com/muety/wakapi/helpers/interval.go:94.15,96.3 1 1 +github.com/muety/wakapi/helpers/interval.go:97.2,97.15 1 1 +github.com/muety/wakapi/helpers/interval.go:97.15,99.3 1 1 +github.com/muety/wakapi/helpers/interval.go:100.2,100.16 1 1 +github.com/muety/wakapi/helpers/interval.go:100.16,102.3 1 1 +github.com/muety/wakapi/helpers/interval.go:103.2,103.16 1 1 +github.com/muety/wakapi/helpers/interval.go:103.16,105.3 1 1 +github.com/muety/wakapi/helpers/interval.go:106.2,106.41 1 1 +github.com/muety/wakapi/helpers/summary.go:10.73,17.56 5 0 +github.com/muety/wakapi/helpers/summary.go:17.56,19.3 1 0 +github.com/muety/wakapi/helpers/summary.go:19.8,19.54 1 0 +github.com/muety/wakapi/helpers/summary.go:19.54,21.3 1 0 +github.com/muety/wakapi/helpers/summary.go:21.8,23.17 2 0 +github.com/muety/wakapi/helpers/summary.go:23.17,25.4 1 0 +github.com/muety/wakapi/helpers/summary.go:27.3,28.17 2 0 +github.com/muety/wakapi/helpers/summary.go:28.17,30.4 1 0 +github.com/muety/wakapi/helpers/summary.go:33.2,43.8 3 0 +github.com/muety/wakapi/helpers/summary.go:46.59,48.48 2 0 +github.com/muety/wakapi/helpers/summary.go:48.48,50.3 1 0 +github.com/muety/wakapi/helpers/summary.go:51.2,51.49 1 0 +github.com/muety/wakapi/helpers/summary.go:51.49,53.3 1 0 +github.com/muety/wakapi/helpers/summary.go:54.2,54.47 1 0 +github.com/muety/wakapi/helpers/summary.go:54.47,56.3 1 0 +github.com/muety/wakapi/helpers/summary.go:57.2,57.48 1 0 +github.com/muety/wakapi/helpers/summary.go:57.48,59.3 1 0 +github.com/muety/wakapi/helpers/summary.go:60.2,60.57 1 0 +github.com/muety/wakapi/helpers/summary.go:60.57,62.3 1 0 +github.com/muety/wakapi/helpers/summary.go:63.2,63.46 1 0 +github.com/muety/wakapi/helpers/summary.go:63.46,65.3 1 0 +github.com/muety/wakapi/helpers/summary.go:66.2,66.47 1 0 +github.com/muety/wakapi/helpers/summary.go:66.47,68.3 1 0 +github.com/muety/wakapi/helpers/summary.go:69.2,69.47 1 0 +github.com/muety/wakapi/helpers/summary.go:69.47,71.3 1 0 +github.com/muety/wakapi/helpers/summary.go:72.2,72.16 1 0 +github.com/muety/wakapi/helpers/summary.go:75.48,79.51 2 0 +github.com/muety/wakapi/helpers/summary.go:79.51,81.3 1 0 +github.com/muety/wakapi/helpers/summary.go:82.2,82.12 1 0 +github.com/muety/wakapi/config/config.go:192.64,194.2 1 0 +github.com/muety/wakapi/config/config.go:196.59,198.2 1 0 +github.com/muety/wakapi/config/config.go:200.82,210.2 1 0 +github.com/muety/wakapi/config/config.go:212.31,214.2 1 0 +github.com/muety/wakapi/config/config.go:216.32,218.2 1 0 +github.com/muety/wakapi/config/config.go:220.60,222.2 1 0 +github.com/muety/wakapi/config/config.go:224.59,226.2 1 0 +github.com/muety/wakapi/config/config.go:228.57,230.2 1 0 +github.com/muety/wakapi/config/config.go:232.53,234.2 1 0 +github.com/muety/wakapi/config/config.go:236.53,237.46 1 0 +github.com/muety/wakapi/config/config.go:237.46,241.17 3 0 github.com/muety/wakapi/config/config.go:241.17,243.4 1 0 -github.com/muety/wakapi/config/config.go:245.3,245.44 1 0 -github.com/muety/wakapi/config/config.go:248.2,248.51 1 0 -github.com/muety/wakapi/config/config.go:251.50,252.47 1 0 -github.com/muety/wakapi/config/config.go:252.47,259.17 5 0 -github.com/muety/wakapi/config/config.go:259.17,261.4 1 0 -github.com/muety/wakapi/config/config.go:263.3,264.17 2 0 +github.com/muety/wakapi/config/config.go:245.3,246.17 2 0 +github.com/muety/wakapi/config/config.go:246.17,248.4 1 0 +github.com/muety/wakapi/config/config.go:250.3,250.44 1 0 +github.com/muety/wakapi/config/config.go:253.2,253.51 1 0 +github.com/muety/wakapi/config/config.go:256.50,257.47 1 0 +github.com/muety/wakapi/config/config.go:257.47,264.17 5 0 github.com/muety/wakapi/config/config.go:264.17,266.4 1 0 -github.com/muety/wakapi/config/config.go:268.3,268.54 1 0 -github.com/muety/wakapi/config/config.go:271.2,271.52 1 0 -github.com/muety/wakapi/config/config.go:274.65,279.56 3 0 -github.com/muety/wakapi/config/config.go:279.56,281.33 1 0 -github.com/muety/wakapi/config/config.go:281.33,284.18 3 0 -github.com/muety/wakapi/config/config.go:284.18,286.5 1 0 -github.com/muety/wakapi/config/config.go:288.4,289.18 2 0 +github.com/muety/wakapi/config/config.go:268.3,269.17 2 0 +github.com/muety/wakapi/config/config.go:269.17,271.4 1 0 +github.com/muety/wakapi/config/config.go:273.3,273.54 1 0 +github.com/muety/wakapi/config/config.go:276.2,276.52 1 0 +github.com/muety/wakapi/config/config.go:279.65,284.56 3 0 +github.com/muety/wakapi/config/config.go:284.56,286.33 1 0 +github.com/muety/wakapi/config/config.go:286.33,289.18 3 0 github.com/muety/wakapi/config/config.go:289.18,291.5 1 0 -github.com/muety/wakapi/config/config.go:293.4,293.45 1 0 -github.com/muety/wakapi/config/config.go:295.8,296.33 1 0 -github.com/muety/wakapi/config/config.go:296.33,298.4 1 0 -github.com/muety/wakapi/config/config.go:301.2,301.76 1 0 -github.com/muety/wakapi/config/config.go:301.76,303.3 1 0 -github.com/muety/wakapi/config/config.go:305.2,305.14 1 0 -github.com/muety/wakapi/config/config.go:308.54,311.2 2 0 -github.com/muety/wakapi/config/config.go:313.36,315.2 1 0 -github.com/muety/wakapi/config/config.go:317.35,319.2 1 0 -github.com/muety/wakapi/config/config.go:321.38,323.2 1 0 -github.com/muety/wakapi/config/config.go:325.46,327.2 1 0 -github.com/muety/wakapi/config/config.go:329.43,331.2 1 0 -github.com/muety/wakapi/config/config.go:333.29,335.2 1 1 -github.com/muety/wakapi/config/config.go:337.48,348.16 2 0 -github.com/muety/wakapi/config/config.go:348.16,350.3 1 0 -github.com/muety/wakapi/config/config.go:352.2,353.53 2 0 -github.com/muety/wakapi/config/config.go:353.53,355.3 1 0 -github.com/muety/wakapi/config/config.go:357.2,357.15 1 0 -github.com/muety/wakapi/config/config.go:360.45,361.27 1 0 -github.com/muety/wakapi/config/config.go:361.27,363.3 1 0 -github.com/muety/wakapi/config/config.go:364.2,364.24 1 0 -github.com/muety/wakapi/config/config.go:364.24,366.3 1 0 -github.com/muety/wakapi/config/config.go:367.2,367.25 1 0 -github.com/muety/wakapi/config/config.go:367.25,369.3 1 0 -github.com/muety/wakapi/config/config.go:370.2,370.15 1 0 -github.com/muety/wakapi/config/config.go:373.26,375.2 1 0 -github.com/muety/wakapi/config/config.go:377.20,379.2 1 0 -github.com/muety/wakapi/config/config.go:381.54,384.82 2 0 -github.com/muety/wakapi/config/config.go:384.82,386.3 1 0 -github.com/muety/wakapi/config/config.go:388.2,392.21 4 0 -github.com/muety/wakapi/config/config.go:392.21,394.3 1 0 -github.com/muety/wakapi/config/config.go:396.2,404.16 7 0 -github.com/muety/wakapi/config/config.go:404.16,408.3 3 0 -github.com/muety/wakapi/config/config.go:410.2,415.47 4 0 -github.com/muety/wakapi/config/config.go:415.47,416.14 1 0 -github.com/muety/wakapi/config/config.go:416.14,418.4 1 0 -github.com/muety/wakapi/config/config.go:421.2,421.29 1 0 -github.com/muety/wakapi/config/config.go:421.29,424.3 2 0 -github.com/muety/wakapi/config/config.go:426.2,426.41 1 0 -github.com/muety/wakapi/config/config.go:426.41,428.3 1 0 -github.com/muety/wakapi/config/config.go:428.8,430.35 2 0 -github.com/muety/wakapi/config/config.go:430.35,432.4 1 0 -github.com/muety/wakapi/config/config.go:433.3,433.37 1 0 -github.com/muety/wakapi/config/config.go:437.2,437.108 1 0 -github.com/muety/wakapi/config/config.go:437.108,439.3 1 0 -github.com/muety/wakapi/config/config.go:440.2,440.28 1 0 -github.com/muety/wakapi/config/config.go:440.28,442.3 1 0 -github.com/muety/wakapi/config/config.go:443.2,443.51 1 0 -github.com/muety/wakapi/config/config.go:443.51,446.3 2 0 -github.com/muety/wakapi/config/config.go:447.2,447.100 1 0 -github.com/muety/wakapi/config/config.go:447.100,449.3 1 0 -github.com/muety/wakapi/config/config.go:450.2,450.74 1 0 -github.com/muety/wakapi/config/config.go:450.74,452.3 1 0 -github.com/muety/wakapi/config/config.go:454.2,456.78 2 0 -github.com/muety/wakapi/config/config.go:456.78,458.3 1 0 -github.com/muety/wakapi/config/config.go:459.2,459.81 1 0 -github.com/muety/wakapi/config/config.go:459.81,461.3 1 0 -github.com/muety/wakapi/config/config.go:462.2,462.66 1 0 -github.com/muety/wakapi/config/config.go:462.66,463.48 1 0 -github.com/muety/wakapi/config/config.go:463.48,465.4 1 0 -github.com/muety/wakapi/config/config.go:469.2,469.55 1 0 -github.com/muety/wakapi/config/config.go:469.55,471.3 1 0 -github.com/muety/wakapi/config/config.go:472.2,472.56 1 0 -github.com/muety/wakapi/config/config.go:472.56,474.3 1 0 -github.com/muety/wakapi/config/config.go:475.2,475.65 1 0 -github.com/muety/wakapi/config/config.go:475.65,477.3 1 0 -github.com/muety/wakapi/config/config.go:479.2,480.14 2 0 +github.com/muety/wakapi/config/config.go:293.4,294.18 2 0 +github.com/muety/wakapi/config/config.go:294.18,296.5 1 0 +github.com/muety/wakapi/config/config.go:298.4,298.45 1 0 +github.com/muety/wakapi/config/config.go:300.8,301.33 1 0 +github.com/muety/wakapi/config/config.go:301.33,303.4 1 0 +github.com/muety/wakapi/config/config.go:306.2,306.76 1 0 +github.com/muety/wakapi/config/config.go:306.76,308.3 1 0 +github.com/muety/wakapi/config/config.go:310.2,310.14 1 0 +github.com/muety/wakapi/config/config.go:313.54,316.2 2 0 +github.com/muety/wakapi/config/config.go:318.54,320.64 2 0 +github.com/muety/wakapi/config/config.go:320.64,321.70 1 0 +github.com/muety/wakapi/config/config.go:321.70,323.4 1 0 +github.com/muety/wakapi/config/config.go:323.9,325.4 1 0 +github.com/muety/wakapi/config/config.go:329.58,331.2 1 0 +github.com/muety/wakapi/config/config.go:333.36,335.2 1 0 +github.com/muety/wakapi/config/config.go:337.35,339.2 1 0 +github.com/muety/wakapi/config/config.go:341.38,343.2 1 0 +github.com/muety/wakapi/config/config.go:345.46,347.2 1 0 +github.com/muety/wakapi/config/config.go:349.43,351.2 1 0 +github.com/muety/wakapi/config/config.go:353.29,355.2 1 1 +github.com/muety/wakapi/config/config.go:357.48,368.16 2 0 +github.com/muety/wakapi/config/config.go:368.16,370.3 1 0 +github.com/muety/wakapi/config/config.go:372.2,373.53 2 0 +github.com/muety/wakapi/config/config.go:373.53,375.3 1 0 +github.com/muety/wakapi/config/config.go:377.2,377.15 1 0 +github.com/muety/wakapi/config/config.go:380.45,381.27 1 0 +github.com/muety/wakapi/config/config.go:381.27,383.3 1 0 +github.com/muety/wakapi/config/config.go:384.2,384.24 1 0 +github.com/muety/wakapi/config/config.go:384.24,386.3 1 0 +github.com/muety/wakapi/config/config.go:387.2,387.25 1 0 +github.com/muety/wakapi/config/config.go:387.25,389.3 1 0 +github.com/muety/wakapi/config/config.go:390.2,390.15 1 0 +github.com/muety/wakapi/config/config.go:393.26,395.2 1 0 +github.com/muety/wakapi/config/config.go:397.20,399.2 1 0 +github.com/muety/wakapi/config/config.go:401.54,404.82 2 0 +github.com/muety/wakapi/config/config.go:404.82,406.3 1 0 +github.com/muety/wakapi/config/config.go:408.2,412.21 4 0 +github.com/muety/wakapi/config/config.go:412.21,414.3 1 0 +github.com/muety/wakapi/config/config.go:416.2,424.16 7 0 +github.com/muety/wakapi/config/config.go:424.16,428.3 3 0 +github.com/muety/wakapi/config/config.go:430.2,436.47 5 0 +github.com/muety/wakapi/config/config.go:436.47,437.14 1 0 +github.com/muety/wakapi/config/config.go:437.14,439.4 1 0 +github.com/muety/wakapi/config/config.go:442.2,442.29 1 0 +github.com/muety/wakapi/config/config.go:442.29,445.3 2 0 +github.com/muety/wakapi/config/config.go:447.2,447.41 1 0 +github.com/muety/wakapi/config/config.go:447.41,449.3 1 0 +github.com/muety/wakapi/config/config.go:449.8,451.35 2 0 +github.com/muety/wakapi/config/config.go:451.35,453.4 1 0 +github.com/muety/wakapi/config/config.go:454.3,454.37 1 0 +github.com/muety/wakapi/config/config.go:458.2,458.108 1 0 +github.com/muety/wakapi/config/config.go:458.108,460.3 1 0 +github.com/muety/wakapi/config/config.go:461.2,461.28 1 0 +github.com/muety/wakapi/config/config.go:461.28,463.3 1 0 +github.com/muety/wakapi/config/config.go:464.2,464.51 1 0 +github.com/muety/wakapi/config/config.go:464.51,467.3 2 0 +github.com/muety/wakapi/config/config.go:468.2,468.100 1 0 +github.com/muety/wakapi/config/config.go:468.100,470.3 1 0 +github.com/muety/wakapi/config/config.go:471.2,471.74 1 0 +github.com/muety/wakapi/config/config.go:471.74,473.3 1 0 +github.com/muety/wakapi/config/config.go:474.2,474.94 1 0 +github.com/muety/wakapi/config/config.go:474.94,476.3 1 0 +github.com/muety/wakapi/config/config.go:478.2,480.78 2 0 +github.com/muety/wakapi/config/config.go:480.78,482.3 1 0 +github.com/muety/wakapi/config/config.go:483.2,483.81 1 0 +github.com/muety/wakapi/config/config.go:483.81,485.3 1 0 +github.com/muety/wakapi/config/config.go:486.2,486.66 1 0 +github.com/muety/wakapi/config/config.go:486.66,487.48 1 0 +github.com/muety/wakapi/config/config.go:487.48,489.4 1 0 +github.com/muety/wakapi/config/config.go:493.2,493.55 1 0 +github.com/muety/wakapi/config/config.go:493.55,495.3 1 0 +github.com/muety/wakapi/config/config.go:496.2,496.56 1 0 +github.com/muety/wakapi/config/config.go:496.56,498.3 1 0 +github.com/muety/wakapi/config/config.go:499.2,499.65 1 0 +github.com/muety/wakapi/config/config.go:499.65,501.3 1 0 +github.com/muety/wakapi/config/config.go:503.2,504.14 2 0 +github.com/muety/wakapi/config/config.go:507.22,517.2 1 0 github.com/muety/wakapi/config/db.go:40.50,41.19 1 0 github.com/muety/wakapi/config/db.go:42.23,46.5 1 0 github.com/muety/wakapi/config/db.go:47.26,50.5 1 0 @@ -184,133 +280,53 @@ github.com/muety/wakapi/config/sentry.go:151.2,151.11 1 0 github.com/muety/wakapi/config/session.go:9.46,10.25 1 0 github.com/muety/wakapi/config/session.go:10.25,12.3 1 0 github.com/muety/wakapi/config/session.go:13.2,13.21 1 0 -github.com/muety/wakapi/helpers/date.go:17.73,18.58 1 0 -github.com/muety/wakapi/helpers/date.go:18.58,20.3 1 0 -github.com/muety/wakapi/helpers/date.go:21.2,21.87 1 0 -github.com/muety/wakapi/helpers/date.go:21.87,23.3 1 0 -github.com/muety/wakapi/helpers/date.go:24.2,24.64 1 0 -github.com/muety/wakapi/helpers/date.go:27.40,29.2 1 0 -github.com/muety/wakapi/helpers/date.go:31.44,33.2 1 0 -github.com/muety/wakapi/helpers/date.go:35.49,37.2 1 0 -github.com/muety/wakapi/helpers/date.go:39.45,41.2 1 0 -github.com/muety/wakapi/helpers/date.go:43.50,49.2 5 0 -github.com/muety/wakapi/helpers/http.go:11.94,13.16 2 0 -github.com/muety/wakapi/helpers/http.go:13.16,15.3 1 0 -github.com/muety/wakapi/helpers/http.go:17.2,17.107 1 0 -github.com/muety/wakapi/helpers/http.go:17.107,19.3 1 0 -github.com/muety/wakapi/helpers/http.go:21.2,21.22 1 0 -github.com/muety/wakapi/helpers/http.go:24.90,27.58 3 0 -github.com/muety/wakapi/helpers/http.go:27.58,29.3 1 0 -github.com/muety/wakapi/helpers/interval.go:10.66,11.40 1 0 -github.com/muety/wakapi/helpers/interval.go:11.40,12.27 1 0 -github.com/muety/wakapi/helpers/interval.go:12.27,14.4 1 0 -github.com/muety/wakapi/helpers/interval.go:16.2,16.48 1 0 -github.com/muety/wakapi/helpers/interval.go:19.61,22.2 2 0 -github.com/muety/wakapi/helpers/interval.go:24.88,27.2 2 0 -github.com/muety/wakapi/helpers/interval.go:29.95,31.16 2 0 -github.com/muety/wakapi/helpers/interval.go:31.16,33.3 1 0 -github.com/muety/wakapi/helpers/interval.go:34.2,34.38 1 0 -github.com/muety/wakapi/helpers/interval.go:37.105,41.18 3 1 -github.com/muety/wakapi/helpers/interval.go:42.28,43.32 1 0 -github.com/muety/wakapi/helpers/interval.go:44.32,46.30 2 0 -github.com/muety/wakapi/helpers/interval.go:47.30,48.34 1 1 -github.com/muety/wakapi/helpers/interval.go:49.31,50.35 1 0 -github.com/muety/wakapi/helpers/interval.go:51.31,53.33 2 0 -github.com/muety/wakapi/helpers/interval.go:54.32,55.36 1 0 -github.com/muety/wakapi/helpers/interval.go:56.32,58.34 2 0 -github.com/muety/wakapi/helpers/interval.go:59.31,60.35 1 0 -github.com/muety/wakapi/helpers/interval.go:61.32,62.31 1 1 -github.com/muety/wakapi/helpers/interval.go:63.41,65.48 2 0 -github.com/muety/wakapi/helpers/interval.go:66.33,67.32 1 1 -github.com/muety/wakapi/helpers/interval.go:68.33,69.32 1 1 -github.com/muety/wakapi/helpers/interval.go:70.34,71.31 1 1 -github.com/muety/wakapi/helpers/interval.go:72.35,73.32 1 1 -github.com/muety/wakapi/helpers/interval.go:74.26,75.21 1 0 -github.com/muety/wakapi/helpers/interval.go:76.10,77.39 1 0 -github.com/muety/wakapi/helpers/interval.go:80.2,80.22 1 1 -github.com/muety/wakapi/helpers/interval.go:84.65,85.15 1 1 -github.com/muety/wakapi/helpers/interval.go:85.15,87.3 1 1 -github.com/muety/wakapi/helpers/interval.go:88.2,88.14 1 1 -github.com/muety/wakapi/helpers/interval.go:88.14,90.3 1 1 -github.com/muety/wakapi/helpers/interval.go:91.2,91.14 1 1 -github.com/muety/wakapi/helpers/interval.go:91.14,93.3 1 1 -github.com/muety/wakapi/helpers/interval.go:94.2,94.15 1 1 -github.com/muety/wakapi/helpers/interval.go:94.15,96.3 1 1 -github.com/muety/wakapi/helpers/interval.go:97.2,97.15 1 1 -github.com/muety/wakapi/helpers/interval.go:97.15,99.3 1 1 -github.com/muety/wakapi/helpers/interval.go:100.2,100.16 1 1 -github.com/muety/wakapi/helpers/interval.go:100.16,102.3 1 1 -github.com/muety/wakapi/helpers/interval.go:103.2,103.16 1 1 -github.com/muety/wakapi/helpers/interval.go:103.16,105.3 1 1 -github.com/muety/wakapi/helpers/interval.go:106.2,106.41 1 1 -github.com/muety/wakapi/helpers/summary.go:10.73,17.56 5 0 -github.com/muety/wakapi/helpers/summary.go:17.56,19.3 1 0 -github.com/muety/wakapi/helpers/summary.go:19.8,19.54 1 0 -github.com/muety/wakapi/helpers/summary.go:19.54,21.3 1 0 -github.com/muety/wakapi/helpers/summary.go:21.8,23.17 2 0 -github.com/muety/wakapi/helpers/summary.go:23.17,25.4 1 0 -github.com/muety/wakapi/helpers/summary.go:27.3,28.17 2 0 -github.com/muety/wakapi/helpers/summary.go:28.17,30.4 1 0 -github.com/muety/wakapi/helpers/summary.go:33.2,43.8 3 0 -github.com/muety/wakapi/helpers/summary.go:46.59,48.48 2 0 -github.com/muety/wakapi/helpers/summary.go:48.48,50.3 1 0 -github.com/muety/wakapi/helpers/summary.go:51.2,51.49 1 0 -github.com/muety/wakapi/helpers/summary.go:51.49,53.3 1 0 -github.com/muety/wakapi/helpers/summary.go:54.2,54.47 1 0 -github.com/muety/wakapi/helpers/summary.go:54.47,56.3 1 0 -github.com/muety/wakapi/helpers/summary.go:57.2,57.48 1 0 -github.com/muety/wakapi/helpers/summary.go:57.48,59.3 1 0 -github.com/muety/wakapi/helpers/summary.go:60.2,60.57 1 0 -github.com/muety/wakapi/helpers/summary.go:60.57,62.3 1 0 -github.com/muety/wakapi/helpers/summary.go:63.2,63.46 1 0 -github.com/muety/wakapi/helpers/summary.go:63.46,65.3 1 0 -github.com/muety/wakapi/helpers/summary.go:66.2,66.47 1 0 -github.com/muety/wakapi/helpers/summary.go:66.47,68.3 1 0 -github.com/muety/wakapi/helpers/summary.go:69.2,69.47 1 0 -github.com/muety/wakapi/helpers/summary.go:69.47,71.3 1 0 -github.com/muety/wakapi/helpers/summary.go:72.2,72.16 1 0 -github.com/muety/wakapi/helpers/summary.go:75.48,79.51 2 0 -github.com/muety/wakapi/helpers/summary.go:79.51,81.3 1 0 -github.com/muety/wakapi/helpers/summary.go:82.2,82.12 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:32.91,38.2 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:40.90,43.2 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:45.90,48.2 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:50.99,53.2 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:55.71,56.71 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:56.71,58.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:61.107,65.16 3 0 -github.com/muety/wakapi/middlewares/authenticate.go:65.16,67.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:68.2,68.16 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:35.91,41.2 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:43.90,46.2 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:48.90,51.2 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:53.99,56.2 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:58.71,59.71 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:59.71,61.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:64.107,68.16 3 0 github.com/muety/wakapi/middlewares/authenticate.go:68.16,70.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:72.2,72.31 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:72.31,73.31 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:73.31,76.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:78.3,78.29 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:78.29,81.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:81.9,82.36 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:82.36,86.5 3 0 -github.com/muety/wakapi/middlewares/authenticate.go:87.4,88.59 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:90.3,90.9 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:93.2,94.12 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:97.70,98.39 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:98.39,99.60 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:99.60,101.4 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:103.2,103.14 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:106.98,108.16 2 1 -github.com/muety/wakapi/middlewares/authenticate.go:108.16,110.3 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:112.2,115.16 4 1 -github.com/muety/wakapi/middlewares/authenticate.go:115.16,117.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:118.2,118.18 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:121.97,125.19 4 1 -github.com/muety/wakapi/middlewares/authenticate.go:125.19,127.3 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:128.2,129.16 2 1 -github.com/muety/wakapi/middlewares/authenticate.go:129.16,131.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:132.2,132.18 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:135.92,137.16 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:137.16,139.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:141.2,142.16 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:142.16,144.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:149.2,149.18 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:71.2,71.16 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:71.16,73.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:74.2,74.55 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:74.55,76.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:78.2,78.31 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:78.31,79.31 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:79.31,82.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:84.3,84.29 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:84.29,87.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:87.9,88.36 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:88.36,92.5 3 0 +github.com/muety/wakapi/middlewares/authenticate.go:93.4,94.59 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:96.3,96.9 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:99.2,100.12 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:103.70,104.39 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:104.39,105.60 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:105.60,107.4 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:109.2,109.14 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:112.98,114.16 2 1 +github.com/muety/wakapi/middlewares/authenticate.go:114.16,116.3 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:118.2,121.16 4 1 +github.com/muety/wakapi/middlewares/authenticate.go:121.16,123.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:124.2,124.18 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:127.97,131.19 4 1 +github.com/muety/wakapi/middlewares/authenticate.go:131.19,133.3 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:134.2,135.16 2 1 +github.com/muety/wakapi/middlewares/authenticate.go:135.16,137.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:138.2,138.18 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:141.99,143.22 2 1 +github.com/muety/wakapi/middlewares/authenticate.go:143.22,145.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:146.2,146.161 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:146.161,148.3 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:148.5,150.3 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:151.2,151.43 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:154.92,156.16 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:156.16,158.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:160.2,161.16 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:161.16,163.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:168.2,168.18 1 0 github.com/muety/wakapi/middlewares/filetype.go:13.83,14.43 1 0 github.com/muety/wakapi/middlewares/filetype.go:14.43,19.3 1 0 github.com/muety/wakapi/middlewares/filetype.go:22.84,24.34 2 0 @@ -368,1231 +384,6 @@ github.com/muety/wakapi/middlewares/sentry.go:16.43,20.3 1 0 github.com/muety/wakapi/middlewares/sentry.go:23.78,26.54 3 0 github.com/muety/wakapi/middlewares/sentry.go:26.54,27.43 1 0 github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0 -github.com/muety/wakapi/routes/api/activity.go:22.126,28.2 1 0 -github.com/muety/wakapi/routes/api/activity.go:30.64,39.2 4 0 -github.com/muety/wakapi/routes/api/activity.go:41.87,44.16 3 0 -github.com/muety/wakapi/routes/api/activity.go:44.16,47.3 2 0 -github.com/muety/wakapi/routes/api/activity.go:49.2,49.68 1 0 -github.com/muety/wakapi/routes/api/activity.go:49.68,50.159 1 0 -github.com/muety/wakapi/routes/api/activity.go:50.159,53.4 2 0 -github.com/muety/wakapi/routes/api/activity.go:56.2,57.16 2 0 -github.com/muety/wakapi/routes/api/activity.go:57.16,61.3 3 0 -github.com/muety/wakapi/routes/api/activity.go:63.2,66.24 4 0 -github.com/muety/wakapi/routes/api/avatar.go:19.40,21.16 2 0 -github.com/muety/wakapi/routes/api/avatar.go:21.16,22.13 1 0 -github.com/muety/wakapi/routes/api/avatar.go:25.2,28.3 1 0 -github.com/muety/wakapi/routes/api/avatar.go:31.59,36.2 4 0 -github.com/muety/wakapi/routes/api/avatar.go:38.69,41.37 2 0 -github.com/muety/wakapi/routes/api/avatar.go:41.37,43.3 1 0 -github.com/muety/wakapi/routes/api/avatar.go:45.2,45.29 1 0 -github.com/muety/wakapi/routes/api/avatar.go:45.29,47.3 1 0 -github.com/muety/wakapi/routes/api/avatar.go:48.2,53.32 5 0 -github.com/muety/wakapi/routes/api/badge.go:27.112,34.2 1 1 -github.com/muety/wakapi/routes/api/badge.go:36.58,38.2 1 1 -github.com/muety/wakapi/routes/api/badge.go:40.68,42.16 2 1 -github.com/muety/wakapi/routes/api/badge.go:42.16,45.3 2 0 -github.com/muety/wakapi/routes/api/badge.go:47.2,48.16 2 1 -github.com/muety/wakapi/routes/api/badge.go:48.16,52.3 3 1 -github.com/muety/wakapi/routes/api/badge.go:54.2,56.62 3 1 -github.com/muety/wakapi/routes/api/badge.go:56.62,59.3 2 0 -github.com/muety/wakapi/routes/api/badge.go:61.2,69.16 3 1 -github.com/muety/wakapi/routes/api/badge.go:69.16,73.3 3 0 -github.com/muety/wakapi/routes/api/badge.go:75.2,76.66 2 1 -github.com/muety/wakapi/routes/api/badge.go:76.66,78.3 1 0 -github.com/muety/wakapi/routes/api/badge.go:79.2,79.66 1 1 -github.com/muety/wakapi/routes/api/badge.go:79.66,81.3 1 0 -github.com/muety/wakapi/routes/api/badge.go:83.2,83.101 1 1 -github.com/muety/wakapi/routes/api/badge.go:83.101,85.3 1 1 -github.com/muety/wakapi/routes/api/badge.go:87.2,89.25 3 1 -github.com/muety/wakapi/routes/api/badge.go:92.53,97.2 4 1 -github.com/muety/wakapi/routes/api/diagnostics.go:20.138,26.2 1 0 -github.com/muety/wakapi/routes/api/diagnostics.go:28.67,30.2 1 0 -github.com/muety/wakapi/routes/api/diagnostics.go:39.78,42.69 2 0 -github.com/muety/wakapi/routes/api/diagnostics.go:42.69,47.3 4 0 -github.com/muety/wakapi/routes/api/diagnostics.go:49.2,49.66 1 0 -github.com/muety/wakapi/routes/api/diagnostics.go:49.66,54.3 4 0 -github.com/muety/wakapi/routes/api/diagnostics.go:56.2,56.59 1 0 -github.com/muety/wakapi/routes/api/health.go:15.57,17.2 1 0 -github.com/muety/wakapi/routes/api/health.go:19.62,21.2 1 0 -github.com/muety/wakapi/routes/api/health.go:29.72,31.41 2 0 -github.com/muety/wakapi/routes/api/health.go:31.41,32.38 1 0 -github.com/muety/wakapi/routes/api/health.go:32.38,34.4 1 0 -github.com/muety/wakapi/routes/api/health.go:37.2,38.56 2 0 -github.com/muety/wakapi/routes/api/heartbeat.go:26.187,33.2 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:39.65,40.34 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:40.34,54.3 9 0 -github.com/muety/wakapi/routes/api/heartbeat.go:65.76,67.16 2 0 -github.com/muety/wakapi/routes/api/heartbeat.go:67.16,69.3 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:71.2,73.16 3 0 -github.com/muety/wakapi/routes/api/heartbeat.go:73.16,78.3 4 0 -github.com/muety/wakapi/routes/api/heartbeat.go:80.2,84.32 4 0 -github.com/muety/wakapi/routes/api/heartbeat.go:84.32,85.16 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:85.16,89.4 3 0 -github.com/muety/wakapi/routes/api/heartbeat.go:92.3,92.25 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:92.25,97.4 4 0 -github.com/muety/wakapi/routes/api/heartbeat.go:98.3,98.23 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:98.23,100.4 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:102.3,109.65 7 0 -github.com/muety/wakapi/routes/api/heartbeat.go:109.65,113.4 3 0 -github.com/muety/wakapi/routes/api/heartbeat.go:115.3,115.14 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:118.2,118.64 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:118.64,123.3 4 0 -github.com/muety/wakapi/routes/api/heartbeat.go:125.2,125.19 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:125.19,127.52 2 0 -github.com/muety/wakapi/routes/api/heartbeat.go:127.52,132.4 4 0 -github.com/muety/wakapi/routes/api/heartbeat.go:135.2,135.15 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:135.16,135.17 0 0 -github.com/muety/wakapi/routes/api/heartbeat.go:137.2,137.90 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:146.59,149.25 2 0 -github.com/muety/wakapi/routes/api/heartbeat.go:149.25,154.3 4 0 -github.com/muety/wakapi/routes/api/heartbeat.go:156.2,158.3 1 0 -github.com/muety/wakapi/routes/api/heartbeat.go:172.45,172.46 0 0 -github.com/muety/wakapi/routes/api/heartbeat.go:183.45,183.46 0 0 -github.com/muety/wakapi/routes/api/heartbeat.go:194.45,194.46 0 0 -github.com/muety/wakapi/routes/api/heartbeat.go:204.45,204.46 0 0 -github.com/muety/wakapi/routes/api/heartbeat.go:215.45,215.46 0 0 -github.com/muety/wakapi/routes/api/heartbeat.go:226.45,226.46 0 0 -github.com/muety/wakapi/routes/api/heartbeat.go:237.45,237.46 0 0 -github.com/muety/wakapi/routes/api/metrics.go:64.249,73.2 1 0 -github.com/muety/wakapi/routes/api/metrics.go:75.60,76.38 1 0 -github.com/muety/wakapi/routes/api/metrics.go:76.38,78.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:80.2,86.29 5 0 -github.com/muety/wakapi/routes/api/metrics.go:89.70,91.20 2 0 -github.com/muety/wakapi/routes/api/metrics.go:91.20,95.3 3 0 -github.com/muety/wakapi/routes/api/metrics.go:97.2,99.63 2 0 -github.com/muety/wakapi/routes/api/metrics.go:99.63,104.3 4 0 -github.com/muety/wakapi/routes/api/metrics.go:104.8,105.34 1 0 -github.com/muety/wakapi/routes/api/metrics.go:105.34,107.4 1 0 -github.com/muety/wakapi/routes/api/metrics.go:110.2,110.21 1 0 -github.com/muety/wakapi/routes/api/metrics.go:110.21,111.66 1 0 -github.com/muety/wakapi/routes/api/metrics.go:111.66,116.4 4 0 -github.com/muety/wakapi/routes/api/metrics.go:116.9,117.36 1 0 -github.com/muety/wakapi/routes/api/metrics.go:117.36,119.5 1 0 -github.com/muety/wakapi/routes/api/metrics.go:123.2,126.34 3 0 -github.com/muety/wakapi/routes/api/metrics.go:129.81,133.16 3 0 -github.com/muety/wakapi/routes/api/metrics.go:133.16,136.3 2 0 -github.com/muety/wakapi/routes/api/metrics.go:138.2,141.16 3 0 -github.com/muety/wakapi/routes/api/metrics.go:141.16,144.3 2 0 -github.com/muety/wakapi/routes/api/metrics.go:146.2,147.16 2 0 -github.com/muety/wakapi/routes/api/metrics.go:147.16,150.3 2 0 -github.com/muety/wakapi/routes/api/metrics.go:154.2,175.42 4 0 -github.com/muety/wakapi/routes/api/metrics.go:175.42,182.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:184.2,184.43 1 0 -github.com/muety/wakapi/routes/api/metrics.go:184.43,191.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:193.2,193.41 1 0 -github.com/muety/wakapi/routes/api/metrics.go:193.41,200.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:202.2,202.50 1 0 -github.com/muety/wakapi/routes/api/metrics.go:202.50,209.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:211.2,211.42 1 0 -github.com/muety/wakapi/routes/api/metrics.go:211.42,218.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:220.2,220.40 1 0 -github.com/muety/wakapi/routes/api/metrics.go:220.40,227.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:230.2,270.16 9 0 -github.com/muety/wakapi/routes/api/metrics.go:270.16,272.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:274.2,282.44 2 0 -github.com/muety/wakapi/routes/api/metrics.go:282.44,296.3 2 0 -github.com/muety/wakapi/routes/api/metrics.go:298.2,298.22 1 0 -github.com/muety/wakapi/routes/api/metrics.go:301.82,307.19 4 0 -github.com/muety/wakapi/routes/api/metrics.go:307.19,309.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:311.2,312.106 2 0 -github.com/muety/wakapi/routes/api/metrics.go:312.106,313.56 1 0 -github.com/muety/wakapi/routes/api/metrics.go:313.56,315.4 1 0 -github.com/muety/wakapi/routes/api/metrics.go:318.2,323.16 5 0 -github.com/muety/wakapi/routes/api/metrics.go:323.16,326.3 2 0 -github.com/muety/wakapi/routes/api/metrics.go:327.2,360.16 7 0 -github.com/muety/wakapi/routes/api/metrics.go:360.16,363.3 2 0 -github.com/muety/wakapi/routes/api/metrics.go:365.2,365.32 1 0 -github.com/muety/wakapi/routes/api/metrics.go:365.32,372.3 1 0 -github.com/muety/wakapi/routes/api/metrics.go:373.2,383.29 6 0 -github.com/muety/wakapi/routes/api/metrics.go:383.29,384.20 1 0 -github.com/muety/wakapi/routes/api/metrics.go:384.20,386.18 2 0 -github.com/muety/wakapi/routes/api/metrics.go:386.18,389.5 2 0 -github.com/muety/wakapi/routes/api/metrics.go:390.4,397.6 3 0 -github.com/muety/wakapi/routes/api/metrics.go:401.2,404.22 3 0 -github.com/muety/wakapi/routes/api/summary.go:20.122,26.2 1 0 -github.com/muety/wakapi/routes/api/summary.go:28.63,34.2 4 0 -github.com/muety/wakapi/routes/api/summary.go:53.73,55.16 2 0 -github.com/muety/wakapi/routes/api/summary.go:55.16,59.3 3 0 -github.com/muety/wakapi/routes/api/summary.go:61.2,61.51 1 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:21.13,24.2 2 1 -github.com/muety/wakapi/routes/utils/badge_utils.go:26.114,28.79 2 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:28.79,30.3 1 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:32.2,33.75 2 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:33.75,34.61 1 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:34.61,36.4 1 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:39.2,47.71 4 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:47.71,49.3 1 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:51.2,53.22 3 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:54.17,56.68 2 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:57.12,59.63 2 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:60.16,62.67 2 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:63.18,65.69 2 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:66.17,68.68 2 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:69.15,71.66 2 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:73.10,76.30 2 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:79.2,79.19 1 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:79.19,81.3 1 0 -github.com/muety/wakapi/routes/utils/badge_utils.go:83.2,83.31 1 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:11.68,13.16 2 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:13.16,15.3 1 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:17.2,18.16 2 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:18.16,20.3 1 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:22.2,22.35 1 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:25.65,33.48 6 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:33.48,35.3 1 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:37.2,37.24 1 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:40.67,48.47 6 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:48.47,50.3 1 0 -github.com/muety/wakapi/routes/utils/heartbeat_utils.go:52.2,52.45 1 0 -github.com/muety/wakapi/routes/utils/messages.go:9.71,11.2 1 0 -github.com/muety/wakapi/routes/utils/messages.go:13.73,15.2 1 0 -github.com/muety/wakapi/routes/utils/messages.go:17.97,19.57 2 0 -github.com/muety/wakapi/routes/utils/messages.go:19.57,21.3 1 0 -github.com/muety/wakapi/routes/utils/messages.go:22.2,22.65 1 0 -github.com/muety/wakapi/routes/utils/messages.go:22.65,24.3 1 0 -github.com/muety/wakapi/routes/utils/messages.go:25.2,26.11 2 0 -github.com/muety/wakapi/routes/utils/messages.go:29.78,33.2 3 0 -github.com/muety/wakapi/routes/utils/project_utils.go:15.144,18.16 2 0 -github.com/muety/wakapi/routes/utils/project_utils.go:18.16,20.3 1 0 -github.com/muety/wakapi/routes/utils/project_utils.go:23.2,24.16 2 0 -github.com/muety/wakapi/routes/utils/project_utils.go:24.16,26.3 1 0 -github.com/muety/wakapi/routes/utils/project_utils.go:28.2,32.35 2 0 -github.com/muety/wakapi/routes/utils/project_utils.go:32.35,35.3 2 0 -github.com/muety/wakapi/routes/utils/project_utils.go:37.2,39.20 3 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:12.98,14.16 2 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:14.16,16.3 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:17.2,17.51 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:20.119,22.22 2 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:22.22,24.3 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:26.2,34.16 2 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:34.16,36.3 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:38.2,41.36 3 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:44.90,46.32 2 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:46.32,47.50 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:47.50,49.4 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:51.2,51.15 1 0 -github.com/muety/wakapi/routes/utils/user_utils.go:15.139,16.68 1 1 -github.com/muety/wakapi/routes/utils/user_utils.go:16.68,21.3 4 1 -github.com/muety/wakapi/routes/utils/user_utils.go:23.2,24.21 2 1 -github.com/muety/wakapi/routes/utils/user_utils.go:24.21,26.3 1 1 -github.com/muety/wakapi/routes/utils/user_utils.go:28.2,29.27 2 1 -github.com/muety/wakapi/routes/utils/user_utils.go:29.27,31.3 1 1 -github.com/muety/wakapi/routes/utils/user_utils.go:31.8,31.35 1 1 -github.com/muety/wakapi/routes/utils/user_utils.go:31.35,33.3 1 1 -github.com/muety/wakapi/routes/utils/user_utils.go:35.2,35.63 1 1 -github.com/muety/wakapi/routes/utils/user_utils.go:35.63,37.3 1 1 -github.com/muety/wakapi/routes/utils/user_utils.go:39.2,40.16 2 1 -github.com/muety/wakapi/routes/utils/user_utils.go:40.16,42.3 1 0 -github.com/muety/wakapi/routes/utils/user_utils.go:44.2,44.27 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:23.116,29.2 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:31.60,32.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:32.34,35.3 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:47.70,49.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:49.16,51.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:53.2,54.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:54.16,58.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:60.2,61.46 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:64.116,73.29 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:73.29,75.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:77.2,85.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:85.16,87.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:89.2,89.36 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:29.124,34.2 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:36.62,37.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:37.34,40.3 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:52.72,54.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:54.16,56.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:58.2,61.16 4 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:61.16,65.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:67.2,71.16 4 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:71.16,76.3 4 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:78.2,84.47 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:23.123,29.2 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:31.61,32.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:32.34,35.3 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:48.71,50.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:50.16,52.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:54.2,55.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:55.16,60.3 4 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:62.2,65.28 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:65.28,66.30 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:66.30,68.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:71.2,72.46 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:22.112,28.2 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:30.58,31.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:31.34,41.3 5 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:62.68,68.53 5 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:68.53,70.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:72.2,73.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:73.16,77.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:81.2,81.22 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:81.22,82.100 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:82.100,84.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:84.9,86.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:89.2,90.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:90.16,94.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:96.2,98.69 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:98.69,102.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:104.2,105.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:105.16,109.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:111.2,118.33 6 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:118.33,120.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:121.2,121.35 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:121.35,123.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:124.2,124.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:124.34,126.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:127.2,127.29 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:127.29,129.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:130.2,130.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:130.34,132.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:134.2,134.49 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:137.136,146.16 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:146.16,148.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:150.2,150.36 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:29.120,35.2 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:37.62,38.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:38.34,43.3 4 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:55.72,57.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:57.16,59.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:61.2,62.22 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:62.22,64.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:66.2,67.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:67.16,71.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:73.2,74.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:74.16,78.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:79.2,83.4 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:86.115,95.29 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:95.29,97.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:99.2,100.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:100.16,102.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:104.2,104.36 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:27.120,33.2 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:35.62,36.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:36.34,39.3 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:65.72,67.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:67.16,69.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:71.2,72.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:72.16,76.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:78.2,79.46 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:82.114,87.19 4 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:87.19,88.56 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:88.56,90.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:93.2,94.22 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:94.22,96.98 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:96.98,98.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:98.9,100.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:101.8,101.130 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:101.130,104.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:104.8,109.17 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:109.17,111.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:113.3,114.17 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:114.17,116.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:123.2,137.37 6 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:137.37,139.17 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:139.17,141.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:143.3,145.25 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:148.2,148.38 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:21.116,27.2 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:29.58,30.34 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:30.34,33.3 2 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:45.68,47.16 2 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:47.16,49.3 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:51.2,52.72 2 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:52.72,54.3 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:54.8,56.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:58.2,58.72 1 1 -github.com/muety/wakapi/utils/auth.go:15.79,17.54 2 0 -github.com/muety/wakapi/utils/auth.go:17.54,19.3 1 0 -github.com/muety/wakapi/utils/auth.go:21.2,23.16 3 0 -github.com/muety/wakapi/utils/auth.go:23.16,25.3 1 0 -github.com/muety/wakapi/utils/auth.go:27.2,29.45 3 0 -github.com/muety/wakapi/utils/auth.go:29.45,31.3 1 0 -github.com/muety/wakapi/utils/auth.go:32.2,33.32 2 0 -github.com/muety/wakapi/utils/auth.go:36.65,38.85 2 0 -github.com/muety/wakapi/utils/auth.go:38.85,40.3 1 0 -github.com/muety/wakapi/utils/auth.go:42.2,43.30 2 0 -github.com/muety/wakapi/utils/auth.go:48.57,49.34 1 0 -github.com/muety/wakapi/utils/auth.go:49.34,51.3 1 0 -github.com/muety/wakapi/utils/auth.go:52.2,52.45 1 0 -github.com/muety/wakapi/utils/auth.go:55.57,57.2 1 0 -github.com/muety/wakapi/utils/auth.go:59.55,63.2 3 0 -github.com/muety/wakapi/utils/auth.go:65.55,68.16 3 0 -github.com/muety/wakapi/utils/auth.go:68.16,70.3 1 0 -github.com/muety/wakapi/utils/auth.go:71.2,71.16 1 0 -github.com/muety/wakapi/utils/auth.go:74.57,78.2 3 0 -github.com/muety/wakapi/utils/auth.go:80.57,83.16 3 0 -github.com/muety/wakapi/utils/auth.go:83.16,85.3 1 0 -github.com/muety/wakapi/utils/auth.go:86.2,86.16 1 0 -github.com/muety/wakapi/utils/collection.go:5.52,6.28 1 0 -github.com/muety/wakapi/utils/collection.go:6.28,8.3 1 0 -github.com/muety/wakapi/utils/collection.go:9.2,9.26 1 0 -github.com/muety/wakapi/utils/collection.go:9.26,11.3 1 0 -github.com/muety/wakapi/utils/collection.go:12.2,12.28 1 0 -github.com/muety/wakapi/utils/collection.go:15.78,17.22 2 0 -github.com/muety/wakapi/utils/collection.go:17.22,18.18 1 0 -github.com/muety/wakapi/utils/collection.go:18.18,20.4 1 0 -github.com/muety/wakapi/utils/collection.go:21.3,21.12 1 0 -github.com/muety/wakapi/utils/collection.go:23.2,23.11 1 0 -github.com/muety/wakapi/utils/color.go:8.41,11.16 2 0 -github.com/muety/wakapi/utils/color.go:12.9,13.51 1 0 -github.com/muety/wakapi/utils/color.go:14.9,18.12 4 0 -github.com/muety/wakapi/utils/color.go:20.2,20.8 1 0 -github.com/muety/wakapi/utils/color.go:23.37,25.2 1 0 -github.com/muety/wakapi/utils/color.go:27.70,28.15 1 0 -github.com/muety/wakapi/utils/color.go:28.15,30.3 1 0 -github.com/muety/wakapi/utils/color.go:30.8,30.22 1 0 -github.com/muety/wakapi/utils/color.go:30.22,32.3 1 0 -github.com/muety/wakapi/utils/color.go:34.2,39.43 5 0 -github.com/muety/wakapi/utils/cron.go:5.44,7.21 2 0 -github.com/muety/wakapi/utils/cron.go:7.21,9.3 1 0 -github.com/muety/wakapi/utils/cron.go:10.2,10.20 1 0 -github.com/muety/wakapi/utils/date.go:9.48,11.2 1 0 -github.com/muety/wakapi/utils/date.go:13.51,15.2 1 0 -github.com/muety/wakapi/utils/date.go:17.52,19.2 1 0 -github.com/muety/wakapi/utils/date.go:21.51,23.2 1 0 -github.com/muety/wakapi/utils/date.go:26.41,28.21 2 0 -github.com/muety/wakapi/utils/date.go:28.21,30.3 1 0 -github.com/muety/wakapi/utils/date.go:31.2,31.33 1 0 -github.com/muety/wakapi/utils/date.go:35.67,38.33 2 1 -github.com/muety/wakapi/utils/date.go:38.33,40.19 2 1 -github.com/muety/wakapi/utils/date.go:40.19,42.4 1 1 -github.com/muety/wakapi/utils/date.go:43.3,44.10 2 1 -github.com/muety/wakapi/utils/date.go:47.2,47.18 1 1 -github.com/muety/wakapi/utils/date.go:51.36,54.2 2 0 -github.com/muety/wakapi/utils/date.go:56.42,57.28 1 0 -github.com/muety/wakapi/utils/date.go:58.52,59.21 1 0 -github.com/muety/wakapi/utils/date.go:60.53,61.22 1 0 -github.com/muety/wakapi/utils/date.go:62.55,63.24 1 0 -github.com/muety/wakapi/utils/date.go:64.54,65.23 1 0 -github.com/muety/wakapi/utils/date.go:66.52,67.21 1 0 -github.com/muety/wakapi/utils/date.go:68.54,69.23 1 0 -github.com/muety/wakapi/utils/date.go:70.52,71.21 1 0 -github.com/muety/wakapi/utils/date.go:73.2,73.20 1 0 -github.com/muety/wakapi/utils/db.go:10.34,11.37 1 0 -github.com/muety/wakapi/utils/db.go:11.37,13.110 2 0 -github.com/muety/wakapi/utils/db.go:13.110,16.4 2 0 -github.com/muety/wakapi/utils/db.go:17.3,17.20 1 0 -github.com/muety/wakapi/utils/db.go:19.2,20.14 2 0 -github.com/muety/wakapi/utils/db.go:23.39,24.37 1 0 -github.com/muety/wakapi/utils/db.go:24.37,26.119 2 0 -github.com/muety/wakapi/utils/db.go:26.119,29.4 2 0 -github.com/muety/wakapi/utils/db.go:30.3,30.20 1 0 -github.com/muety/wakapi/utils/db.go:32.2,33.14 2 0 -github.com/muety/wakapi/utils/db.go:36.66,37.48 1 0 -github.com/muety/wakapi/utils/db.go:37.48,39.3 1 0 -github.com/muety/wakapi/utils/db.go:40.2,40.53 1 0 -github.com/muety/wakapi/utils/db.go:43.59,44.16 1 0 -github.com/muety/wakapi/utils/db.go:44.16,46.3 1 0 -github.com/muety/wakapi/utils/db.go:47.2,47.15 1 0 -github.com/muety/wakapi/utils/db.go:47.15,49.3 1 0 -github.com/muety/wakapi/utils/db.go:50.2,50.14 1 0 -github.com/muety/wakapi/utils/dns.go:9.38,11.21 2 0 -github.com/muety/wakapi/utils/dns.go:11.21,13.3 1 0 -github.com/muety/wakapi/utils/dns.go:14.2,15.39 2 0 -github.com/muety/wakapi/utils/http.go:25.13,27.2 1 1 -github.com/muety/wakapi/utils/http.go:34.34,35.20 1 0 -github.com/muety/wakapi/utils/http.go:35.20,37.3 1 0 -github.com/muety/wakapi/utils/http.go:38.2,38.19 1 0 -github.com/muety/wakapi/utils/http.go:41.35,42.21 1 0 -github.com/muety/wakapi/utils/http.go:42.21,44.3 1 0 -github.com/muety/wakapi/utils/http.go:45.2,45.34 1 0 -github.com/muety/wakapi/utils/http.go:49.62,51.48 2 0 -github.com/muety/wakapi/utils/http.go:51.48,53.3 1 0 -github.com/muety/wakapi/utils/http.go:54.2,54.93 1 0 -github.com/muety/wakapi/utils/http.go:54.93,55.89 1 0 -github.com/muety/wakapi/utils/http.go:55.89,57.4 1 0 -github.com/muety/wakapi/utils/http.go:59.2,59.14 1 0 -github.com/muety/wakapi/utils/http.go:62.51,66.46 4 0 -github.com/muety/wakapi/utils/http.go:66.46,68.3 1 0 -github.com/muety/wakapi/utils/http.go:69.2,69.73 1 0 -github.com/muety/wakapi/utils/http.go:69.73,71.3 1 0 -github.com/muety/wakapi/utils/http.go:72.2,72.19 1 0 -github.com/muety/wakapi/utils/http.go:75.78,77.26 2 0 -github.com/muety/wakapi/utils/http.go:77.26,79.3 1 0 -github.com/muety/wakapi/utils/http.go:80.2,80.30 1 0 -github.com/muety/wakapi/utils/http.go:80.30,82.3 1 0 -github.com/muety/wakapi/utils/http.go:83.2,83.19 1 0 -github.com/muety/wakapi/utils/http.go:86.56,89.88 2 1 -github.com/muety/wakapi/utils/http.go:89.88,90.28 1 1 -github.com/muety/wakapi/utils/http.go:90.28,92.4 1 1 -github.com/muety/wakapi/utils/http.go:93.3,93.61 1 1 -github.com/muety/wakapi/utils/http.go:96.2,96.79 1 1 -github.com/muety/wakapi/utils/http.go:96.79,98.3 1 1 -github.com/muety/wakapi/utils/http.go:99.2,99.64 1 1 -github.com/muety/wakapi/utils/http.go:102.76,103.16 1 0 -github.com/muety/wakapi/utils/http.go:103.16,105.3 1 0 -github.com/muety/wakapi/utils/http.go:106.2,106.27 1 0 -github.com/muety/wakapi/utils/http.go:106.27,109.100 3 0 -github.com/muety/wakapi/utils/http.go:109.100,114.4 4 0 -github.com/muety/wakapi/utils/http.go:115.3,115.139 1 0 -github.com/muety/wakapi/utils/http.go:117.2,117.17 1 0 -github.com/muety/wakapi/utils/json.go:12.75,18.62 2 0 -github.com/muety/wakapi/utils/json.go:18.62,20.3 1 0 -github.com/muety/wakapi/utils/json.go:22.2,22.29 1 0 -github.com/muety/wakapi/utils/json.go:22.29,24.3 1 0 -github.com/muety/wakapi/utils/json.go:26.2,26.72 1 0 -github.com/muety/wakapi/utils/json.go:26.72,28.3 1 0 -github.com/muety/wakapi/utils/json.go:29.2,29.70 1 0 -github.com/muety/wakapi/utils/json.go:29.70,31.3 1 0 -github.com/muety/wakapi/utils/json.go:33.2,33.20 1 0 -github.com/muety/wakapi/utils/strings.go:7.58,8.49 1 0 -github.com/muety/wakapi/utils/strings.go:8.49,9.32 1 0 -github.com/muety/wakapi/utils/strings.go:9.32,10.22 1 0 -github.com/muety/wakapi/utils/strings.go:10.22,12.5 1 0 -github.com/muety/wakapi/utils/strings.go:14.3,14.15 1 0 -github.com/muety/wakapi/utils/strings.go:18.77,19.29 1 0 -github.com/muety/wakapi/utils/strings.go:19.29,20.18 1 0 -github.com/muety/wakapi/utils/strings.go:20.18,22.4 1 0 -github.com/muety/wakapi/utils/strings.go:24.2,24.19 1 0 -github.com/muety/wakapi/utils/sync.go:11.66,13.12 2 0 -github.com/muety/wakapi/utils/sync.go:13.12,16.3 2 0 -github.com/muety/wakapi/utils/sync.go:17.2,17.9 1 0 -github.com/muety/wakapi/utils/sync.go:18.11,19.15 1 0 -github.com/muety/wakapi/utils/sync.go:20.29,21.14 1 0 -github.com/muety/wakapi/utils/system.go:8.20,10.2 1 0 -github.com/muety/wakapi/utils/system.go:12.21,14.2 1 0 -github.com/muety/wakapi/utils/template.go:13.41,15.16 2 0 -github.com/muety/wakapi/utils/template.go:15.16,17.3 1 0 -github.com/muety/wakapi/utils/template.go:18.2,18.23 1 0 -github.com/muety/wakapi/utils/template.go:21.37,22.30 1 0 -github.com/muety/wakapi/utils/template.go:22.30,24.3 1 0 -github.com/muety/wakapi/utils/template.go:25.2,25.10 1 0 -github.com/muety/wakapi/utils/template.go:28.83,33.16 4 0 -github.com/muety/wakapi/utils/template.go:33.16,35.3 1 0 -github.com/muety/wakapi/utils/template.go:37.2,37.29 1 0 -github.com/muety/wakapi/utils/template.go:37.29,39.51 2 0 -github.com/muety/wakapi/utils/template.go:39.51,40.12 1 0 -github.com/muety/wakapi/utils/template.go:43.3,44.17 2 0 -github.com/muety/wakapi/utils/template.go:44.17,46.4 1 0 -github.com/muety/wakapi/utils/template.go:47.3,48.17 2 0 -github.com/muety/wakapi/utils/template.go:48.17,50.4 1 0 -github.com/muety/wakapi/utils/template.go:52.3,55.17 3 0 -github.com/muety/wakapi/utils/template.go:55.17,57.4 1 0 -github.com/muety/wakapi/utils/template.go:59.3,59.27 1 0 -github.com/muety/wakapi/utils/template.go:62.2,62.23 1 0 -github.com/muety/wakapi/services/activity.go:41.74,47.2 1 0 -github.com/muety/wakapi/services/activity.go:51.128,53.65 2 0 -github.com/muety/wakapi/services/activity.go:53.65,55.3 1 0 -github.com/muety/wakapi/services/activity.go:57.2,57.18 1 0 -github.com/muety/wakapi/services/activity.go:58.35,60.17 2 0 -github.com/muety/wakapi/services/activity.go:60.17,62.4 1 0 -github.com/muety/wakapi/services/activity.go:63.3,63.20 1 0 -github.com/muety/wakapi/services/activity.go:64.10,65.48 1 0 -github.com/muety/wakapi/services/activity.go:69.95,72.16 3 0 -github.com/muety/wakapi/services/activity.go:72.16,74.3 1 0 -github.com/muety/wakapi/services/activity.go:76.2,83.37 5 0 -github.com/muety/wakapi/services/activity.go:83.37,87.20 3 0 -github.com/muety/wakapi/services/activity.go:87.20,90.18 3 0 -github.com/muety/wakapi/services/activity.go:90.18,97.5 6 0 -github.com/muety/wakapi/services/activity.go:98.4,100.16 3 0 -github.com/muety/wakapi/services/activity.go:104.2,130.30 9 0 -github.com/muety/wakapi/services/activity.go:130.30,138.3 6 0 -github.com/muety/wakapi/services/activity.go:140.2,147.26 6 0 -github.com/muety/wakapi/services/aggregation.go:31.142,41.2 1 0 -github.com/muety/wakapi/services/aggregation.go:50.43,53.52 2 0 -github.com/muety/wakapi/services/aggregation.go:53.52,54.80 1 0 -github.com/muety/wakapi/services/aggregation.go:54.80,56.4 1 0 -github.com/muety/wakapi/services/aggregation.go:57.58,59.3 1 0 -github.com/muety/wakapi/services/aggregation.go:62.92,63.47 1 0 -github.com/muety/wakapi/services/aggregation.go:63.47,65.3 1 0 -github.com/muety/wakapi/services/aggregation.go:66.2,72.16 4 0 -github.com/muety/wakapi/services/aggregation.go:72.16,75.3 2 0 -github.com/muety/wakapi/services/aggregation.go:78.2,79.16 2 0 -github.com/muety/wakapi/services/aggregation.go:79.16,82.3 2 0 -github.com/muety/wakapi/services/aggregation.go:85.2,86.44 2 0 -github.com/muety/wakapi/services/aggregation.go:86.44,88.3 1 0 -github.com/muety/wakapi/services/aggregation.go:91.2,93.12 3 0 -github.com/muety/wakapi/services/aggregation.go:93.12,94.28 1 0 -github.com/muety/wakapi/services/aggregation.go:94.28,96.47 2 0 -github.com/muety/wakapi/services/aggregation.go:96.47,98.5 1 0 -github.com/muety/wakapi/services/aggregation.go:98.19,100.5 1 0 -github.com/muety/wakapi/services/aggregation.go:105.2,105.41 1 0 -github.com/muety/wakapi/services/aggregation.go:105.41,106.71 1 0 -github.com/muety/wakapi/services/aggregation.go:106.71,107.12 1 0 -github.com/muety/wakapi/services/aggregation.go:110.3,110.21 1 0 -github.com/muety/wakapi/services/aggregation.go:110.21,114.4 1 0 -github.com/muety/wakapi/services/aggregation.go:114.9,114.62 1 0 -github.com/muety/wakapi/services/aggregation.go:114.62,118.4 1 0 -github.com/muety/wakapi/services/aggregation.go:123.2,123.12 1 0 -github.com/muety/wakapi/services/aggregation.go:126.60,127.115 1 0 -github.com/muety/wakapi/services/aggregation.go:127.115,129.3 1 0 -github.com/muety/wakapi/services/aggregation.go:129.8,131.60 2 0 -github.com/muety/wakapi/services/aggregation.go:131.60,133.4 1 0 -github.com/muety/wakapi/services/aggregation.go:137.83,152.41 5 0 -github.com/muety/wakapi/services/aggregation.go:152.41,162.3 3 0 -github.com/muety/wakapi/services/aggregation.go:165.83,168.27 3 0 -github.com/muety/wakapi/services/aggregation.go:168.27,169.34 1 0 -github.com/muety/wakapi/services/aggregation.go:169.34,171.4 1 0 -github.com/muety/wakapi/services/aggregation.go:173.2,174.12 2 0 -github.com/muety/wakapi/services/aggregation.go:177.79,180.27 3 0 -github.com/muety/wakapi/services/aggregation.go:180.27,182.3 1 0 -github.com/muety/wakapi/services/aggregation.go:185.34,188.2 2 0 -github.com/muety/wakapi/services/alias.go:18.77,23.2 1 1 -github.com/muety/wakapi/services/alias.go:27.60,28.43 1 1 -github.com/muety/wakapi/services/alias.go:28.43,30.3 1 1 -github.com/muety/wakapi/services/alias.go:31.2,31.14 1 1 -github.com/muety/wakapi/services/alias.go:34.62,36.16 2 1 -github.com/muety/wakapi/services/alias.go:36.16,38.3 1 1 -github.com/muety/wakapi/services/alias.go:39.2,39.12 1 1 -github.com/muety/wakapi/services/alias.go:42.59,43.51 1 1 -github.com/muety/wakapi/services/alias.go:43.51,45.3 1 0 -github.com/muety/wakapi/services/alias.go:48.76,49.32 1 0 -github.com/muety/wakapi/services/alias.go:49.32,51.3 1 0 -github.com/muety/wakapi/services/alias.go:52.2,52.49 1 0 -github.com/muety/wakapi/services/alias.go:52.49,54.3 1 0 -github.com/muety/wakapi/services/alias.go:54.8,56.3 1 0 -github.com/muety/wakapi/services/alias.go:59.102,60.38 1 0 -github.com/muety/wakapi/services/alias.go:60.38,62.3 1 0 -github.com/muety/wakapi/services/alias.go:63.2,63.39 1 0 -github.com/muety/wakapi/services/alias.go:66.113,67.38 1 0 -github.com/muety/wakapi/services/alias.go:67.38,69.3 1 0 -github.com/muety/wakapi/services/alias.go:70.2,70.39 1 0 -github.com/muety/wakapi/services/alias.go:73.108,74.32 1 1 -github.com/muety/wakapi/services/alias.go:74.32,76.3 1 1 -github.com/muety/wakapi/services/alias.go:78.2,78.49 1 1 -github.com/muety/wakapi/services/alias.go:78.49,79.47 1 1 -github.com/muety/wakapi/services/alias.go:79.47,80.49 1 1 -github.com/muety/wakapi/services/alias.go:80.49,82.5 1 1 -github.com/muety/wakapi/services/alias.go:86.2,86.19 1 1 -github.com/muety/wakapi/services/alias.go:89.77,91.16 2 0 -github.com/muety/wakapi/services/alias.go:91.16,93.3 1 0 -github.com/muety/wakapi/services/alias.go:95.2,99.20 3 0 -github.com/muety/wakapi/services/alias.go:102.60,103.24 1 0 -github.com/muety/wakapi/services/alias.go:103.24,105.3 1 0 -github.com/muety/wakapi/services/alias.go:106.2,109.16 2 0 -github.com/muety/wakapi/services/alias.go:109.16,111.3 1 0 -github.com/muety/wakapi/services/alias.go:113.2,115.12 2 0 -github.com/muety/wakapi/services/alias.go:118.69,122.28 3 0 -github.com/muety/wakapi/services/alias.go:122.28,123.21 1 0 -github.com/muety/wakapi/services/alias.go:123.21,125.4 1 0 -github.com/muety/wakapi/services/alias.go:126.3,127.16 2 0 -github.com/muety/wakapi/services/alias.go:130.2,133.16 2 0 -github.com/muety/wakapi/services/alias.go:133.16,134.29 1 0 -github.com/muety/wakapi/services/alias.go:134.29,136.4 1 0 -github.com/muety/wakapi/services/alias.go:139.2,139.31 1 0 -github.com/muety/wakapi/services/alias.go:139.31,141.3 1 0 -github.com/muety/wakapi/services/alias.go:143.2,143.12 1 0 -github.com/muety/wakapi/services/alias.go:146.74,147.14 1 0 -github.com/muety/wakapi/services/alias.go:147.14,148.57 1 0 -github.com/muety/wakapi/services/alias.go:148.57,152.4 3 0 -github.com/muety/wakapi/services/alias.go:153.8,154.57 1 0 -github.com/muety/wakapi/services/alias.go:154.57,156.48 2 0 -github.com/muety/wakapi/services/alias.go:156.48,157.26 1 0 -github.com/muety/wakapi/services/alias.go:157.26,159.6 1 0 -github.com/muety/wakapi/services/alias.go:161.4,161.52 1 0 -github.com/muety/wakapi/services/alias.go:166.116,167.32 1 0 -github.com/muety/wakapi/services/alias.go:167.32,169.3 1 0 -github.com/muety/wakapi/services/alias.go:170.2,170.49 1 0 -github.com/muety/wakapi/services/alias.go:170.49,172.47 2 0 -github.com/muety/wakapi/services/alias.go:172.47,173.16 1 0 -github.com/muety/wakapi/services/alias.go:173.16,175.5 1 0 -github.com/muety/wakapi/services/alias.go:177.3,177.30 1 0 -github.com/muety/wakapi/services/alias.go:178.8,180.3 1 0 -github.com/muety/wakapi/services/diagnostics.go:14.101,19.2 1 0 -github.com/muety/wakapi/services/diagnostics.go:21.101,24.2 2 0 -github.com/muety/wakapi/services/duration.go:18.78,24.2 2 1 -github.com/muety/wakapi/services/duration.go:26.123,29.42 2 1 -github.com/muety/wakapi/services/duration.go:29.42,30.90 1 1 -github.com/muety/wakapi/services/duration.go:30.90,32.4 1 1 -github.com/muety/wakapi/services/duration.go:35.2,36.16 2 1 -github.com/muety/wakapi/services/duration.go:36.16,38.3 1 0 -github.com/muety/wakapi/services/duration.go:43.2,48.31 4 1 -github.com/muety/wakapi/services/duration.go:48.31,49.42 1 1 -github.com/muety/wakapi/services/duration.go:49.42,50.12 1 1 -github.com/muety/wakapi/services/duration.go:53.3,54.34 2 1 -github.com/muety/wakapi/services/duration.go:54.34,56.4 1 1 -github.com/muety/wakapi/services/duration.go:58.3,58.62 1 1 -github.com/muety/wakapi/services/duration.go:58.62,60.4 1 1 -github.com/muety/wakapi/services/duration.go:62.3,62.20 1 1 -github.com/muety/wakapi/services/duration.go:62.20,64.12 2 1 -github.com/muety/wakapi/services/duration.go:67.3,77.15 3 1 -github.com/muety/wakapi/services/duration.go:77.15,79.4 1 0 -github.com/muety/wakapi/services/duration.go:80.3,86.84 2 1 -github.com/muety/wakapi/services/duration.go:86.84,88.41 2 1 -github.com/muety/wakapi/services/duration.go:88.41,90.5 1 1 -github.com/muety/wakapi/services/duration.go:91.4,91.15 1 1 -github.com/muety/wakapi/services/duration.go:92.9,94.4 1 1 -github.com/muety/wakapi/services/duration.go:96.3,96.10 1 1 -github.com/muety/wakapi/services/duration.go:99.2,101.31 2 1 -github.com/muety/wakapi/services/duration.go:101.31,102.26 1 1 -github.com/muety/wakapi/services/duration.go:102.26,107.23 1 1 -github.com/muety/wakapi/services/duration.go:107.23,109.5 1 1 -github.com/muety/wakapi/services/duration.go:110.4,110.36 1 1 -github.com/muety/wakapi/services/duration.go:114.2,114.49 1 1 -github.com/muety/wakapi/services/duration.go:114.49,116.3 1 1 -github.com/muety/wakapi/services/duration.go:118.2,118.32 1 1 -github.com/muety/wakapi/services/heartbeat.go:29.141,43.33 3 0 -github.com/muety/wakapi/services/heartbeat.go:43.33,44.31 1 0 -github.com/muety/wakapi/services/heartbeat.go:44.31,49.4 4 0 -github.com/muety/wakapi/services/heartbeat.go:52.2,52.12 1 0 -github.com/muety/wakapi/services/heartbeat.go:55.72,58.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:60.80,61.26 1 0 -github.com/muety/wakapi/services/heartbeat.go:61.26,63.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:65.2,69.32 3 0 -github.com/muety/wakapi/services/heartbeat.go:69.32,70.31 1 0 -github.com/muety/wakapi/services/heartbeat.go:70.31,74.4 3 0 -github.com/muety/wakapi/services/heartbeat.go:75.3,75.46 1 0 -github.com/muety/wakapi/services/heartbeat.go:78.2,79.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:79.16,81.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:82.2,82.12 1 0 -github.com/muety/wakapi/services/heartbeat.go:85.69,87.8 2 0 -github.com/muety/wakapi/services/heartbeat.go:87.8,89.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:90.2,91.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:91.16,93.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:94.2,94.19 1 0 -github.com/muety/wakapi/services/heartbeat.go:97.76,100.8 3 0 -github.com/muety/wakapi/services/heartbeat.go:100.8,102.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:103.2,104.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:104.16,106.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:107.2,107.19 1 0 -github.com/muety/wakapi/services/heartbeat.go:110.96,114.26 3 0 -github.com/muety/wakapi/services/heartbeat.go:114.26,117.9 3 0 -github.com/muety/wakapi/services/heartbeat.go:117.9,119.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:119.9,121.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:124.2,125.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:125.16,127.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:129.2,129.28 1 0 -github.com/muety/wakapi/services/heartbeat.go:129.28,133.3 3 0 -github.com/muety/wakapi/services/heartbeat.go:135.2,135.24 1 0 -github.com/muety/wakapi/services/heartbeat.go:138.111,140.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:140.16,142.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:143.2,143.43 1 0 -github.com/muety/wakapi/services/heartbeat.go:146.145,148.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:148.16,150.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:151.2,151.43 1 0 -github.com/muety/wakapi/services/heartbeat.go:154.92,156.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:158.116,160.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:162.78,164.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:166.100,168.54 2 0 -github.com/muety/wakapi/services/heartbeat.go:168.54,172.3 3 0 -github.com/muety/wakapi/services/heartbeat.go:174.2,175.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:175.16,177.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:179.2,180.28 2 0 -github.com/muety/wakapi/services/heartbeat.go:180.28,181.33 1 0 -github.com/muety/wakapi/services/heartbeat.go:181.33,183.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:186.2,187.22 2 0 -github.com/muety/wakapi/services/heartbeat.go:190.62,193.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:195.68,198.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:200.87,203.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:205.167,213.23 2 0 -github.com/muety/wakapi/services/heartbeat.go:213.23,216.3 2 0 -github.com/muety/wakapi/services/heartbeat.go:218.2,219.68 2 0 -github.com/muety/wakapi/services/heartbeat.go:219.68,221.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:221.8,221.161 1 0 -github.com/muety/wakapi/services/heartbeat.go:221.161,223.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:225.2,225.17 1 0 -github.com/muety/wakapi/services/heartbeat.go:225.17,227.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:229.2,230.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:230.16,232.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:234.2,236.21 2 0 -github.com/muety/wakapi/services/heartbeat.go:239.116,241.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:241.16,243.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:245.2,245.28 1 0 -github.com/muety/wakapi/services/heartbeat.go:245.28,247.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:249.2,249.24 1 0 -github.com/muety/wakapi/services/heartbeat.go:252.92,254.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:256.76,258.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:260.103,262.55 2 0 -github.com/muety/wakapi/services/heartbeat.go:262.55,268.36 4 0 -github.com/muety/wakapi/services/heartbeat.go:268.36,273.4 2 0 -github.com/muety/wakapi/services/heartbeat.go:277.85,285.2 7 0 -github.com/muety/wakapi/services/heartbeat.go:287.74,288.32 1 0 -github.com/muety/wakapi/services/heartbeat.go:288.32,293.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:296.72,298.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:300.58,302.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:304.60,306.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:308.94,310.48 2 0 -github.com/muety/wakapi/services/heartbeat.go:310.48,312.18 2 0 -github.com/muety/wakapi/services/heartbeat.go:312.18,314.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:316.2,316.18 1 0 -github.com/muety/wakapi/services/heartbeat.go:319.72,321.61 2 0 -github.com/muety/wakapi/services/heartbeat.go:321.61,324.3 2 0 -github.com/muety/wakapi/services/heartbeat.go:327.95,330.178 2 0 -github.com/muety/wakapi/services/heartbeat.go:330.178,331.73 1 0 -github.com/muety/wakapi/services/heartbeat.go:331.73,332.83 1 0 -github.com/muety/wakapi/services/heartbeat.go:332.83,335.5 2 0 -github.com/muety/wakapi/services/heartbeat.go:338.2,338.17 1 0 -github.com/muety/wakapi/services/heartbeat.go:338.17,340.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:22.144,31.2 1 0 -github.com/muety/wakapi/services/housekeeping.go:33.42,36.2 2 0 -github.com/muety/wakapi/services/housekeeping.go:38.94,40.36 2 0 -github.com/muety/wakapi/services/housekeeping.go:40.36,43.3 2 0 -github.com/muety/wakapi/services/housekeeping.go:46.2,46.73 1 0 -github.com/muety/wakapi/services/housekeeping.go:46.73,48.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:51.2,52.74 2 0 -github.com/muety/wakapi/services/housekeeping.go:52.74,54.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:56.2,56.12 1 0 -github.com/muety/wakapi/services/housekeeping.go:59.82,61.125 2 0 -github.com/muety/wakapi/services/housekeeping.go:61.125,63.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:64.2,64.12 1 0 -github.com/muety/wakapi/services/housekeeping.go:67.58,70.16 2 0 -github.com/muety/wakapi/services/housekeeping.go:70.16,73.3 2 0 -github.com/muety/wakapi/services/housekeeping.go:76.2,77.16 2 0 -github.com/muety/wakapi/services/housekeeping.go:77.16,80.3 2 0 -github.com/muety/wakapi/services/housekeeping.go:83.2,83.40 1 0 -github.com/muety/wakapi/services/housekeeping.go:83.40,85.24 1 0 -github.com/muety/wakapi/services/housekeeping.go:85.24,86.12 1 0 -github.com/muety/wakapi/services/housekeeping.go:89.3,89.81 1 0 -github.com/muety/wakapi/services/housekeeping.go:89.81,91.4 1 0 -github.com/muety/wakapi/services/housekeeping.go:92.3,92.34 1 0 -github.com/muety/wakapi/services/housekeeping.go:92.34,93.60 1 0 -github.com/muety/wakapi/services/housekeeping.go:93.60,95.5 1 0 -github.com/muety/wakapi/services/housekeeping.go:100.46,103.16 2 0 -github.com/muety/wakapi/services/housekeeping.go:103.16,106.3 2 0 -github.com/muety/wakapi/services/housekeeping.go:109.2,109.26 1 0 -github.com/muety/wakapi/services/housekeeping.go:109.26,111.30 1 0 -github.com/muety/wakapi/services/housekeeping.go:111.30,112.12 1 0 -github.com/muety/wakapi/services/housekeeping.go:115.3,116.34 2 0 -github.com/muety/wakapi/services/housekeeping.go:116.34,117.74 1 0 -github.com/muety/wakapi/services/housekeeping.go:117.74,119.5 1 0 -github.com/muety/wakapi/services/housekeeping.go:126.54,127.43 1 0 -github.com/muety/wakapi/services/housekeeping.go:127.43,129.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:131.2,134.16 3 0 -github.com/muety/wakapi/services/housekeeping.go:134.16,136.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:139.66,143.16 3 0 -github.com/muety/wakapi/services/housekeeping.go:143.16,145.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:148.2,148.93 1 0 -github.com/muety/wakapi/services/housekeeping.go:148.93,150.3 1 0 -github.com/muety/wakapi/services/key_value.go:14.89,19.2 1 0 -github.com/muety/wakapi/services/key_value.go:21.83,23.2 1 0 -github.com/muety/wakapi/services/key_value.go:25.90,27.2 1 0 -github.com/muety/wakapi/services/key_value.go:29.78,31.16 2 0 -github.com/muety/wakapi/services/key_value.go:31.16,36.3 1 0 -github.com/muety/wakapi/services/key_value.go:37.2,37.11 1 0 -github.com/muety/wakapi/services/key_value.go:40.72,42.2 1 0 -github.com/muety/wakapi/services/key_value.go:44.60,46.2 1 0 -github.com/muety/wakapi/services/language_mapping.go:18.118,24.2 1 0 -github.com/muety/wakapi/services/language_mapping.go:26.86,28.2 1 0 -github.com/muety/wakapi/services/language_mapping.go:30.96,31.53 1 0 -github.com/muety/wakapi/services/language_mapping.go:31.53,33.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:35.2,36.16 2 0 -github.com/muety/wakapi/services/language_mapping.go:36.16,38.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:39.2,40.22 2 0 -github.com/muety/wakapi/services/language_mapping.go:43.92,46.16 3 0 -github.com/muety/wakapi/services/language_mapping.go:46.16,48.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:50.2,50.33 1 0 -github.com/muety/wakapi/services/language_mapping.go:50.33,52.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:53.2,53.22 1 0 -github.com/muety/wakapi/services/language_mapping.go:56.109,58.16 2 0 -github.com/muety/wakapi/services/language_mapping.go:58.16,60.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:62.2,63.20 2 0 -github.com/muety/wakapi/services/language_mapping.go:66.82,67.26 1 0 -github.com/muety/wakapi/services/language_mapping.go:67.26,69.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:70.2,72.12 3 0 -github.com/muety/wakapi/services/language_mapping.go:75.74,78.2 1 0 -github.com/muety/wakapi/services/leaderboard.go:30.159,43.33 3 0 -github.com/muety/wakapi/services/leaderboard.go:43.33,44.31 1 0 -github.com/muety/wakapi/services/leaderboard.go:44.31,50.18 3 0 -github.com/muety/wakapi/services/leaderboard.go:50.18,52.5 1 0 -github.com/muety/wakapi/services/leaderboard.go:54.4,54.41 1 0 -github.com/muety/wakapi/services/leaderboard.go:54.41,57.5 2 0 -github.com/muety/wakapi/services/leaderboard.go:57.10,57.48 1 0 -github.com/muety/wakapi/services/leaderboard.go:57.48,59.64 2 0 -github.com/muety/wakapi/services/leaderboard.go:59.64,61.6 1 0 -github.com/muety/wakapi/services/leaderboard.go:62.5,62.22 1 0 -github.com/muety/wakapi/services/leaderboard.go:67.2,67.12 1 0 -github.com/muety/wakapi/services/leaderboard.go:70.43,73.21 2 0 -github.com/muety/wakapi/services/leaderboard.go:73.21,75.17 2 0 -github.com/muety/wakapi/services/leaderboard.go:75.17,78.4 2 0 -github.com/muety/wakapi/services/leaderboard.go:79.3,79.91 1 0 -github.com/muety/wakapi/services/leaderboard.go:82.2,82.76 1 0 -github.com/muety/wakapi/services/leaderboard.go:82.76,83.77 1 0 -github.com/muety/wakapi/services/leaderboard.go:83.77,85.4 1 0 -github.com/muety/wakapi/services/leaderboard.go:89.121,92.29 2 0 -github.com/muety/wakapi/services/leaderboard.go:92.29,93.83 1 0 -github.com/muety/wakapi/services/leaderboard.go:93.83,95.12 2 0 -github.com/muety/wakapi/services/leaderboard.go:98.3,99.17 2 0 -github.com/muety/wakapi/services/leaderboard.go:99.17,101.12 2 0 -github.com/muety/wakapi/services/leaderboard.go:104.3,104.85 1 0 -github.com/muety/wakapi/services/leaderboard.go:104.85,106.12 2 0 -github.com/muety/wakapi/services/leaderboard.go:109.3,109.25 1 0 -github.com/muety/wakapi/services/leaderboard.go:109.25,111.18 2 0 -github.com/muety/wakapi/services/leaderboard.go:111.18,113.13 2 0 -github.com/muety/wakapi/services/leaderboard.go:116.4,116.23 1 0 -github.com/muety/wakapi/services/leaderboard.go:116.23,117.13 1 0 -github.com/muety/wakapi/services/leaderboard.go:120.4,120.60 1 0 -github.com/muety/wakapi/services/leaderboard.go:120.60,122.13 2 0 -github.com/muety/wakapi/services/leaderboard.go:127.2,129.12 3 0 -github.com/muety/wakapi/services/leaderboard.go:132.77,135.2 2 0 -github.com/muety/wakapi/services/leaderboard.go:137.60,140.52 2 0 -github.com/muety/wakapi/services/leaderboard.go:140.52,142.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:144.2,145.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:145.16,147.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:148.2,148.19 1 0 -github.com/muety/wakapi/services/leaderboard.go:151.153,153.2 1 0 -github.com/muety/wakapi/services/leaderboard.go:155.144,157.2 1 0 -github.com/muety/wakapi/services/leaderboard.go:159.174,162.52 2 0 -github.com/muety/wakapi/services/leaderboard.go:162.52,164.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:166.2,167.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:167.16,169.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:171.2,171.18 1 0 -github.com/muety/wakapi/services/leaderboard.go:171.18,173.17 2 0 -github.com/muety/wakapi/services/leaderboard.go:173.17,175.4 1 0 -github.com/muety/wakapi/services/leaderboard.go:175.9,176.31 1 0 -github.com/muety/wakapi/services/leaderboard.go:176.31,177.40 1 0 -github.com/muety/wakapi/services/leaderboard.go:177.40,179.6 1 0 -github.com/muety/wakapi/services/leaderboard.go:184.2,185.19 2 0 -github.com/muety/wakapi/services/leaderboard.go:188.165,191.52 2 0 -github.com/muety/wakapi/services/leaderboard.go:191.52,193.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:195.2,196.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:196.16,198.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:200.2,200.17 1 0 -github.com/muety/wakapi/services/leaderboard.go:200.17,202.17 2 0 -github.com/muety/wakapi/services/leaderboard.go:202.17,204.4 1 0 -github.com/muety/wakapi/services/leaderboard.go:204.9,205.31 1 0 -github.com/muety/wakapi/services/leaderboard.go:205.31,207.5 1 0 -github.com/muety/wakapi/services/leaderboard.go:211.2,212.19 2 0 -github.com/muety/wakapi/services/leaderboard.go:215.129,217.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:217.16,219.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:221.2,222.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:222.16,224.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:227.2,233.8 2 0 -github.com/muety/wakapi/services/leaderboard.go:236.151,238.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:238.16,240.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:242.2,243.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:243.16,245.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:247.2,250.42 3 0 -github.com/muety/wakapi/services/leaderboard.go:250.42,260.3 2 0 -github.com/muety/wakapi/services/leaderboard.go:262.2,262.19 1 0 -github.com/muety/wakapi/services/leaderboard.go:265.131,267.47 2 0 -github.com/muety/wakapi/services/leaderboard.go:267.47,269.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:270.2,270.23 1 0 -github.com/muety/wakapi/services/leaderboard.go:270.23,272.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:273.2,273.10 1 0 -github.com/muety/wakapi/services/misc.go:44.188,56.2 1 0 -github.com/muety/wakapi/services/misc.go:58.36,60.95 2 0 -github.com/muety/wakapi/services/misc.go:60.95,62.3 1 0 -github.com/muety/wakapi/services/misc.go:64.2,65.111 2 0 -github.com/muety/wakapi/services/misc.go:65.111,67.3 1 0 -github.com/muety/wakapi/services/misc.go:69.2,69.128 1 0 -github.com/muety/wakapi/services/misc.go:69.128,71.125 2 0 -github.com/muety/wakapi/services/misc.go:71.125,73.4 1 0 -github.com/muety/wakapi/services/misc.go:77.2,77.33 1 0 -github.com/muety/wakapi/services/misc.go:77.33,78.71 1 0 -github.com/muety/wakapi/services/misc.go:78.71,80.4 1 0 -github.com/muety/wakapi/services/misc.go:82.2,82.33 1 0 -github.com/muety/wakapi/services/misc.go:82.33,83.80 1 0 -github.com/muety/wakapi/services/misc.go:83.80,85.4 1 0 -github.com/muety/wakapi/services/misc.go:87.2,87.170 1 0 -github.com/muety/wakapi/services/misc.go:87.170,88.83 1 0 -github.com/muety/wakapi/services/misc.go:88.83,90.4 1 0 -github.com/muety/wakapi/services/misc.go:94.42,96.36 2 0 -github.com/muety/wakapi/services/misc.go:96.36,98.3 1 0 -github.com/muety/wakapi/services/misc.go:99.2,102.16 3 0 -github.com/muety/wakapi/services/misc.go:102.16,105.3 2 0 -github.com/muety/wakapi/services/misc.go:107.2,111.26 4 0 -github.com/muety/wakapi/services/misc.go:111.26,113.46 2 0 -github.com/muety/wakapi/services/misc.go:113.46,116.4 2 0 -github.com/muety/wakapi/services/misc.go:116.18,119.4 2 0 -github.com/muety/wakapi/services/misc.go:123.2,123.30 1 0 -github.com/muety/wakapi/services/misc.go:123.30,124.58 1 0 -github.com/muety/wakapi/services/misc.go:124.58,128.19 1 0 -github.com/muety/wakapi/services/misc.go:128.19,130.5 1 0 -github.com/muety/wakapi/services/misc.go:132.4,135.19 1 0 -github.com/muety/wakapi/services/misc.go:135.19,137.5 1 0 -github.com/muety/wakapi/services/misc.go:138.9,140.4 1 0 -github.com/muety/wakapi/services/misc.go:144.51,147.45 2 0 -github.com/muety/wakapi/services/misc.go:147.45,148.41 1 0 -github.com/muety/wakapi/services/misc.go:148.41,151.4 2 0 -github.com/muety/wakapi/services/misc.go:152.3,155.17 3 0 -github.com/muety/wakapi/services/misc.go:155.17,158.4 2 0 -github.com/muety/wakapi/services/misc.go:160.3,160.33 1 0 -github.com/muety/wakapi/services/misc.go:160.33,161.31 1 0 -github.com/muety/wakapi/services/misc.go:161.31,162.13 1 0 -github.com/muety/wakapi/services/misc.go:165.4,169.19 2 0 -github.com/muety/wakapi/services/misc.go:169.19,171.5 1 0 -github.com/muety/wakapi/services/misc.go:173.17,175.3 1 0 -github.com/muety/wakapi/services/misc.go:186.54,187.82 1 0 -github.com/muety/wakapi/services/misc.go:187.82,189.3 1 0 -github.com/muety/wakapi/services/misc.go:191.2,195.16 4 0 -github.com/muety/wakapi/services/misc.go:195.16,198.3 2 0 -github.com/muety/wakapi/services/misc.go:200.2,201.104 2 0 -github.com/muety/wakapi/services/misc.go:201.104,202.122 1 0 -github.com/muety/wakapi/services/misc.go:202.122,204.4 1 0 -github.com/muety/wakapi/services/misc.go:205.8,208.3 2 0 -github.com/muety/wakapi/services/misc.go:210.2,210.26 1 0 -github.com/muety/wakapi/services/misc.go:210.26,211.49 1 0 -github.com/muety/wakapi/services/misc.go:211.49,213.4 1 0 -github.com/muety/wakapi/services/misc.go:215.3,216.65 2 0 -github.com/muety/wakapi/services/misc.go:216.65,218.130 1 0 -github.com/muety/wakapi/services/misc.go:218.130,220.5 1 0 -github.com/muety/wakapi/services/misc.go:220.10,220.25 1 0 -github.com/muety/wakapi/services/misc.go:220.25,223.5 2 0 -github.com/muety/wakapi/services/misc.go:230.3,230.137 1 0 -github.com/muety/wakapi/services/misc.go:230.137,231.12 1 0 -github.com/muety/wakapi/services/misc.go:234.3,235.89 2 0 -github.com/muety/wakapi/services/misc.go:235.89,237.4 1 0 -github.com/muety/wakapi/services/misc.go:241.73,243.16 2 0 -github.com/muety/wakapi/services/misc.go:243.16,246.3 2 0 -github.com/muety/wakapi/services/misc.go:247.2,247.27 1 0 -github.com/muety/wakapi/services/misc.go:250.99,252.33 2 0 -github.com/muety/wakapi/services/misc.go:252.33,256.86 3 0 -github.com/muety/wakapi/services/misc.go:256.86,259.4 2 0 -github.com/muety/wakapi/services/misc.go:261.3,264.18 1 0 -github.com/muety/wakapi/services/misc.go:264.18,266.4 1 0 -github.com/muety/wakapi/services/misc.go:270.53,272.16 2 0 -github.com/muety/wakapi/services/misc.go:272.16,274.3 1 0 -github.com/muety/wakapi/services/misc.go:275.2,275.25 1 0 -github.com/muety/wakapi/services/misc.go:278.53,280.16 2 0 -github.com/muety/wakapi/services/misc.go:280.16,282.3 1 0 -github.com/muety/wakapi/services/misc.go:283.2,283.25 1 0 -github.com/muety/wakapi/services/misc.go:286.64,288.16 2 0 -github.com/muety/wakapi/services/misc.go:288.16,290.3 1 0 -github.com/muety/wakapi/services/misc.go:291.2,291.25 1 0 -github.com/muety/wakapi/services/project_label.go:21.111,28.2 1 0 -github.com/muety/wakapi/services/project_label.go:30.80,32.2 1 0 -github.com/muety/wakapi/services/project_label.go:34.90,35.51 1 0 -github.com/muety/wakapi/services/project_label.go:35.51,37.3 1 0 -github.com/muety/wakapi/services/project_label.go:39.2,40.16 2 0 -github.com/muety/wakapi/services/project_label.go:40.16,42.3 1 0 -github.com/muety/wakapi/services/project_label.go:43.2,44.20 2 0 -github.com/muety/wakapi/services/project_label.go:48.108,50.16 2 0 -github.com/muety/wakapi/services/project_label.go:50.16,52.3 1 0 -github.com/muety/wakapi/services/project_label.go:53.2,53.112 1 0 -github.com/muety/wakapi/services/project_label.go:53.112,55.3 1 0 -github.com/muety/wakapi/services/project_label.go:56.2,56.26 1 0 -github.com/muety/wakapi/services/project_label.go:60.116,62.16 2 0 -github.com/muety/wakapi/services/project_label.go:62.16,64.3 1 0 -github.com/muety/wakapi/services/project_label.go:65.2,65.112 1 0 -github.com/muety/wakapi/services/project_label.go:65.112,67.3 1 0 -github.com/muety/wakapi/services/project_label.go:68.2,68.26 1 0 -github.com/muety/wakapi/services/project_label.go:71.98,73.16 2 0 -github.com/muety/wakapi/services/project_label.go:73.16,75.3 1 0 -github.com/muety/wakapi/services/project_label.go:77.2,79.20 3 0 -github.com/muety/wakapi/services/project_label.go:82.74,83.24 1 0 -github.com/muety/wakapi/services/project_label.go:83.24,85.3 1 0 -github.com/muety/wakapi/services/project_label.go:86.2,89.12 4 0 -github.com/muety/wakapi/services/project_label.go:92.89,94.14 2 0 -github.com/muety/wakapi/services/project_label.go:94.14,96.3 1 0 -github.com/muety/wakapi/services/project_label.go:97.2,100.4 1 0 -github.com/muety/wakapi/services/report.go:33.122,46.2 2 0 -github.com/muety/wakapi/services/report.go:48.38,51.45 2 0 -github.com/muety/wakapi/services/report.go:51.45,52.46 1 0 -github.com/muety/wakapi/services/report.go:52.46,55.57 2 0 -github.com/muety/wakapi/services/report.go:55.57,57.5 1 0 -github.com/muety/wakapi/services/report.go:60.4,60.58 1 0 -github.com/muety/wakapi/services/report.go:60.58,63.5 2 0 -github.com/muety/wakapi/services/report.go:64.18,66.4 1 0 -github.com/muety/wakapi/services/report.go:69.2,69.49 1 0 -github.com/muety/wakapi/services/report.go:69.49,72.17 2 0 -github.com/muety/wakapi/services/report.go:72.17,75.4 2 0 -github.com/muety/wakapi/services/report.go:78.3,78.78 1 0 -github.com/muety/wakapi/services/report.go:78.78,80.4 1 0 -github.com/muety/wakapi/services/report.go:83.3,84.27 2 0 -github.com/muety/wakapi/services/report.go:84.27,86.4 1 0 -github.com/muety/wakapi/services/report.go:89.2,89.16 1 0 -github.com/muety/wakapi/services/report.go:89.16,91.3 1 0 -github.com/muety/wakapi/services/report.go:94.87,95.22 1 0 -github.com/muety/wakapi/services/report.go:95.22,98.3 2 0 -github.com/muety/wakapi/services/report.go:100.2,106.16 5 0 -github.com/muety/wakapi/services/report.go:106.16,109.3 2 0 -github.com/muety/wakapi/services/report.go:112.2,115.40 3 0 -github.com/muety/wakapi/services/report.go:115.40,118.17 3 0 -github.com/muety/wakapi/services/report.go:118.17,120.9 2 0 -github.com/muety/wakapi/services/report.go:122.3,124.30 3 0 -github.com/muety/wakapi/services/report.go:127.2,135.65 2 0 -github.com/muety/wakapi/services/report.go:135.65,138.3 2 0 -github.com/muety/wakapi/services/report.go:140.2,141.12 2 0 -github.com/muety/wakapi/services/summary.go:28.189,40.33 3 1 -github.com/muety/wakapi/services/summary.go:40.33,41.31 1 1 -github.com/muety/wakapi/services/summary.go:41.31,43.4 1 0 -github.com/muety/wakapi/services/summary.go:46.2,46.12 1 1 -github.com/muety/wakapi/services/summary.go:52.167,55.82 2 1 -github.com/muety/wakapi/services/summary.go:55.82,56.67 1 1 -github.com/muety/wakapi/services/summary.go:56.67,58.4 1 0 -github.com/muety/wakapi/services/summary.go:62.2,67.20 4 1 -github.com/muety/wakapi/services/summary.go:67.20,70.3 2 1 -github.com/muety/wakapi/services/summary.go:73.2,73.65 1 1 -github.com/muety/wakapi/services/summary.go:73.65,75.3 1 0 -github.com/muety/wakapi/services/summary.go:78.2,79.16 2 1 -github.com/muety/wakapi/services/summary.go:79.16,81.3 1 0 -github.com/muety/wakapi/services/summary.go:84.2,89.79 5 1 -github.com/muety/wakapi/services/summary.go:89.79,92.3 2 1 -github.com/muety/wakapi/services/summary.go:94.2,95.30 2 1 -github.com/muety/wakapi/services/summary.go:98.126,102.41 2 1 -github.com/muety/wakapi/services/summary.go:102.41,105.17 2 1 -github.com/muety/wakapi/services/summary.go:105.17,107.4 1 1 -github.com/muety/wakapi/services/summary.go:107.9,109.4 1 0 -github.com/muety/wakapi/services/summary.go:113.2,114.44 2 1 -github.com/muety/wakapi/services/summary.go:114.44,115.87 1 1 -github.com/muety/wakapi/services/summary.go:115.87,116.71 1 1 -github.com/muety/wakapi/services/summary.go:116.71,120.13 1 0 -github.com/muety/wakapi/services/summary.go:122.4,122.36 1 1 -github.com/muety/wakapi/services/summary.go:123.9,125.4 1 0 -github.com/muety/wakapi/services/summary.go:129.2,131.16 3 1 -github.com/muety/wakapi/services/summary.go:131.16,133.3 1 0 -github.com/muety/wakapi/services/summary.go:135.2,135.30 1 1 -github.com/muety/wakapi/services/summary.go:138.127,141.16 2 1 -github.com/muety/wakapi/services/summary.go:141.16,143.3 1 0 -github.com/muety/wakapi/services/summary.go:145.2,146.50 2 1 -github.com/muety/wakapi/services/summary.go:146.50,149.3 2 1 -github.com/muety/wakapi/services/summary.go:151.2,153.26 3 1 -github.com/muety/wakapi/services/summary.go:153.26,155.3 1 1 -github.com/muety/wakapi/services/summary.go:158.2,166.34 8 1 -github.com/muety/wakapi/services/summary.go:166.34,168.20 2 1 -github.com/muety/wakapi/services/summary.go:169.30,170.29 1 1 -github.com/muety/wakapi/services/summary.go:171.31,172.30 1 1 -github.com/muety/wakapi/services/summary.go:173.29,174.28 1 1 -github.com/muety/wakapi/services/summary.go:175.25,176.24 1 1 -github.com/muety/wakapi/services/summary.go:177.30,178.29 1 1 -github.com/muety/wakapi/services/summary.go:179.29,180.28 1 1 -github.com/muety/wakapi/services/summary.go:181.29,182.28 1 1 -github.com/muety/wakapi/services/summary.go:186.2,186.25 1 1 -github.com/muety/wakapi/services/summary.go:186.25,189.3 2 1 -github.com/muety/wakapi/services/summary.go:191.2,205.30 2 1 -github.com/muety/wakapi/services/summary.go:210.76,212.2 1 0 -github.com/muety/wakapi/services/summary.go:214.62,217.2 2 0 -github.com/muety/wakapi/services/summary.go:219.81,222.2 2 0 -github.com/muety/wakapi/services/summary.go:224.66,227.2 2 0 -github.com/muety/wakapi/services/summary.go:231.125,234.30 2 1 -github.com/muety/wakapi/services/summary.go:234.30,236.3 1 1 -github.com/muety/wakapi/services/summary.go:238.2,239.28 2 1 -github.com/muety/wakapi/services/summary.go:239.28,245.3 1 1 -github.com/muety/wakapi/services/summary.go:247.2,247.40 1 1 -github.com/muety/wakapi/services/summary.go:247.40,249.3 1 1 -github.com/muety/wakapi/services/summary.go:251.2,251.67 1 1 -github.com/muety/wakapi/services/summary.go:254.87,255.72 1 1 -github.com/muety/wakapi/services/summary.go:255.72,261.3 1 1 -github.com/muety/wakapi/services/summary.go:263.2,264.16 2 1 -github.com/muety/wakapi/services/summary.go:264.16,267.3 2 0 -github.com/muety/wakapi/services/summary.go:269.2,270.37 2 1 -github.com/muety/wakapi/services/summary.go:270.37,272.3 1 1 -github.com/muety/wakapi/services/summary.go:274.2,276.30 3 1 -github.com/muety/wakapi/services/summary.go:276.30,277.48 1 1 -github.com/muety/wakapi/services/summary.go:277.48,278.41 1 1 -github.com/muety/wakapi/services/summary.go:278.41,280.5 1 1 -github.com/muety/wakapi/services/summary.go:281.4,282.29 2 1 -github.com/muety/wakapi/services/summary.go:287.2,288.29 2 1 -github.com/muety/wakapi/services/summary.go:288.29,289.18 1 1 -github.com/muety/wakapi/services/summary.go:289.18,291.4 1 1 -github.com/muety/wakapi/services/summary.go:293.2,294.16 2 1 -github.com/muety/wakapi/services/summary.go:297.97,302.24 1 1 -github.com/muety/wakapi/services/summary.go:302.24,304.3 1 0 -github.com/muety/wakapi/services/summary.go:306.2,323.30 5 1 -github.com/muety/wakapi/services/summary.go:323.30,325.41 2 1 -github.com/muety/wakapi/services/summary.go:325.41,327.12 2 1 -github.com/muety/wakapi/services/summary.go:330.3,330.12 1 1 -github.com/muety/wakapi/services/summary.go:330.12,331.70 1 1 -github.com/muety/wakapi/services/summary.go:331.70,333.5 1 0 -github.com/muety/wakapi/services/summary.go:336.3,336.38 1 1 -github.com/muety/wakapi/services/summary.go:336.38,338.4 1 0 -github.com/muety/wakapi/services/summary.go:340.3,340.37 1 1 -github.com/muety/wakapi/services/summary.go:340.37,342.4 1 1 -github.com/muety/wakapi/services/summary.go:344.3,344.34 1 1 -github.com/muety/wakapi/services/summary.go:344.34,346.4 1 1 -github.com/muety/wakapi/services/summary.go:348.3,358.25 10 1 -github.com/muety/wakapi/services/summary.go:361.2,364.26 3 1 -github.com/muety/wakapi/services/summary.go:367.127,371.32 2 1 -github.com/muety/wakapi/services/summary.go:371.32,373.3 1 1 -github.com/muety/wakapi/services/summary.go:375.2,375.27 1 1 -github.com/muety/wakapi/services/summary.go:375.27,376.37 1 1 -github.com/muety/wakapi/services/summary.go:376.37,378.4 1 1 -github.com/muety/wakapi/services/summary.go:378.9,380.4 1 1 -github.com/muety/wakapi/services/summary.go:383.2,385.26 3 1 -github.com/muety/wakapi/services/summary.go:385.26,388.3 2 1 -github.com/muety/wakapi/services/summary.go:390.2,390.43 1 1 -github.com/muety/wakapi/services/summary.go:390.43,392.3 1 1 -github.com/muety/wakapi/services/summary.go:394.2,394.17 1 1 -github.com/muety/wakapi/services/summary.go:397.130,398.25 1 1 -github.com/muety/wakapi/services/summary.go:398.25,400.3 1 0 -github.com/muety/wakapi/services/summary.go:402.2,405.44 2 1 -github.com/muety/wakapi/services/summary.go:405.44,407.3 1 1 -github.com/muety/wakapi/services/summary.go:410.2,410.40 1 1 -github.com/muety/wakapi/services/summary.go:410.40,412.51 2 1 -github.com/muety/wakapi/services/summary.go:412.51,413.12 1 1 -github.com/muety/wakapi/services/summary.go:416.3,423.15 3 1 -github.com/muety/wakapi/services/summary.go:423.15,429.38 3 1 -github.com/muety/wakapi/services/summary.go:429.38,431.5 1 0 -github.com/muety/wakapi/services/summary.go:435.3,435.22 1 1 -github.com/muety/wakapi/services/summary.go:435.22,437.4 1 1 -github.com/muety/wakapi/services/summary.go:441.2,441.54 1 1 -github.com/muety/wakapi/services/summary.go:441.54,443.3 1 1 -github.com/muety/wakapi/services/summary.go:445.2,445.18 1 1 -github.com/muety/wakapi/services/summary.go:448.59,450.2 1 1 -github.com/muety/wakapi/services/summary.go:452.63,453.37 1 0 -github.com/muety/wakapi/services/summary.go:453.37,454.36 1 0 -github.com/muety/wakapi/services/summary.go:454.36,456.4 1 0 -github.com/muety/wakapi/services/summary.go:460.85,461.40 1 1 -github.com/muety/wakapi/services/summary.go:461.40,464.3 2 1 -github.com/muety/wakapi/services/summary.go:467.99,468.42 1 1 -github.com/muety/wakapi/services/summary.go:468.42,470.17 2 1 -github.com/muety/wakapi/services/summary.go:470.17,472.4 1 0 -github.com/muety/wakapi/services/summary.go:473.3,474.29 2 1 -github.com/muety/wakapi/services/summary.go:474.29,476.4 1 1 -github.com/muety/wakapi/services/summary.go:477.3,477.22 1 1 -github.com/muety/wakapi/services/summary.go:481.114,482.33 1 1 -github.com/muety/wakapi/services/summary.go:482.33,485.17 3 1 -github.com/muety/wakapi/services/summary.go:485.17,486.33 1 1 -github.com/muety/wakapi/services/summary.go:486.33,488.5 1 1 -github.com/muety/wakapi/services/summary.go:490.3,491.28 2 1 -github.com/muety/wakapi/services/summary.go:491.28,493.4 1 1 -github.com/muety/wakapi/services/summary.go:494.3,494.24 1 1 -github.com/muety/wakapi/services/user.go:27.99,37.33 3 0 -github.com/muety/wakapi/services/user.go:37.33,38.31 1 0 -github.com/muety/wakapi/services/user.go:38.31,44.73 4 0 -github.com/muety/wakapi/services/user.go:44.73,46.5 1 0 -github.com/muety/wakapi/services/user.go:48.4,48.24 1 0 -github.com/muety/wakapi/services/user.go:48.24,49.80 1 0 -github.com/muety/wakapi/services/user.go:49.80,51.6 1 0 -github.com/muety/wakapi/services/user.go:51.11,53.6 1 0 -github.com/muety/wakapi/services/user.go:58.2,58.12 1 0 -github.com/muety/wakapi/services/user.go:61.74,62.18 1 0 -github.com/muety/wakapi/services/user.go:62.18,64.3 1 0 -github.com/muety/wakapi/services/user.go:66.2,66.40 1 0 -github.com/muety/wakapi/services/user.go:66.40,68.3 1 0 -github.com/muety/wakapi/services/user.go:70.2,71.16 2 0 -github.com/muety/wakapi/services/user.go:71.16,73.3 1 0 -github.com/muety/wakapi/services/user.go:75.2,76.15 2 0 -github.com/muety/wakapi/services/user.go:79.72,80.15 1 0 -github.com/muety/wakapi/services/user.go:80.15,82.3 1 0 -github.com/muety/wakapi/services/user.go:84.2,84.37 1 0 -github.com/muety/wakapi/services/user.go:84.37,86.3 1 0 -github.com/muety/wakapi/services/user.go:88.2,89.16 2 0 -github.com/muety/wakapi/services/user.go:89.16,91.3 1 0 -github.com/muety/wakapi/services/user.go:93.2,94.15 2 0 -github.com/muety/wakapi/services/user.go:97.76,98.17 1 0 -github.com/muety/wakapi/services/user.go:98.17,100.3 1 0 -github.com/muety/wakapi/services/user.go:101.2,101.58 1 0 -github.com/muety/wakapi/services/user.go:104.86,105.22 1 0 -github.com/muety/wakapi/services/user.go:105.22,107.3 1 0 -github.com/muety/wakapi/services/user.go:108.2,108.68 1 0 -github.com/muety/wakapi/services/user.go:111.92,112.22 1 0 -github.com/muety/wakapi/services/user.go:112.22,114.3 1 0 -github.com/muety/wakapi/services/user.go:115.2,115.74 1 0 -github.com/muety/wakapi/services/user.go:118.58,120.2 1 0 -github.com/muety/wakapi/services/user.go:122.71,124.2 1 0 -github.com/muety/wakapi/services/user.go:126.86,128.16 2 0 -github.com/muety/wakapi/services/user.go:128.16,130.3 1 0 -github.com/muety/wakapi/services/user.go:131.2,131.112 1 0 -github.com/muety/wakapi/services/user.go:131.112,133.3 1 0 -github.com/muety/wakapi/services/user.go:136.86,138.2 1 0 -github.com/muety/wakapi/services/user.go:140.94,142.2 1 0 -github.com/muety/wakapi/services/user.go:144.71,146.12 2 0 -github.com/muety/wakapi/services/user.go:146.12,148.3 1 0 -github.com/muety/wakapi/services/user.go:150.2,151.42 2 0 -github.com/muety/wakapi/services/user.go:151.42,153.3 1 0 -github.com/muety/wakapi/services/user.go:155.2,156.16 2 0 -github.com/muety/wakapi/services/user.go:156.16,158.3 1 0 -github.com/muety/wakapi/services/user.go:160.2,161.21 2 0 -github.com/muety/wakapi/services/user.go:164.48,166.2 1 0 -github.com/muety/wakapi/services/user.go:168.102,178.95 2 0 -github.com/muety/wakapi/services/user.go:178.95,180.3 1 0 -github.com/muety/wakapi/services/user.go:180.8,182.3 1 0 -github.com/muety/wakapi/services/user.go:184.2,184.38 1 0 -github.com/muety/wakapi/services/user.go:187.73,191.2 3 0 -github.com/muety/wakapi/services/user.go:193.78,197.2 3 0 -github.com/muety/wakapi/services/user.go:199.122,202.35 2 0 -github.com/muety/wakapi/services/user.go:202.35,203.89 1 0 -github.com/muety/wakapi/services/user.go:203.89,205.4 1 0 -github.com/muety/wakapi/services/user.go:208.2,208.35 1 0 -github.com/muety/wakapi/services/user.go:208.35,210.3 1 0 -github.com/muety/wakapi/services/user.go:212.2,212.18 1 0 -github.com/muety/wakapi/services/user.go:215.85,217.2 1 0 -github.com/muety/wakapi/services/user.go:219.57,227.2 5 0 -github.com/muety/wakapi/services/user.go:229.38,231.2 1 0 -github.com/muety/wakapi/services/user.go:233.55,235.2 1 0 -github.com/muety/wakapi/services/user.go:237.57,242.2 1 0 -github.com/muety/wakapi/services/user.go:244.57,249.2 1 0 github.com/muety/wakapi/models/alias.go:18.32,20.2 1 0 github.com/muety/wakapi/models/alias.go:22.37,23.35 1 0 github.com/muety/wakapi/models/alias.go:23.35,24.18 1 0 @@ -1987,3 +778,1230 @@ github.com/muety/wakapi/models/user.go:191.45,193.2 1 0 github.com/muety/wakapi/models/user.go:195.45,197.2 1 0 github.com/muety/wakapi/models/user.go:200.39,202.2 1 0 github.com/muety/wakapi/models/user.go:204.39,207.2 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:20.13,23.2 2 1 +github.com/muety/wakapi/routes/utils/badge_utils.go:25.129,27.76 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:27.76,29.3 1 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:31.2,32.72 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:32.72,33.61 1 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:33.61,35.4 1 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:38.2,46.140 4 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:46.140,48.3 1 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:50.2,52.22 3 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:53.17,55.68 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:56.12,58.63 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:59.16,61.67 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:62.18,64.69 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:65.17,67.68 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:68.15,70.66 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:72.10,75.30 2 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:78.2,78.19 1 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:78.19,80.3 1 0 +github.com/muety/wakapi/routes/utils/badge_utils.go:82.2,82.31 1 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:11.68,13.16 2 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:13.16,15.3 1 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:17.2,18.16 2 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:18.16,20.3 1 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:22.2,22.35 1 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:25.65,33.48 6 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:33.48,35.3 1 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:37.2,37.24 1 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:40.67,48.47 6 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:48.47,50.3 1 0 +github.com/muety/wakapi/routes/utils/heartbeat_utils.go:52.2,52.45 1 0 +github.com/muety/wakapi/routes/utils/messages.go:9.71,11.2 1 0 +github.com/muety/wakapi/routes/utils/messages.go:13.73,15.2 1 0 +github.com/muety/wakapi/routes/utils/messages.go:17.97,19.57 2 0 +github.com/muety/wakapi/routes/utils/messages.go:19.57,21.3 1 0 +github.com/muety/wakapi/routes/utils/messages.go:22.2,22.65 1 0 +github.com/muety/wakapi/routes/utils/messages.go:22.65,24.3 1 0 +github.com/muety/wakapi/routes/utils/messages.go:25.2,26.11 2 0 +github.com/muety/wakapi/routes/utils/messages.go:29.78,33.2 3 0 +github.com/muety/wakapi/routes/utils/project_utils.go:15.144,18.16 2 0 +github.com/muety/wakapi/routes/utils/project_utils.go:18.16,20.3 1 0 +github.com/muety/wakapi/routes/utils/project_utils.go:23.2,24.16 2 0 +github.com/muety/wakapi/routes/utils/project_utils.go:24.16,26.3 1 0 +github.com/muety/wakapi/routes/utils/project_utils.go:28.2,32.35 2 0 +github.com/muety/wakapi/routes/utils/project_utils.go:32.35,35.3 2 0 +github.com/muety/wakapi/routes/utils/project_utils.go:37.2,39.20 3 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:12.98,14.16 2 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:14.16,16.3 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:17.2,17.51 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:20.119,22.22 2 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:22.22,24.3 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:26.2,34.16 2 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:34.16,36.3 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:38.2,41.36 3 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:44.90,46.32 2 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:46.32,47.50 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:47.50,49.4 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:51.2,51.15 1 0 +github.com/muety/wakapi/routes/utils/user_utils.go:15.139,16.68 1 1 +github.com/muety/wakapi/routes/utils/user_utils.go:16.68,21.3 4 1 +github.com/muety/wakapi/routes/utils/user_utils.go:23.2,24.21 2 1 +github.com/muety/wakapi/routes/utils/user_utils.go:24.21,26.3 1 1 +github.com/muety/wakapi/routes/utils/user_utils.go:28.2,29.27 2 1 +github.com/muety/wakapi/routes/utils/user_utils.go:29.27,31.3 1 1 +github.com/muety/wakapi/routes/utils/user_utils.go:31.8,31.35 1 1 +github.com/muety/wakapi/routes/utils/user_utils.go:31.35,33.3 1 1 +github.com/muety/wakapi/routes/utils/user_utils.go:35.2,35.63 1 1 +github.com/muety/wakapi/routes/utils/user_utils.go:35.63,37.3 1 1 +github.com/muety/wakapi/routes/utils/user_utils.go:39.2,40.16 2 1 +github.com/muety/wakapi/routes/utils/user_utils.go:40.16,42.3 1 0 +github.com/muety/wakapi/routes/utils/user_utils.go:44.2,44.27 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:23.116,29.2 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:31.60,32.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:32.34,35.3 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:47.70,49.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:49.16,51.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:53.2,54.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:54.16,58.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:60.2,61.46 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:64.116,73.29 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:73.29,75.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:77.2,85.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:85.16,87.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:89.2,89.36 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:29.124,34.2 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:36.62,37.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:37.34,40.3 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:52.72,54.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:54.16,56.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:58.2,61.16 4 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:61.16,65.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:67.2,71.16 4 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:71.16,76.3 4 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:78.2,84.47 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:23.123,29.2 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:31.61,32.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:32.34,35.3 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:48.71,50.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:50.16,52.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:54.2,55.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:55.16,60.3 4 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:62.2,65.28 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:65.28,66.30 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:66.30,68.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:71.2,72.46 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:22.112,28.2 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:30.58,31.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:31.34,41.3 5 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:62.68,68.53 5 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:68.53,70.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:72.2,73.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:73.16,77.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:81.2,81.22 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:81.22,82.100 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:82.100,84.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:84.9,86.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:89.2,90.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:90.16,94.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:96.2,98.69 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:98.69,102.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:104.2,105.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:105.16,109.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:111.2,118.33 6 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:118.33,120.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:121.2,121.35 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:121.35,123.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:124.2,124.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:124.34,126.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:127.2,127.29 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:127.29,129.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:130.2,130.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:130.34,132.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:134.2,134.49 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:137.136,146.16 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:146.16,148.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/stats.go:150.2,150.36 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:29.120,35.2 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:37.62,38.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:38.34,43.3 4 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:55.72,57.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:57.16,59.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:61.2,62.22 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:62.22,64.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:66.2,67.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:67.16,71.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:73.2,74.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:74.16,78.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:79.2,83.4 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:86.115,95.29 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:95.29,97.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:99.2,100.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:100.16,102.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/statusbar.go:104.2,104.36 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:27.120,33.2 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:35.62,36.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:36.34,39.3 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:65.72,67.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:67.16,69.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:71.2,72.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:72.16,76.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:78.2,79.46 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:82.114,87.19 4 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:87.19,88.56 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:88.56,90.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:93.2,94.22 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:94.22,96.98 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:96.98,98.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:98.9,100.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:101.8,101.130 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:101.130,104.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:104.8,109.17 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:109.17,111.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:113.3,114.17 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:114.17,116.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:123.2,137.37 6 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:137.37,139.17 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:139.17,141.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:143.3,145.25 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:148.2,148.38 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:21.116,27.2 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:29.58,30.34 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:30.34,33.3 2 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:45.68,47.16 2 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:47.16,49.3 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:51.2,52.72 2 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:52.72,54.3 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:54.8,56.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:58.2,58.72 1 1 +github.com/muety/wakapi/routes/api/activity.go:22.126,28.2 1 0 +github.com/muety/wakapi/routes/api/activity.go:30.64,39.2 4 0 +github.com/muety/wakapi/routes/api/activity.go:41.87,44.16 3 0 +github.com/muety/wakapi/routes/api/activity.go:44.16,47.3 2 0 +github.com/muety/wakapi/routes/api/activity.go:49.2,49.68 1 0 +github.com/muety/wakapi/routes/api/activity.go:49.68,50.159 1 0 +github.com/muety/wakapi/routes/api/activity.go:50.159,53.4 2 0 +github.com/muety/wakapi/routes/api/activity.go:56.2,60.16 4 0 +github.com/muety/wakapi/routes/api/activity.go:60.16,64.3 3 0 +github.com/muety/wakapi/routes/api/activity.go:66.2,69.24 4 0 +github.com/muety/wakapi/routes/api/avatar.go:19.40,21.16 2 0 +github.com/muety/wakapi/routes/api/avatar.go:21.16,22.13 1 0 +github.com/muety/wakapi/routes/api/avatar.go:25.2,28.3 1 0 +github.com/muety/wakapi/routes/api/avatar.go:31.59,36.2 4 0 +github.com/muety/wakapi/routes/api/avatar.go:38.69,41.37 2 0 +github.com/muety/wakapi/routes/api/avatar.go:41.37,43.3 1 0 +github.com/muety/wakapi/routes/api/avatar.go:45.2,45.29 1 0 +github.com/muety/wakapi/routes/api/avatar.go:45.29,47.3 1 0 +github.com/muety/wakapi/routes/api/avatar.go:48.2,53.32 5 0 +github.com/muety/wakapi/routes/api/badge.go:28.112,35.2 1 1 +github.com/muety/wakapi/routes/api/badge.go:37.58,42.2 4 1 +github.com/muety/wakapi/routes/api/badge.go:44.68,47.16 3 1 +github.com/muety/wakapi/routes/api/badge.go:47.16,50.3 2 0 +github.com/muety/wakapi/routes/api/badge.go:52.2,53.16 2 1 +github.com/muety/wakapi/routes/api/badge.go:53.16,57.3 3 1 +github.com/muety/wakapi/routes/api/badge.go:59.2,61.62 3 1 +github.com/muety/wakapi/routes/api/badge.go:61.62,64.3 2 0 +github.com/muety/wakapi/routes/api/badge.go:66.2,74.16 3 1 +github.com/muety/wakapi/routes/api/badge.go:74.16,78.3 3 0 +github.com/muety/wakapi/routes/api/badge.go:80.2,81.66 2 1 +github.com/muety/wakapi/routes/api/badge.go:81.66,83.3 1 0 +github.com/muety/wakapi/routes/api/badge.go:84.2,84.66 1 1 +github.com/muety/wakapi/routes/api/badge.go:84.66,86.3 1 0 +github.com/muety/wakapi/routes/api/badge.go:88.2,88.101 1 1 +github.com/muety/wakapi/routes/api/badge.go:88.101,90.3 1 1 +github.com/muety/wakapi/routes/api/badge.go:92.2,94.25 3 1 +github.com/muety/wakapi/routes/api/badge.go:97.53,102.2 4 1 +github.com/muety/wakapi/routes/api/diagnostics.go:20.138,26.2 1 0 +github.com/muety/wakapi/routes/api/diagnostics.go:28.67,30.2 1 0 +github.com/muety/wakapi/routes/api/diagnostics.go:39.78,42.69 2 0 +github.com/muety/wakapi/routes/api/diagnostics.go:42.69,47.3 4 0 +github.com/muety/wakapi/routes/api/diagnostics.go:49.2,49.66 1 0 +github.com/muety/wakapi/routes/api/diagnostics.go:49.66,54.3 4 0 +github.com/muety/wakapi/routes/api/diagnostics.go:56.2,56.59 1 0 +github.com/muety/wakapi/routes/api/health.go:15.57,17.2 1 0 +github.com/muety/wakapi/routes/api/health.go:19.62,21.2 1 0 +github.com/muety/wakapi/routes/api/health.go:29.72,31.41 2 0 +github.com/muety/wakapi/routes/api/health.go:31.41,32.38 1 0 +github.com/muety/wakapi/routes/api/health.go:32.38,34.4 1 0 +github.com/muety/wakapi/routes/api/health.go:37.2,38.56 2 0 +github.com/muety/wakapi/routes/api/heartbeat.go:26.187,33.2 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:39.65,40.34 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:40.34,54.3 9 0 +github.com/muety/wakapi/routes/api/heartbeat.go:65.76,67.16 2 0 +github.com/muety/wakapi/routes/api/heartbeat.go:67.16,69.3 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:71.2,73.16 3 0 +github.com/muety/wakapi/routes/api/heartbeat.go:73.16,78.3 4 0 +github.com/muety/wakapi/routes/api/heartbeat.go:80.2,84.32 4 0 +github.com/muety/wakapi/routes/api/heartbeat.go:84.32,85.16 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:85.16,89.4 3 0 +github.com/muety/wakapi/routes/api/heartbeat.go:92.3,92.25 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:92.25,97.4 4 0 +github.com/muety/wakapi/routes/api/heartbeat.go:98.3,98.23 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:98.23,100.4 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:102.3,109.65 7 0 +github.com/muety/wakapi/routes/api/heartbeat.go:109.65,113.4 3 0 +github.com/muety/wakapi/routes/api/heartbeat.go:115.3,115.14 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:118.2,118.64 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:118.64,123.3 4 0 +github.com/muety/wakapi/routes/api/heartbeat.go:125.2,125.19 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:125.19,127.52 2 0 +github.com/muety/wakapi/routes/api/heartbeat.go:127.52,132.4 4 0 +github.com/muety/wakapi/routes/api/heartbeat.go:135.2,135.15 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:135.16,135.17 0 0 +github.com/muety/wakapi/routes/api/heartbeat.go:137.2,137.90 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:146.59,149.25 2 0 +github.com/muety/wakapi/routes/api/heartbeat.go:149.25,154.3 4 0 +github.com/muety/wakapi/routes/api/heartbeat.go:156.2,158.3 1 0 +github.com/muety/wakapi/routes/api/heartbeat.go:172.45,172.46 0 0 +github.com/muety/wakapi/routes/api/heartbeat.go:183.45,183.46 0 0 +github.com/muety/wakapi/routes/api/heartbeat.go:194.45,194.46 0 0 +github.com/muety/wakapi/routes/api/heartbeat.go:204.45,204.46 0 0 +github.com/muety/wakapi/routes/api/heartbeat.go:215.45,215.46 0 0 +github.com/muety/wakapi/routes/api/heartbeat.go:226.45,226.46 0 0 +github.com/muety/wakapi/routes/api/heartbeat.go:237.45,237.46 0 0 +github.com/muety/wakapi/routes/api/metrics.go:64.249,73.2 1 0 +github.com/muety/wakapi/routes/api/metrics.go:75.60,76.38 1 0 +github.com/muety/wakapi/routes/api/metrics.go:76.38,78.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:80.2,86.29 5 0 +github.com/muety/wakapi/routes/api/metrics.go:89.70,91.20 2 0 +github.com/muety/wakapi/routes/api/metrics.go:91.20,95.3 3 0 +github.com/muety/wakapi/routes/api/metrics.go:97.2,99.63 2 0 +github.com/muety/wakapi/routes/api/metrics.go:99.63,104.3 4 0 +github.com/muety/wakapi/routes/api/metrics.go:104.8,105.34 1 0 +github.com/muety/wakapi/routes/api/metrics.go:105.34,107.4 1 0 +github.com/muety/wakapi/routes/api/metrics.go:110.2,110.21 1 0 +github.com/muety/wakapi/routes/api/metrics.go:110.21,111.66 1 0 +github.com/muety/wakapi/routes/api/metrics.go:111.66,116.4 4 0 +github.com/muety/wakapi/routes/api/metrics.go:116.9,117.36 1 0 +github.com/muety/wakapi/routes/api/metrics.go:117.36,119.5 1 0 +github.com/muety/wakapi/routes/api/metrics.go:123.2,126.34 3 0 +github.com/muety/wakapi/routes/api/metrics.go:129.81,133.16 3 0 +github.com/muety/wakapi/routes/api/metrics.go:133.16,136.3 2 0 +github.com/muety/wakapi/routes/api/metrics.go:138.2,141.16 3 0 +github.com/muety/wakapi/routes/api/metrics.go:141.16,144.3 2 0 +github.com/muety/wakapi/routes/api/metrics.go:146.2,147.16 2 0 +github.com/muety/wakapi/routes/api/metrics.go:147.16,150.3 2 0 +github.com/muety/wakapi/routes/api/metrics.go:154.2,175.42 4 0 +github.com/muety/wakapi/routes/api/metrics.go:175.42,182.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:184.2,184.43 1 0 +github.com/muety/wakapi/routes/api/metrics.go:184.43,191.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:193.2,193.41 1 0 +github.com/muety/wakapi/routes/api/metrics.go:193.41,200.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:202.2,202.50 1 0 +github.com/muety/wakapi/routes/api/metrics.go:202.50,209.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:211.2,211.42 1 0 +github.com/muety/wakapi/routes/api/metrics.go:211.42,218.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:220.2,220.40 1 0 +github.com/muety/wakapi/routes/api/metrics.go:220.40,227.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:230.2,270.16 9 0 +github.com/muety/wakapi/routes/api/metrics.go:270.16,272.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:274.2,282.44 2 0 +github.com/muety/wakapi/routes/api/metrics.go:282.44,296.3 2 0 +github.com/muety/wakapi/routes/api/metrics.go:298.2,298.22 1 0 +github.com/muety/wakapi/routes/api/metrics.go:301.82,307.19 4 0 +github.com/muety/wakapi/routes/api/metrics.go:307.19,309.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:311.2,312.106 2 0 +github.com/muety/wakapi/routes/api/metrics.go:312.106,313.56 1 0 +github.com/muety/wakapi/routes/api/metrics.go:313.56,315.4 1 0 +github.com/muety/wakapi/routes/api/metrics.go:318.2,323.16 5 0 +github.com/muety/wakapi/routes/api/metrics.go:323.16,326.3 2 0 +github.com/muety/wakapi/routes/api/metrics.go:327.2,360.16 7 0 +github.com/muety/wakapi/routes/api/metrics.go:360.16,363.3 2 0 +github.com/muety/wakapi/routes/api/metrics.go:365.2,365.32 1 0 +github.com/muety/wakapi/routes/api/metrics.go:365.32,372.3 1 0 +github.com/muety/wakapi/routes/api/metrics.go:373.2,383.29 6 0 +github.com/muety/wakapi/routes/api/metrics.go:383.29,384.20 1 0 +github.com/muety/wakapi/routes/api/metrics.go:384.20,386.18 2 0 +github.com/muety/wakapi/routes/api/metrics.go:386.18,389.5 2 0 +github.com/muety/wakapi/routes/api/metrics.go:390.4,397.6 3 0 +github.com/muety/wakapi/routes/api/metrics.go:401.2,404.22 3 0 +github.com/muety/wakapi/routes/api/summary.go:20.122,26.2 1 0 +github.com/muety/wakapi/routes/api/summary.go:28.63,34.2 4 0 +github.com/muety/wakapi/routes/api/summary.go:53.73,55.16 2 0 +github.com/muety/wakapi/routes/api/summary.go:55.16,59.3 3 0 +github.com/muety/wakapi/routes/api/summary.go:61.2,61.51 1 0 +github.com/muety/wakapi/utils/auth.go:15.79,17.54 2 0 +github.com/muety/wakapi/utils/auth.go:17.54,19.3 1 0 +github.com/muety/wakapi/utils/auth.go:21.2,23.16 3 0 +github.com/muety/wakapi/utils/auth.go:23.16,25.3 1 0 +github.com/muety/wakapi/utils/auth.go:27.2,29.45 3 0 +github.com/muety/wakapi/utils/auth.go:29.45,31.3 1 0 +github.com/muety/wakapi/utils/auth.go:32.2,33.32 2 0 +github.com/muety/wakapi/utils/auth.go:36.65,38.85 2 0 +github.com/muety/wakapi/utils/auth.go:38.85,40.3 1 0 +github.com/muety/wakapi/utils/auth.go:42.2,43.30 2 0 +github.com/muety/wakapi/utils/auth.go:48.57,49.34 1 0 +github.com/muety/wakapi/utils/auth.go:49.34,51.3 1 0 +github.com/muety/wakapi/utils/auth.go:52.2,52.45 1 0 +github.com/muety/wakapi/utils/auth.go:55.57,57.2 1 0 +github.com/muety/wakapi/utils/auth.go:59.55,63.2 3 0 +github.com/muety/wakapi/utils/auth.go:65.55,68.16 3 0 +github.com/muety/wakapi/utils/auth.go:68.16,70.3 1 0 +github.com/muety/wakapi/utils/auth.go:71.2,71.16 1 0 +github.com/muety/wakapi/utils/auth.go:74.57,78.2 3 0 +github.com/muety/wakapi/utils/auth.go:80.57,83.16 3 0 +github.com/muety/wakapi/utils/auth.go:83.16,85.3 1 0 +github.com/muety/wakapi/utils/auth.go:86.2,86.16 1 0 +github.com/muety/wakapi/utils/collection.go:5.52,6.28 1 0 +github.com/muety/wakapi/utils/collection.go:6.28,8.3 1 0 +github.com/muety/wakapi/utils/collection.go:9.2,9.26 1 0 +github.com/muety/wakapi/utils/collection.go:9.26,11.3 1 0 +github.com/muety/wakapi/utils/collection.go:12.2,12.28 1 0 +github.com/muety/wakapi/utils/collection.go:15.78,17.22 2 0 +github.com/muety/wakapi/utils/collection.go:17.22,18.18 1 0 +github.com/muety/wakapi/utils/collection.go:18.18,20.4 1 0 +github.com/muety/wakapi/utils/collection.go:21.3,21.12 1 0 +github.com/muety/wakapi/utils/collection.go:23.2,23.11 1 0 +github.com/muety/wakapi/utils/color.go:8.41,11.16 2 0 +github.com/muety/wakapi/utils/color.go:12.9,13.51 1 0 +github.com/muety/wakapi/utils/color.go:14.9,18.12 4 0 +github.com/muety/wakapi/utils/color.go:20.2,20.8 1 0 +github.com/muety/wakapi/utils/color.go:23.37,25.2 1 0 +github.com/muety/wakapi/utils/color.go:27.70,28.15 1 0 +github.com/muety/wakapi/utils/color.go:28.15,30.3 1 0 +github.com/muety/wakapi/utils/color.go:30.8,30.22 1 0 +github.com/muety/wakapi/utils/color.go:30.22,32.3 1 0 +github.com/muety/wakapi/utils/color.go:34.2,39.43 5 0 +github.com/muety/wakapi/utils/cron.go:5.44,7.21 2 0 +github.com/muety/wakapi/utils/cron.go:7.21,9.3 1 0 +github.com/muety/wakapi/utils/cron.go:10.2,10.20 1 0 +github.com/muety/wakapi/utils/date.go:9.48,11.2 1 0 +github.com/muety/wakapi/utils/date.go:13.51,15.2 1 0 +github.com/muety/wakapi/utils/date.go:17.52,19.2 1 0 +github.com/muety/wakapi/utils/date.go:21.51,23.2 1 0 +github.com/muety/wakapi/utils/date.go:26.41,28.21 2 0 +github.com/muety/wakapi/utils/date.go:28.21,30.3 1 0 +github.com/muety/wakapi/utils/date.go:31.2,31.33 1 0 +github.com/muety/wakapi/utils/date.go:35.67,38.33 2 1 +github.com/muety/wakapi/utils/date.go:38.33,40.19 2 1 +github.com/muety/wakapi/utils/date.go:40.19,42.4 1 1 +github.com/muety/wakapi/utils/date.go:43.3,44.10 2 1 +github.com/muety/wakapi/utils/date.go:47.2,47.18 1 1 +github.com/muety/wakapi/utils/date.go:51.36,54.2 2 0 +github.com/muety/wakapi/utils/date.go:56.42,57.28 1 0 +github.com/muety/wakapi/utils/date.go:58.52,59.21 1 0 +github.com/muety/wakapi/utils/date.go:60.53,61.22 1 0 +github.com/muety/wakapi/utils/date.go:62.55,63.24 1 0 +github.com/muety/wakapi/utils/date.go:64.54,65.23 1 0 +github.com/muety/wakapi/utils/date.go:66.52,67.21 1 0 +github.com/muety/wakapi/utils/date.go:68.54,69.23 1 0 +github.com/muety/wakapi/utils/date.go:70.52,71.21 1 0 +github.com/muety/wakapi/utils/date.go:73.2,73.20 1 0 +github.com/muety/wakapi/utils/db.go:10.34,11.37 1 0 +github.com/muety/wakapi/utils/db.go:11.37,13.110 2 0 +github.com/muety/wakapi/utils/db.go:13.110,16.4 2 0 +github.com/muety/wakapi/utils/db.go:17.3,17.20 1 0 +github.com/muety/wakapi/utils/db.go:19.2,20.14 2 0 +github.com/muety/wakapi/utils/db.go:23.39,24.37 1 0 +github.com/muety/wakapi/utils/db.go:24.37,26.119 2 0 +github.com/muety/wakapi/utils/db.go:26.119,29.4 2 0 +github.com/muety/wakapi/utils/db.go:30.3,30.20 1 0 +github.com/muety/wakapi/utils/db.go:32.2,33.14 2 0 +github.com/muety/wakapi/utils/db.go:36.66,37.48 1 0 +github.com/muety/wakapi/utils/db.go:37.48,39.3 1 0 +github.com/muety/wakapi/utils/db.go:40.2,40.53 1 0 +github.com/muety/wakapi/utils/db.go:43.59,44.16 1 0 +github.com/muety/wakapi/utils/db.go:44.16,46.3 1 0 +github.com/muety/wakapi/utils/db.go:47.2,47.15 1 0 +github.com/muety/wakapi/utils/db.go:47.15,49.3 1 0 +github.com/muety/wakapi/utils/db.go:50.2,50.14 1 0 +github.com/muety/wakapi/utils/dns.go:9.38,11.21 2 0 +github.com/muety/wakapi/utils/dns.go:11.21,13.3 1 0 +github.com/muety/wakapi/utils/dns.go:14.2,15.39 2 0 +github.com/muety/wakapi/utils/http.go:25.13,27.2 1 1 +github.com/muety/wakapi/utils/http.go:34.34,35.20 1 0 +github.com/muety/wakapi/utils/http.go:35.20,37.3 1 0 +github.com/muety/wakapi/utils/http.go:38.2,38.19 1 0 +github.com/muety/wakapi/utils/http.go:41.35,42.21 1 0 +github.com/muety/wakapi/utils/http.go:42.21,44.3 1 0 +github.com/muety/wakapi/utils/http.go:45.2,45.34 1 0 +github.com/muety/wakapi/utils/http.go:49.62,51.48 2 0 +github.com/muety/wakapi/utils/http.go:51.48,53.3 1 0 +github.com/muety/wakapi/utils/http.go:54.2,54.93 1 0 +github.com/muety/wakapi/utils/http.go:54.93,55.89 1 0 +github.com/muety/wakapi/utils/http.go:55.89,57.4 1 0 +github.com/muety/wakapi/utils/http.go:59.2,59.14 1 0 +github.com/muety/wakapi/utils/http.go:62.51,66.46 4 0 +github.com/muety/wakapi/utils/http.go:66.46,68.3 1 0 +github.com/muety/wakapi/utils/http.go:69.2,69.73 1 0 +github.com/muety/wakapi/utils/http.go:69.73,71.3 1 0 +github.com/muety/wakapi/utils/http.go:72.2,72.19 1 0 +github.com/muety/wakapi/utils/http.go:75.78,77.26 2 0 +github.com/muety/wakapi/utils/http.go:77.26,79.3 1 0 +github.com/muety/wakapi/utils/http.go:80.2,80.30 1 0 +github.com/muety/wakapi/utils/http.go:80.30,82.3 1 0 +github.com/muety/wakapi/utils/http.go:83.2,83.19 1 0 +github.com/muety/wakapi/utils/http.go:86.56,89.88 2 1 +github.com/muety/wakapi/utils/http.go:89.88,90.28 1 1 +github.com/muety/wakapi/utils/http.go:90.28,92.4 1 1 +github.com/muety/wakapi/utils/http.go:93.3,93.61 1 1 +github.com/muety/wakapi/utils/http.go:96.2,96.79 1 1 +github.com/muety/wakapi/utils/http.go:96.79,98.3 1 1 +github.com/muety/wakapi/utils/http.go:99.2,99.64 1 1 +github.com/muety/wakapi/utils/http.go:102.76,103.16 1 0 +github.com/muety/wakapi/utils/http.go:103.16,105.3 1 0 +github.com/muety/wakapi/utils/http.go:106.2,106.27 1 0 +github.com/muety/wakapi/utils/http.go:106.27,109.100 3 0 +github.com/muety/wakapi/utils/http.go:109.100,114.4 4 0 +github.com/muety/wakapi/utils/http.go:115.3,115.139 1 0 +github.com/muety/wakapi/utils/http.go:117.2,117.17 1 0 +github.com/muety/wakapi/utils/json.go:12.75,18.62 2 0 +github.com/muety/wakapi/utils/json.go:18.62,20.3 1 0 +github.com/muety/wakapi/utils/json.go:22.2,22.29 1 0 +github.com/muety/wakapi/utils/json.go:22.29,24.3 1 0 +github.com/muety/wakapi/utils/json.go:26.2,26.72 1 0 +github.com/muety/wakapi/utils/json.go:26.72,28.3 1 0 +github.com/muety/wakapi/utils/json.go:29.2,29.70 1 0 +github.com/muety/wakapi/utils/json.go:29.70,31.3 1 0 +github.com/muety/wakapi/utils/json.go:33.2,33.20 1 0 +github.com/muety/wakapi/utils/strings.go:7.58,8.49 1 0 +github.com/muety/wakapi/utils/strings.go:8.49,9.32 1 0 +github.com/muety/wakapi/utils/strings.go:9.32,10.22 1 0 +github.com/muety/wakapi/utils/strings.go:10.22,12.5 1 0 +github.com/muety/wakapi/utils/strings.go:14.3,14.15 1 0 +github.com/muety/wakapi/utils/strings.go:18.77,19.29 1 0 +github.com/muety/wakapi/utils/strings.go:19.29,20.18 1 0 +github.com/muety/wakapi/utils/strings.go:20.18,22.4 1 0 +github.com/muety/wakapi/utils/strings.go:24.2,24.19 1 0 +github.com/muety/wakapi/utils/sync.go:11.66,13.12 2 0 +github.com/muety/wakapi/utils/sync.go:13.12,16.3 2 0 +github.com/muety/wakapi/utils/sync.go:17.2,17.9 1 0 +github.com/muety/wakapi/utils/sync.go:18.11,19.15 1 0 +github.com/muety/wakapi/utils/sync.go:20.29,21.14 1 0 +github.com/muety/wakapi/utils/system.go:8.20,10.2 1 0 +github.com/muety/wakapi/utils/system.go:12.21,14.2 1 0 +github.com/muety/wakapi/utils/template.go:13.41,15.16 2 0 +github.com/muety/wakapi/utils/template.go:15.16,17.3 1 0 +github.com/muety/wakapi/utils/template.go:18.2,18.23 1 0 +github.com/muety/wakapi/utils/template.go:21.37,22.30 1 0 +github.com/muety/wakapi/utils/template.go:22.30,24.3 1 0 +github.com/muety/wakapi/utils/template.go:25.2,25.10 1 0 +github.com/muety/wakapi/utils/template.go:28.83,33.16 4 0 +github.com/muety/wakapi/utils/template.go:33.16,35.3 1 0 +github.com/muety/wakapi/utils/template.go:37.2,37.29 1 0 +github.com/muety/wakapi/utils/template.go:37.29,39.51 2 0 +github.com/muety/wakapi/utils/template.go:39.51,40.12 1 0 +github.com/muety/wakapi/utils/template.go:43.3,44.17 2 0 +github.com/muety/wakapi/utils/template.go:44.17,46.4 1 0 +github.com/muety/wakapi/utils/template.go:47.3,48.17 2 0 +github.com/muety/wakapi/utils/template.go:48.17,50.4 1 0 +github.com/muety/wakapi/utils/template.go:52.3,55.17 3 0 +github.com/muety/wakapi/utils/template.go:55.17,57.4 1 0 +github.com/muety/wakapi/utils/template.go:59.3,59.27 1 0 +github.com/muety/wakapi/utils/template.go:62.2,62.23 1 0 +github.com/muety/wakapi/services/activity.go:41.74,47.2 1 0 +github.com/muety/wakapi/services/activity.go:51.145,53.65 2 0 +github.com/muety/wakapi/services/activity.go:53.65,55.3 1 0 +github.com/muety/wakapi/services/activity.go:57.2,57.18 1 0 +github.com/muety/wakapi/services/activity.go:58.35,60.17 2 0 +github.com/muety/wakapi/services/activity.go:60.17,62.4 1 0 +github.com/muety/wakapi/services/activity.go:63.3,63.20 1 0 +github.com/muety/wakapi/services/activity.go:64.10,65.48 1 0 +github.com/muety/wakapi/services/activity.go:69.112,72.16 3 0 +github.com/muety/wakapi/services/activity.go:72.16,74.3 1 0 +github.com/muety/wakapi/services/activity.go:76.2,83.37 5 0 +github.com/muety/wakapi/services/activity.go:83.37,87.20 3 0 +github.com/muety/wakapi/services/activity.go:87.20,89.18 2 0 +github.com/muety/wakapi/services/activity.go:89.18,96.5 6 0 +github.com/muety/wakapi/services/activity.go:97.4,99.16 3 0 +github.com/muety/wakapi/services/activity.go:103.2,129.30 9 0 +github.com/muety/wakapi/services/activity.go:129.30,137.3 6 0 +github.com/muety/wakapi/services/activity.go:139.2,139.22 1 0 +github.com/muety/wakapi/services/activity.go:139.22,144.3 4 0 +github.com/muety/wakapi/services/activity.go:146.2,148.26 2 0 +github.com/muety/wakapi/services/aggregation.go:31.142,41.2 1 0 +github.com/muety/wakapi/services/aggregation.go:50.43,53.52 2 0 +github.com/muety/wakapi/services/aggregation.go:53.52,54.80 1 0 +github.com/muety/wakapi/services/aggregation.go:54.80,56.4 1 0 +github.com/muety/wakapi/services/aggregation.go:57.58,59.3 1 0 +github.com/muety/wakapi/services/aggregation.go:62.92,63.47 1 0 +github.com/muety/wakapi/services/aggregation.go:63.47,65.3 1 0 +github.com/muety/wakapi/services/aggregation.go:66.2,72.16 4 0 +github.com/muety/wakapi/services/aggregation.go:72.16,75.3 2 0 +github.com/muety/wakapi/services/aggregation.go:78.2,79.16 2 0 +github.com/muety/wakapi/services/aggregation.go:79.16,82.3 2 0 +github.com/muety/wakapi/services/aggregation.go:85.2,86.44 2 0 +github.com/muety/wakapi/services/aggregation.go:86.44,88.3 1 0 +github.com/muety/wakapi/services/aggregation.go:91.2,93.12 3 0 +github.com/muety/wakapi/services/aggregation.go:93.12,94.28 1 0 +github.com/muety/wakapi/services/aggregation.go:94.28,96.47 2 0 +github.com/muety/wakapi/services/aggregation.go:96.47,98.5 1 0 +github.com/muety/wakapi/services/aggregation.go:98.19,100.5 1 0 +github.com/muety/wakapi/services/aggregation.go:105.2,105.41 1 0 +github.com/muety/wakapi/services/aggregation.go:105.41,106.71 1 0 +github.com/muety/wakapi/services/aggregation.go:106.71,107.12 1 0 +github.com/muety/wakapi/services/aggregation.go:110.3,110.21 1 0 +github.com/muety/wakapi/services/aggregation.go:110.21,114.4 1 0 +github.com/muety/wakapi/services/aggregation.go:114.9,114.62 1 0 +github.com/muety/wakapi/services/aggregation.go:114.62,118.4 1 0 +github.com/muety/wakapi/services/aggregation.go:123.2,123.12 1 0 +github.com/muety/wakapi/services/aggregation.go:126.60,127.115 1 0 +github.com/muety/wakapi/services/aggregation.go:127.115,129.3 1 0 +github.com/muety/wakapi/services/aggregation.go:129.8,131.60 2 0 +github.com/muety/wakapi/services/aggregation.go:131.60,133.4 1 0 +github.com/muety/wakapi/services/aggregation.go:137.83,152.41 5 0 +github.com/muety/wakapi/services/aggregation.go:152.41,162.3 3 0 +github.com/muety/wakapi/services/aggregation.go:165.83,168.27 3 0 +github.com/muety/wakapi/services/aggregation.go:168.27,169.34 1 0 +github.com/muety/wakapi/services/aggregation.go:169.34,171.4 1 0 +github.com/muety/wakapi/services/aggregation.go:173.2,174.12 2 0 +github.com/muety/wakapi/services/aggregation.go:177.79,180.27 3 0 +github.com/muety/wakapi/services/aggregation.go:180.27,182.3 1 0 +github.com/muety/wakapi/services/aggregation.go:185.34,188.2 2 0 +github.com/muety/wakapi/services/alias.go:18.77,23.2 1 1 +github.com/muety/wakapi/services/alias.go:27.60,28.43 1 1 +github.com/muety/wakapi/services/alias.go:28.43,30.3 1 1 +github.com/muety/wakapi/services/alias.go:31.2,31.14 1 1 +github.com/muety/wakapi/services/alias.go:34.62,36.16 2 1 +github.com/muety/wakapi/services/alias.go:36.16,38.3 1 1 +github.com/muety/wakapi/services/alias.go:39.2,39.12 1 1 +github.com/muety/wakapi/services/alias.go:42.59,43.51 1 1 +github.com/muety/wakapi/services/alias.go:43.51,45.3 1 0 +github.com/muety/wakapi/services/alias.go:48.76,49.32 1 0 +github.com/muety/wakapi/services/alias.go:49.32,51.3 1 0 +github.com/muety/wakapi/services/alias.go:52.2,52.49 1 0 +github.com/muety/wakapi/services/alias.go:52.49,54.3 1 0 +github.com/muety/wakapi/services/alias.go:54.8,56.3 1 0 +github.com/muety/wakapi/services/alias.go:59.102,60.38 1 0 +github.com/muety/wakapi/services/alias.go:60.38,62.3 1 0 +github.com/muety/wakapi/services/alias.go:63.2,63.39 1 0 +github.com/muety/wakapi/services/alias.go:66.113,67.38 1 0 +github.com/muety/wakapi/services/alias.go:67.38,69.3 1 0 +github.com/muety/wakapi/services/alias.go:70.2,70.39 1 0 +github.com/muety/wakapi/services/alias.go:73.108,74.32 1 1 +github.com/muety/wakapi/services/alias.go:74.32,76.3 1 1 +github.com/muety/wakapi/services/alias.go:78.2,78.49 1 1 +github.com/muety/wakapi/services/alias.go:78.49,79.47 1 1 +github.com/muety/wakapi/services/alias.go:79.47,80.49 1 1 +github.com/muety/wakapi/services/alias.go:80.49,82.5 1 1 +github.com/muety/wakapi/services/alias.go:86.2,86.19 1 1 +github.com/muety/wakapi/services/alias.go:89.77,91.16 2 0 +github.com/muety/wakapi/services/alias.go:91.16,93.3 1 0 +github.com/muety/wakapi/services/alias.go:95.2,99.20 3 0 +github.com/muety/wakapi/services/alias.go:102.60,103.24 1 0 +github.com/muety/wakapi/services/alias.go:103.24,105.3 1 0 +github.com/muety/wakapi/services/alias.go:106.2,109.16 2 0 +github.com/muety/wakapi/services/alias.go:109.16,111.3 1 0 +github.com/muety/wakapi/services/alias.go:113.2,115.12 2 0 +github.com/muety/wakapi/services/alias.go:118.69,122.28 3 0 +github.com/muety/wakapi/services/alias.go:122.28,123.21 1 0 +github.com/muety/wakapi/services/alias.go:123.21,125.4 1 0 +github.com/muety/wakapi/services/alias.go:126.3,127.16 2 0 +github.com/muety/wakapi/services/alias.go:130.2,133.16 2 0 +github.com/muety/wakapi/services/alias.go:133.16,134.29 1 0 +github.com/muety/wakapi/services/alias.go:134.29,136.4 1 0 +github.com/muety/wakapi/services/alias.go:139.2,139.31 1 0 +github.com/muety/wakapi/services/alias.go:139.31,141.3 1 0 +github.com/muety/wakapi/services/alias.go:143.2,143.12 1 0 +github.com/muety/wakapi/services/alias.go:146.74,147.14 1 0 +github.com/muety/wakapi/services/alias.go:147.14,148.57 1 0 +github.com/muety/wakapi/services/alias.go:148.57,152.4 3 0 +github.com/muety/wakapi/services/alias.go:153.8,154.57 1 0 +github.com/muety/wakapi/services/alias.go:154.57,156.48 2 0 +github.com/muety/wakapi/services/alias.go:156.48,157.26 1 0 +github.com/muety/wakapi/services/alias.go:157.26,159.6 1 0 +github.com/muety/wakapi/services/alias.go:161.4,161.52 1 0 +github.com/muety/wakapi/services/alias.go:166.116,167.32 1 0 +github.com/muety/wakapi/services/alias.go:167.32,169.3 1 0 +github.com/muety/wakapi/services/alias.go:170.2,170.49 1 0 +github.com/muety/wakapi/services/alias.go:170.49,172.47 2 0 +github.com/muety/wakapi/services/alias.go:172.47,173.16 1 0 +github.com/muety/wakapi/services/alias.go:173.16,175.5 1 0 +github.com/muety/wakapi/services/alias.go:177.3,177.30 1 0 +github.com/muety/wakapi/services/alias.go:178.8,180.3 1 0 +github.com/muety/wakapi/services/diagnostics.go:14.101,19.2 1 0 +github.com/muety/wakapi/services/diagnostics.go:21.101,24.2 2 0 +github.com/muety/wakapi/services/duration.go:18.78,24.2 2 1 +github.com/muety/wakapi/services/duration.go:26.123,29.42 2 1 +github.com/muety/wakapi/services/duration.go:29.42,30.90 1 1 +github.com/muety/wakapi/services/duration.go:30.90,32.4 1 1 +github.com/muety/wakapi/services/duration.go:35.2,36.16 2 1 +github.com/muety/wakapi/services/duration.go:36.16,38.3 1 0 +github.com/muety/wakapi/services/duration.go:43.2,48.31 4 1 +github.com/muety/wakapi/services/duration.go:48.31,49.42 1 1 +github.com/muety/wakapi/services/duration.go:49.42,50.12 1 1 +github.com/muety/wakapi/services/duration.go:53.3,54.34 2 1 +github.com/muety/wakapi/services/duration.go:54.34,56.4 1 1 +github.com/muety/wakapi/services/duration.go:58.3,58.62 1 1 +github.com/muety/wakapi/services/duration.go:58.62,60.4 1 1 +github.com/muety/wakapi/services/duration.go:62.3,62.20 1 1 +github.com/muety/wakapi/services/duration.go:62.20,64.12 2 1 +github.com/muety/wakapi/services/duration.go:67.3,77.15 3 1 +github.com/muety/wakapi/services/duration.go:77.15,79.4 1 0 +github.com/muety/wakapi/services/duration.go:80.3,86.84 2 1 +github.com/muety/wakapi/services/duration.go:86.84,88.41 2 1 +github.com/muety/wakapi/services/duration.go:88.41,90.5 1 1 +github.com/muety/wakapi/services/duration.go:91.4,91.15 1 1 +github.com/muety/wakapi/services/duration.go:92.9,94.4 1 1 +github.com/muety/wakapi/services/duration.go:96.3,96.10 1 1 +github.com/muety/wakapi/services/duration.go:99.2,101.31 2 1 +github.com/muety/wakapi/services/duration.go:101.31,102.26 1 1 +github.com/muety/wakapi/services/duration.go:102.26,107.23 1 1 +github.com/muety/wakapi/services/duration.go:107.23,109.5 1 1 +github.com/muety/wakapi/services/duration.go:110.4,110.36 1 1 +github.com/muety/wakapi/services/duration.go:114.2,114.49 1 1 +github.com/muety/wakapi/services/duration.go:114.49,116.3 1 1 +github.com/muety/wakapi/services/duration.go:118.2,118.32 1 1 +github.com/muety/wakapi/services/heartbeat.go:29.141,43.33 3 0 +github.com/muety/wakapi/services/heartbeat.go:43.33,44.31 1 0 +github.com/muety/wakapi/services/heartbeat.go:44.31,49.4 4 0 +github.com/muety/wakapi/services/heartbeat.go:52.2,52.12 1 0 +github.com/muety/wakapi/services/heartbeat.go:55.72,58.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:60.80,61.26 1 0 +github.com/muety/wakapi/services/heartbeat.go:61.26,63.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:65.2,69.32 3 0 +github.com/muety/wakapi/services/heartbeat.go:69.32,70.31 1 0 +github.com/muety/wakapi/services/heartbeat.go:70.31,74.4 3 0 +github.com/muety/wakapi/services/heartbeat.go:75.3,75.46 1 0 +github.com/muety/wakapi/services/heartbeat.go:78.2,79.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:79.16,81.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:82.2,82.12 1 0 +github.com/muety/wakapi/services/heartbeat.go:85.69,87.8 2 0 +github.com/muety/wakapi/services/heartbeat.go:87.8,89.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:90.2,91.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:91.16,93.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:94.2,94.19 1 0 +github.com/muety/wakapi/services/heartbeat.go:97.76,100.8 3 0 +github.com/muety/wakapi/services/heartbeat.go:100.8,102.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:103.2,104.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:104.16,106.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:107.2,107.19 1 0 +github.com/muety/wakapi/services/heartbeat.go:110.96,114.26 3 0 +github.com/muety/wakapi/services/heartbeat.go:114.26,117.9 3 0 +github.com/muety/wakapi/services/heartbeat.go:117.9,119.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:119.9,121.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:124.2,125.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:125.16,127.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:129.2,129.28 1 0 +github.com/muety/wakapi/services/heartbeat.go:129.28,133.3 3 0 +github.com/muety/wakapi/services/heartbeat.go:135.2,135.24 1 0 +github.com/muety/wakapi/services/heartbeat.go:138.111,140.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:140.16,142.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:143.2,143.43 1 0 +github.com/muety/wakapi/services/heartbeat.go:146.145,148.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:148.16,150.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:151.2,151.43 1 0 +github.com/muety/wakapi/services/heartbeat.go:154.92,156.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:158.116,160.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:162.78,164.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:166.100,168.54 2 0 +github.com/muety/wakapi/services/heartbeat.go:168.54,172.3 3 0 +github.com/muety/wakapi/services/heartbeat.go:174.2,175.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:175.16,177.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:179.2,180.28 2 0 +github.com/muety/wakapi/services/heartbeat.go:180.28,181.33 1 0 +github.com/muety/wakapi/services/heartbeat.go:181.33,183.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:186.2,187.22 2 0 +github.com/muety/wakapi/services/heartbeat.go:190.62,193.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:195.68,198.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:200.87,203.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:205.167,213.23 2 0 +github.com/muety/wakapi/services/heartbeat.go:213.23,216.3 2 0 +github.com/muety/wakapi/services/heartbeat.go:218.2,219.68 2 0 +github.com/muety/wakapi/services/heartbeat.go:219.68,221.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:221.8,221.161 1 0 +github.com/muety/wakapi/services/heartbeat.go:221.161,223.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:225.2,225.17 1 0 +github.com/muety/wakapi/services/heartbeat.go:225.17,227.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:229.2,230.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:230.16,232.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:234.2,236.21 2 0 +github.com/muety/wakapi/services/heartbeat.go:239.116,241.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:241.16,243.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:245.2,245.28 1 0 +github.com/muety/wakapi/services/heartbeat.go:245.28,247.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:249.2,249.24 1 0 +github.com/muety/wakapi/services/heartbeat.go:252.92,254.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:256.76,258.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:260.103,262.55 2 0 +github.com/muety/wakapi/services/heartbeat.go:262.55,268.36 4 0 +github.com/muety/wakapi/services/heartbeat.go:268.36,273.4 2 0 +github.com/muety/wakapi/services/heartbeat.go:277.85,285.2 7 0 +github.com/muety/wakapi/services/heartbeat.go:287.74,288.32 1 0 +github.com/muety/wakapi/services/heartbeat.go:288.32,293.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:296.72,298.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:300.58,302.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:304.60,306.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:308.94,310.48 2 0 +github.com/muety/wakapi/services/heartbeat.go:310.48,312.18 2 0 +github.com/muety/wakapi/services/heartbeat.go:312.18,314.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:316.2,316.18 1 0 +github.com/muety/wakapi/services/heartbeat.go:319.72,321.61 2 0 +github.com/muety/wakapi/services/heartbeat.go:321.61,324.3 2 0 +github.com/muety/wakapi/services/heartbeat.go:327.95,330.178 2 0 +github.com/muety/wakapi/services/heartbeat.go:330.178,331.73 1 0 +github.com/muety/wakapi/services/heartbeat.go:331.73,332.83 1 0 +github.com/muety/wakapi/services/heartbeat.go:332.83,335.5 2 0 +github.com/muety/wakapi/services/heartbeat.go:338.2,338.17 1 0 +github.com/muety/wakapi/services/heartbeat.go:338.17,340.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:22.144,31.2 1 0 +github.com/muety/wakapi/services/housekeeping.go:33.42,36.2 2 0 +github.com/muety/wakapi/services/housekeeping.go:38.94,40.36 2 0 +github.com/muety/wakapi/services/housekeeping.go:40.36,43.3 2 0 +github.com/muety/wakapi/services/housekeeping.go:46.2,46.73 1 0 +github.com/muety/wakapi/services/housekeeping.go:46.73,48.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:51.2,52.74 2 0 +github.com/muety/wakapi/services/housekeeping.go:52.74,54.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:56.2,56.12 1 0 +github.com/muety/wakapi/services/housekeeping.go:59.82,61.125 2 0 +github.com/muety/wakapi/services/housekeeping.go:61.125,63.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:64.2,64.12 1 0 +github.com/muety/wakapi/services/housekeeping.go:67.58,70.16 2 0 +github.com/muety/wakapi/services/housekeeping.go:70.16,73.3 2 0 +github.com/muety/wakapi/services/housekeeping.go:76.2,77.16 2 0 +github.com/muety/wakapi/services/housekeeping.go:77.16,80.3 2 0 +github.com/muety/wakapi/services/housekeeping.go:83.2,83.40 1 0 +github.com/muety/wakapi/services/housekeeping.go:83.40,85.24 1 0 +github.com/muety/wakapi/services/housekeeping.go:85.24,86.12 1 0 +github.com/muety/wakapi/services/housekeeping.go:89.3,89.81 1 0 +github.com/muety/wakapi/services/housekeeping.go:89.81,91.4 1 0 +github.com/muety/wakapi/services/housekeeping.go:92.3,92.34 1 0 +github.com/muety/wakapi/services/housekeeping.go:92.34,93.60 1 0 +github.com/muety/wakapi/services/housekeeping.go:93.60,95.5 1 0 +github.com/muety/wakapi/services/housekeeping.go:100.46,103.16 2 0 +github.com/muety/wakapi/services/housekeeping.go:103.16,106.3 2 0 +github.com/muety/wakapi/services/housekeeping.go:109.2,109.26 1 0 +github.com/muety/wakapi/services/housekeeping.go:109.26,111.30 1 0 +github.com/muety/wakapi/services/housekeeping.go:111.30,112.12 1 0 +github.com/muety/wakapi/services/housekeeping.go:115.3,116.34 2 0 +github.com/muety/wakapi/services/housekeeping.go:116.34,117.74 1 0 +github.com/muety/wakapi/services/housekeeping.go:117.74,119.5 1 0 +github.com/muety/wakapi/services/housekeeping.go:126.54,127.43 1 0 +github.com/muety/wakapi/services/housekeeping.go:127.43,129.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:131.2,134.16 3 0 +github.com/muety/wakapi/services/housekeeping.go:134.16,136.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:139.66,143.16 3 0 +github.com/muety/wakapi/services/housekeeping.go:143.16,145.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:148.2,148.93 1 0 +github.com/muety/wakapi/services/housekeeping.go:148.93,150.3 1 0 +github.com/muety/wakapi/services/key_value.go:14.89,19.2 1 0 +github.com/muety/wakapi/services/key_value.go:21.83,23.2 1 0 +github.com/muety/wakapi/services/key_value.go:25.90,27.2 1 0 +github.com/muety/wakapi/services/key_value.go:29.78,31.16 2 0 +github.com/muety/wakapi/services/key_value.go:31.16,36.3 1 0 +github.com/muety/wakapi/services/key_value.go:37.2,37.11 1 0 +github.com/muety/wakapi/services/key_value.go:40.72,42.2 1 0 +github.com/muety/wakapi/services/key_value.go:44.60,46.2 1 0 +github.com/muety/wakapi/services/language_mapping.go:18.118,24.2 1 0 +github.com/muety/wakapi/services/language_mapping.go:26.86,28.2 1 0 +github.com/muety/wakapi/services/language_mapping.go:30.96,31.53 1 0 +github.com/muety/wakapi/services/language_mapping.go:31.53,33.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:35.2,36.16 2 0 +github.com/muety/wakapi/services/language_mapping.go:36.16,38.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:39.2,40.22 2 0 +github.com/muety/wakapi/services/language_mapping.go:43.92,46.16 3 0 +github.com/muety/wakapi/services/language_mapping.go:46.16,48.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:50.2,50.33 1 0 +github.com/muety/wakapi/services/language_mapping.go:50.33,52.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:53.2,53.22 1 0 +github.com/muety/wakapi/services/language_mapping.go:56.109,58.16 2 0 +github.com/muety/wakapi/services/language_mapping.go:58.16,60.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:62.2,63.20 2 0 +github.com/muety/wakapi/services/language_mapping.go:66.82,67.26 1 0 +github.com/muety/wakapi/services/language_mapping.go:67.26,69.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:70.2,72.12 3 0 +github.com/muety/wakapi/services/language_mapping.go:75.74,78.2 1 0 +github.com/muety/wakapi/services/leaderboard.go:30.159,43.33 3 0 +github.com/muety/wakapi/services/leaderboard.go:43.33,44.31 1 0 +github.com/muety/wakapi/services/leaderboard.go:44.31,50.18 3 0 +github.com/muety/wakapi/services/leaderboard.go:50.18,52.5 1 0 +github.com/muety/wakapi/services/leaderboard.go:54.4,54.41 1 0 +github.com/muety/wakapi/services/leaderboard.go:54.41,57.5 2 0 +github.com/muety/wakapi/services/leaderboard.go:57.10,57.48 1 0 +github.com/muety/wakapi/services/leaderboard.go:57.48,59.64 2 0 +github.com/muety/wakapi/services/leaderboard.go:59.64,61.6 1 0 +github.com/muety/wakapi/services/leaderboard.go:62.5,62.22 1 0 +github.com/muety/wakapi/services/leaderboard.go:67.2,67.12 1 0 +github.com/muety/wakapi/services/leaderboard.go:70.43,73.21 2 0 +github.com/muety/wakapi/services/leaderboard.go:73.21,75.17 2 0 +github.com/muety/wakapi/services/leaderboard.go:75.17,78.4 2 0 +github.com/muety/wakapi/services/leaderboard.go:79.3,79.91 1 0 +github.com/muety/wakapi/services/leaderboard.go:82.2,82.76 1 0 +github.com/muety/wakapi/services/leaderboard.go:82.76,83.77 1 0 +github.com/muety/wakapi/services/leaderboard.go:83.77,85.4 1 0 +github.com/muety/wakapi/services/leaderboard.go:89.121,92.29 2 0 +github.com/muety/wakapi/services/leaderboard.go:92.29,93.83 1 0 +github.com/muety/wakapi/services/leaderboard.go:93.83,95.12 2 0 +github.com/muety/wakapi/services/leaderboard.go:98.3,99.17 2 0 +github.com/muety/wakapi/services/leaderboard.go:99.17,101.12 2 0 +github.com/muety/wakapi/services/leaderboard.go:104.3,104.85 1 0 +github.com/muety/wakapi/services/leaderboard.go:104.85,106.12 2 0 +github.com/muety/wakapi/services/leaderboard.go:109.3,109.25 1 0 +github.com/muety/wakapi/services/leaderboard.go:109.25,111.18 2 0 +github.com/muety/wakapi/services/leaderboard.go:111.18,113.13 2 0 +github.com/muety/wakapi/services/leaderboard.go:116.4,116.23 1 0 +github.com/muety/wakapi/services/leaderboard.go:116.23,117.13 1 0 +github.com/muety/wakapi/services/leaderboard.go:120.4,120.60 1 0 +github.com/muety/wakapi/services/leaderboard.go:120.60,122.13 2 0 +github.com/muety/wakapi/services/leaderboard.go:127.2,129.12 3 0 +github.com/muety/wakapi/services/leaderboard.go:132.77,135.2 2 0 +github.com/muety/wakapi/services/leaderboard.go:137.60,140.52 2 0 +github.com/muety/wakapi/services/leaderboard.go:140.52,142.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:144.2,145.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:145.16,147.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:148.2,148.19 1 0 +github.com/muety/wakapi/services/leaderboard.go:151.153,153.2 1 0 +github.com/muety/wakapi/services/leaderboard.go:155.144,157.2 1 0 +github.com/muety/wakapi/services/leaderboard.go:159.174,162.52 2 0 +github.com/muety/wakapi/services/leaderboard.go:162.52,164.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:166.2,167.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:167.16,169.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:171.2,171.18 1 0 +github.com/muety/wakapi/services/leaderboard.go:171.18,173.17 2 0 +github.com/muety/wakapi/services/leaderboard.go:173.17,175.4 1 0 +github.com/muety/wakapi/services/leaderboard.go:175.9,176.31 1 0 +github.com/muety/wakapi/services/leaderboard.go:176.31,177.40 1 0 +github.com/muety/wakapi/services/leaderboard.go:177.40,179.6 1 0 +github.com/muety/wakapi/services/leaderboard.go:184.2,185.19 2 0 +github.com/muety/wakapi/services/leaderboard.go:188.165,191.52 2 0 +github.com/muety/wakapi/services/leaderboard.go:191.52,193.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:195.2,196.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:196.16,198.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:200.2,200.17 1 0 +github.com/muety/wakapi/services/leaderboard.go:200.17,202.17 2 0 +github.com/muety/wakapi/services/leaderboard.go:202.17,204.4 1 0 +github.com/muety/wakapi/services/leaderboard.go:204.9,205.31 1 0 +github.com/muety/wakapi/services/leaderboard.go:205.31,207.5 1 0 +github.com/muety/wakapi/services/leaderboard.go:211.2,212.19 2 0 +github.com/muety/wakapi/services/leaderboard.go:215.129,217.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:217.16,219.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:221.2,222.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:222.16,224.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:227.2,233.8 2 0 +github.com/muety/wakapi/services/leaderboard.go:236.151,238.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:238.16,240.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:242.2,243.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:243.16,245.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:247.2,250.42 3 0 +github.com/muety/wakapi/services/leaderboard.go:250.42,260.3 2 0 +github.com/muety/wakapi/services/leaderboard.go:262.2,262.19 1 0 +github.com/muety/wakapi/services/leaderboard.go:265.131,267.47 2 0 +github.com/muety/wakapi/services/leaderboard.go:267.47,269.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:270.2,270.23 1 0 +github.com/muety/wakapi/services/leaderboard.go:270.23,272.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:273.2,273.10 1 0 +github.com/muety/wakapi/services/misc.go:44.188,56.2 1 0 +github.com/muety/wakapi/services/misc.go:58.36,60.95 2 0 +github.com/muety/wakapi/services/misc.go:60.95,62.3 1 0 +github.com/muety/wakapi/services/misc.go:64.2,65.111 2 0 +github.com/muety/wakapi/services/misc.go:65.111,67.3 1 0 +github.com/muety/wakapi/services/misc.go:69.2,69.128 1 0 +github.com/muety/wakapi/services/misc.go:69.128,71.125 2 0 +github.com/muety/wakapi/services/misc.go:71.125,73.4 1 0 +github.com/muety/wakapi/services/misc.go:77.2,77.33 1 0 +github.com/muety/wakapi/services/misc.go:77.33,78.71 1 0 +github.com/muety/wakapi/services/misc.go:78.71,80.4 1 0 +github.com/muety/wakapi/services/misc.go:82.2,82.33 1 0 +github.com/muety/wakapi/services/misc.go:82.33,83.80 1 0 +github.com/muety/wakapi/services/misc.go:83.80,85.4 1 0 +github.com/muety/wakapi/services/misc.go:87.2,87.170 1 0 +github.com/muety/wakapi/services/misc.go:87.170,88.83 1 0 +github.com/muety/wakapi/services/misc.go:88.83,90.4 1 0 +github.com/muety/wakapi/services/misc.go:94.42,96.36 2 0 +github.com/muety/wakapi/services/misc.go:96.36,98.3 1 0 +github.com/muety/wakapi/services/misc.go:99.2,102.16 3 0 +github.com/muety/wakapi/services/misc.go:102.16,105.3 2 0 +github.com/muety/wakapi/services/misc.go:107.2,111.26 4 0 +github.com/muety/wakapi/services/misc.go:111.26,113.46 2 0 +github.com/muety/wakapi/services/misc.go:113.46,116.4 2 0 +github.com/muety/wakapi/services/misc.go:116.18,119.4 2 0 +github.com/muety/wakapi/services/misc.go:123.2,123.30 1 0 +github.com/muety/wakapi/services/misc.go:123.30,124.58 1 0 +github.com/muety/wakapi/services/misc.go:124.58,128.19 1 0 +github.com/muety/wakapi/services/misc.go:128.19,130.5 1 0 +github.com/muety/wakapi/services/misc.go:132.4,135.19 1 0 +github.com/muety/wakapi/services/misc.go:135.19,137.5 1 0 +github.com/muety/wakapi/services/misc.go:138.9,140.4 1 0 +github.com/muety/wakapi/services/misc.go:144.51,147.45 2 0 +github.com/muety/wakapi/services/misc.go:147.45,148.41 1 0 +github.com/muety/wakapi/services/misc.go:148.41,151.4 2 0 +github.com/muety/wakapi/services/misc.go:152.3,155.17 3 0 +github.com/muety/wakapi/services/misc.go:155.17,158.4 2 0 +github.com/muety/wakapi/services/misc.go:160.3,160.33 1 0 +github.com/muety/wakapi/services/misc.go:160.33,161.31 1 0 +github.com/muety/wakapi/services/misc.go:161.31,162.13 1 0 +github.com/muety/wakapi/services/misc.go:165.4,169.19 2 0 +github.com/muety/wakapi/services/misc.go:169.19,171.5 1 0 +github.com/muety/wakapi/services/misc.go:173.17,175.3 1 0 +github.com/muety/wakapi/services/misc.go:186.54,187.82 1 0 +github.com/muety/wakapi/services/misc.go:187.82,189.3 1 0 +github.com/muety/wakapi/services/misc.go:191.2,195.16 4 0 +github.com/muety/wakapi/services/misc.go:195.16,198.3 2 0 +github.com/muety/wakapi/services/misc.go:200.2,201.104 2 0 +github.com/muety/wakapi/services/misc.go:201.104,202.122 1 0 +github.com/muety/wakapi/services/misc.go:202.122,204.4 1 0 +github.com/muety/wakapi/services/misc.go:205.8,208.3 2 0 +github.com/muety/wakapi/services/misc.go:210.2,210.26 1 0 +github.com/muety/wakapi/services/misc.go:210.26,211.49 1 0 +github.com/muety/wakapi/services/misc.go:211.49,213.4 1 0 +github.com/muety/wakapi/services/misc.go:215.3,216.65 2 0 +github.com/muety/wakapi/services/misc.go:216.65,218.130 1 0 +github.com/muety/wakapi/services/misc.go:218.130,220.5 1 0 +github.com/muety/wakapi/services/misc.go:220.10,220.25 1 0 +github.com/muety/wakapi/services/misc.go:220.25,223.5 2 0 +github.com/muety/wakapi/services/misc.go:230.3,230.137 1 0 +github.com/muety/wakapi/services/misc.go:230.137,231.12 1 0 +github.com/muety/wakapi/services/misc.go:234.3,235.89 2 0 +github.com/muety/wakapi/services/misc.go:235.89,237.4 1 0 +github.com/muety/wakapi/services/misc.go:241.73,243.16 2 0 +github.com/muety/wakapi/services/misc.go:243.16,246.3 2 0 +github.com/muety/wakapi/services/misc.go:247.2,247.27 1 0 +github.com/muety/wakapi/services/misc.go:250.99,252.33 2 0 +github.com/muety/wakapi/services/misc.go:252.33,256.86 3 0 +github.com/muety/wakapi/services/misc.go:256.86,259.4 2 0 +github.com/muety/wakapi/services/misc.go:261.3,264.18 1 0 +github.com/muety/wakapi/services/misc.go:264.18,266.4 1 0 +github.com/muety/wakapi/services/misc.go:270.53,272.16 2 0 +github.com/muety/wakapi/services/misc.go:272.16,274.3 1 0 +github.com/muety/wakapi/services/misc.go:275.2,275.25 1 0 +github.com/muety/wakapi/services/misc.go:278.53,280.16 2 0 +github.com/muety/wakapi/services/misc.go:280.16,282.3 1 0 +github.com/muety/wakapi/services/misc.go:283.2,283.25 1 0 +github.com/muety/wakapi/services/misc.go:286.64,288.16 2 0 +github.com/muety/wakapi/services/misc.go:288.16,290.3 1 0 +github.com/muety/wakapi/services/misc.go:291.2,291.25 1 0 +github.com/muety/wakapi/services/project_label.go:21.111,28.2 1 0 +github.com/muety/wakapi/services/project_label.go:30.80,32.2 1 0 +github.com/muety/wakapi/services/project_label.go:34.90,35.51 1 0 +github.com/muety/wakapi/services/project_label.go:35.51,37.3 1 0 +github.com/muety/wakapi/services/project_label.go:39.2,40.16 2 0 +github.com/muety/wakapi/services/project_label.go:40.16,42.3 1 0 +github.com/muety/wakapi/services/project_label.go:43.2,44.20 2 0 +github.com/muety/wakapi/services/project_label.go:48.108,50.16 2 0 +github.com/muety/wakapi/services/project_label.go:50.16,52.3 1 0 +github.com/muety/wakapi/services/project_label.go:53.2,53.112 1 0 +github.com/muety/wakapi/services/project_label.go:53.112,55.3 1 0 +github.com/muety/wakapi/services/project_label.go:56.2,56.26 1 0 +github.com/muety/wakapi/services/project_label.go:60.116,62.16 2 0 +github.com/muety/wakapi/services/project_label.go:62.16,64.3 1 0 +github.com/muety/wakapi/services/project_label.go:65.2,65.112 1 0 +github.com/muety/wakapi/services/project_label.go:65.112,67.3 1 0 +github.com/muety/wakapi/services/project_label.go:68.2,68.26 1 0 +github.com/muety/wakapi/services/project_label.go:71.98,73.16 2 0 +github.com/muety/wakapi/services/project_label.go:73.16,75.3 1 0 +github.com/muety/wakapi/services/project_label.go:77.2,79.20 3 0 +github.com/muety/wakapi/services/project_label.go:82.74,83.24 1 0 +github.com/muety/wakapi/services/project_label.go:83.24,85.3 1 0 +github.com/muety/wakapi/services/project_label.go:86.2,89.12 4 0 +github.com/muety/wakapi/services/project_label.go:92.89,94.14 2 0 +github.com/muety/wakapi/services/project_label.go:94.14,96.3 1 0 +github.com/muety/wakapi/services/project_label.go:97.2,100.4 1 0 +github.com/muety/wakapi/services/report.go:33.122,46.2 2 0 +github.com/muety/wakapi/services/report.go:48.38,51.45 2 0 +github.com/muety/wakapi/services/report.go:51.45,52.46 1 0 +github.com/muety/wakapi/services/report.go:52.46,55.57 2 0 +github.com/muety/wakapi/services/report.go:55.57,57.5 1 0 +github.com/muety/wakapi/services/report.go:60.4,60.58 1 0 +github.com/muety/wakapi/services/report.go:60.58,63.5 2 0 +github.com/muety/wakapi/services/report.go:64.18,66.4 1 0 +github.com/muety/wakapi/services/report.go:69.2,69.49 1 0 +github.com/muety/wakapi/services/report.go:69.49,72.17 2 0 +github.com/muety/wakapi/services/report.go:72.17,75.4 2 0 +github.com/muety/wakapi/services/report.go:78.3,78.78 1 0 +github.com/muety/wakapi/services/report.go:78.78,80.4 1 0 +github.com/muety/wakapi/services/report.go:83.3,84.27 2 0 +github.com/muety/wakapi/services/report.go:84.27,86.4 1 0 +github.com/muety/wakapi/services/report.go:89.2,89.16 1 0 +github.com/muety/wakapi/services/report.go:89.16,91.3 1 0 +github.com/muety/wakapi/services/report.go:94.87,95.22 1 0 +github.com/muety/wakapi/services/report.go:95.22,98.3 2 0 +github.com/muety/wakapi/services/report.go:100.2,106.16 5 0 +github.com/muety/wakapi/services/report.go:106.16,109.3 2 0 +github.com/muety/wakapi/services/report.go:112.2,115.40 3 0 +github.com/muety/wakapi/services/report.go:115.40,118.17 3 0 +github.com/muety/wakapi/services/report.go:118.17,120.9 2 0 +github.com/muety/wakapi/services/report.go:122.3,124.30 3 0 +github.com/muety/wakapi/services/report.go:127.2,135.65 2 0 +github.com/muety/wakapi/services/report.go:135.65,138.3 2 0 +github.com/muety/wakapi/services/report.go:140.2,141.12 2 0 +github.com/muety/wakapi/services/summary.go:28.189,40.33 3 1 +github.com/muety/wakapi/services/summary.go:40.33,41.31 1 1 +github.com/muety/wakapi/services/summary.go:41.31,43.4 1 0 +github.com/muety/wakapi/services/summary.go:46.2,46.12 1 1 +github.com/muety/wakapi/services/summary.go:52.167,55.82 2 1 +github.com/muety/wakapi/services/summary.go:55.82,56.67 1 1 +github.com/muety/wakapi/services/summary.go:56.67,58.4 1 0 +github.com/muety/wakapi/services/summary.go:62.2,67.20 4 1 +github.com/muety/wakapi/services/summary.go:67.20,70.3 2 1 +github.com/muety/wakapi/services/summary.go:73.2,73.65 1 1 +github.com/muety/wakapi/services/summary.go:73.65,75.3 1 0 +github.com/muety/wakapi/services/summary.go:78.2,79.16 2 1 +github.com/muety/wakapi/services/summary.go:79.16,81.3 1 0 +github.com/muety/wakapi/services/summary.go:84.2,89.79 5 1 +github.com/muety/wakapi/services/summary.go:89.79,92.3 2 1 +github.com/muety/wakapi/services/summary.go:94.2,95.30 2 1 +github.com/muety/wakapi/services/summary.go:98.126,102.41 2 1 +github.com/muety/wakapi/services/summary.go:102.41,105.17 2 1 +github.com/muety/wakapi/services/summary.go:105.17,107.4 1 1 +github.com/muety/wakapi/services/summary.go:107.9,109.4 1 0 +github.com/muety/wakapi/services/summary.go:113.2,114.44 2 1 +github.com/muety/wakapi/services/summary.go:114.44,115.87 1 1 +github.com/muety/wakapi/services/summary.go:115.87,116.71 1 1 +github.com/muety/wakapi/services/summary.go:116.71,120.13 1 0 +github.com/muety/wakapi/services/summary.go:122.4,122.36 1 1 +github.com/muety/wakapi/services/summary.go:123.9,125.4 1 0 +github.com/muety/wakapi/services/summary.go:129.2,131.16 3 1 +github.com/muety/wakapi/services/summary.go:131.16,133.3 1 0 +github.com/muety/wakapi/services/summary.go:135.2,135.30 1 1 +github.com/muety/wakapi/services/summary.go:138.127,141.16 2 1 +github.com/muety/wakapi/services/summary.go:141.16,143.3 1 0 +github.com/muety/wakapi/services/summary.go:145.2,146.50 2 1 +github.com/muety/wakapi/services/summary.go:146.50,149.3 2 1 +github.com/muety/wakapi/services/summary.go:151.2,153.26 3 1 +github.com/muety/wakapi/services/summary.go:153.26,155.3 1 1 +github.com/muety/wakapi/services/summary.go:158.2,166.34 8 1 +github.com/muety/wakapi/services/summary.go:166.34,168.20 2 1 +github.com/muety/wakapi/services/summary.go:169.30,170.29 1 1 +github.com/muety/wakapi/services/summary.go:171.31,172.30 1 1 +github.com/muety/wakapi/services/summary.go:173.29,174.28 1 1 +github.com/muety/wakapi/services/summary.go:175.25,176.24 1 1 +github.com/muety/wakapi/services/summary.go:177.30,178.29 1 1 +github.com/muety/wakapi/services/summary.go:179.29,180.28 1 1 +github.com/muety/wakapi/services/summary.go:181.29,182.28 1 1 +github.com/muety/wakapi/services/summary.go:186.2,186.25 1 1 +github.com/muety/wakapi/services/summary.go:186.25,189.3 2 1 +github.com/muety/wakapi/services/summary.go:191.2,205.30 2 1 +github.com/muety/wakapi/services/summary.go:210.76,212.2 1 0 +github.com/muety/wakapi/services/summary.go:214.62,217.2 2 0 +github.com/muety/wakapi/services/summary.go:219.81,222.2 2 0 +github.com/muety/wakapi/services/summary.go:224.66,227.2 2 0 +github.com/muety/wakapi/services/summary.go:231.125,234.30 2 1 +github.com/muety/wakapi/services/summary.go:234.30,236.3 1 1 +github.com/muety/wakapi/services/summary.go:238.2,239.28 2 1 +github.com/muety/wakapi/services/summary.go:239.28,245.3 1 1 +github.com/muety/wakapi/services/summary.go:247.2,247.40 1 1 +github.com/muety/wakapi/services/summary.go:247.40,249.3 1 1 +github.com/muety/wakapi/services/summary.go:251.2,251.67 1 1 +github.com/muety/wakapi/services/summary.go:254.87,255.72 1 1 +github.com/muety/wakapi/services/summary.go:255.72,261.3 1 1 +github.com/muety/wakapi/services/summary.go:263.2,264.16 2 1 +github.com/muety/wakapi/services/summary.go:264.16,267.3 2 0 +github.com/muety/wakapi/services/summary.go:269.2,270.37 2 1 +github.com/muety/wakapi/services/summary.go:270.37,272.3 1 1 +github.com/muety/wakapi/services/summary.go:274.2,276.30 3 1 +github.com/muety/wakapi/services/summary.go:276.30,277.48 1 1 +github.com/muety/wakapi/services/summary.go:277.48,278.41 1 1 +github.com/muety/wakapi/services/summary.go:278.41,280.5 1 1 +github.com/muety/wakapi/services/summary.go:281.4,282.29 2 1 +github.com/muety/wakapi/services/summary.go:287.2,288.29 2 1 +github.com/muety/wakapi/services/summary.go:288.29,289.18 1 1 +github.com/muety/wakapi/services/summary.go:289.18,291.4 1 1 +github.com/muety/wakapi/services/summary.go:293.2,294.16 2 1 +github.com/muety/wakapi/services/summary.go:297.97,302.24 1 1 +github.com/muety/wakapi/services/summary.go:302.24,304.3 1 0 +github.com/muety/wakapi/services/summary.go:306.2,323.30 5 1 +github.com/muety/wakapi/services/summary.go:323.30,325.41 2 1 +github.com/muety/wakapi/services/summary.go:325.41,327.12 2 1 +github.com/muety/wakapi/services/summary.go:330.3,330.12 1 1 +github.com/muety/wakapi/services/summary.go:330.12,331.70 1 1 +github.com/muety/wakapi/services/summary.go:331.70,333.5 1 0 +github.com/muety/wakapi/services/summary.go:336.3,336.38 1 1 +github.com/muety/wakapi/services/summary.go:336.38,338.4 1 0 +github.com/muety/wakapi/services/summary.go:340.3,340.37 1 1 +github.com/muety/wakapi/services/summary.go:340.37,342.4 1 1 +github.com/muety/wakapi/services/summary.go:344.3,344.34 1 1 +github.com/muety/wakapi/services/summary.go:344.34,346.4 1 1 +github.com/muety/wakapi/services/summary.go:348.3,358.25 10 1 +github.com/muety/wakapi/services/summary.go:361.2,364.26 3 1 +github.com/muety/wakapi/services/summary.go:367.127,371.32 2 1 +github.com/muety/wakapi/services/summary.go:371.32,373.3 1 1 +github.com/muety/wakapi/services/summary.go:375.2,375.27 1 1 +github.com/muety/wakapi/services/summary.go:375.27,376.37 1 1 +github.com/muety/wakapi/services/summary.go:376.37,378.4 1 1 +github.com/muety/wakapi/services/summary.go:378.9,380.4 1 1 +github.com/muety/wakapi/services/summary.go:383.2,385.26 3 1 +github.com/muety/wakapi/services/summary.go:385.26,388.3 2 1 +github.com/muety/wakapi/services/summary.go:390.2,390.43 1 1 +github.com/muety/wakapi/services/summary.go:390.43,392.3 1 1 +github.com/muety/wakapi/services/summary.go:394.2,394.17 1 1 +github.com/muety/wakapi/services/summary.go:397.130,398.25 1 1 +github.com/muety/wakapi/services/summary.go:398.25,400.3 1 0 +github.com/muety/wakapi/services/summary.go:402.2,405.44 2 1 +github.com/muety/wakapi/services/summary.go:405.44,407.3 1 1 +github.com/muety/wakapi/services/summary.go:410.2,410.40 1 1 +github.com/muety/wakapi/services/summary.go:410.40,412.51 2 1 +github.com/muety/wakapi/services/summary.go:412.51,413.12 1 1 +github.com/muety/wakapi/services/summary.go:416.3,423.15 3 1 +github.com/muety/wakapi/services/summary.go:423.15,429.38 3 1 +github.com/muety/wakapi/services/summary.go:429.38,431.5 1 0 +github.com/muety/wakapi/services/summary.go:435.3,435.22 1 1 +github.com/muety/wakapi/services/summary.go:435.22,437.4 1 1 +github.com/muety/wakapi/services/summary.go:441.2,441.54 1 1 +github.com/muety/wakapi/services/summary.go:441.54,443.3 1 1 +github.com/muety/wakapi/services/summary.go:445.2,445.18 1 1 +github.com/muety/wakapi/services/summary.go:448.59,450.2 1 1 +github.com/muety/wakapi/services/summary.go:452.63,453.37 1 0 +github.com/muety/wakapi/services/summary.go:453.37,454.36 1 0 +github.com/muety/wakapi/services/summary.go:454.36,456.4 1 0 +github.com/muety/wakapi/services/summary.go:460.85,461.40 1 1 +github.com/muety/wakapi/services/summary.go:461.40,464.3 2 1 +github.com/muety/wakapi/services/summary.go:467.99,468.42 1 1 +github.com/muety/wakapi/services/summary.go:468.42,470.17 2 1 +github.com/muety/wakapi/services/summary.go:470.17,472.4 1 0 +github.com/muety/wakapi/services/summary.go:473.3,474.29 2 1 +github.com/muety/wakapi/services/summary.go:474.29,476.4 1 1 +github.com/muety/wakapi/services/summary.go:477.3,477.22 1 1 +github.com/muety/wakapi/services/summary.go:481.114,482.33 1 1 +github.com/muety/wakapi/services/summary.go:482.33,485.17 3 1 +github.com/muety/wakapi/services/summary.go:485.17,486.33 1 1 +github.com/muety/wakapi/services/summary.go:486.33,488.5 1 1 +github.com/muety/wakapi/services/summary.go:490.3,491.28 2 1 +github.com/muety/wakapi/services/summary.go:491.28,493.4 1 1 +github.com/muety/wakapi/services/summary.go:494.3,494.24 1 1 +github.com/muety/wakapi/services/user.go:27.99,37.33 3 0 +github.com/muety/wakapi/services/user.go:37.33,38.31 1 0 +github.com/muety/wakapi/services/user.go:38.31,44.73 4 0 +github.com/muety/wakapi/services/user.go:44.73,46.5 1 0 +github.com/muety/wakapi/services/user.go:48.4,48.24 1 0 +github.com/muety/wakapi/services/user.go:48.24,49.80 1 0 +github.com/muety/wakapi/services/user.go:49.80,51.6 1 0 +github.com/muety/wakapi/services/user.go:51.11,53.6 1 0 +github.com/muety/wakapi/services/user.go:58.2,58.12 1 0 +github.com/muety/wakapi/services/user.go:61.74,62.18 1 0 +github.com/muety/wakapi/services/user.go:62.18,64.3 1 0 +github.com/muety/wakapi/services/user.go:66.2,66.40 1 0 +github.com/muety/wakapi/services/user.go:66.40,68.3 1 0 +github.com/muety/wakapi/services/user.go:70.2,71.16 2 0 +github.com/muety/wakapi/services/user.go:71.16,73.3 1 0 +github.com/muety/wakapi/services/user.go:75.2,76.15 2 0 +github.com/muety/wakapi/services/user.go:79.72,80.15 1 0 +github.com/muety/wakapi/services/user.go:80.15,82.3 1 0 +github.com/muety/wakapi/services/user.go:84.2,84.37 1 0 +github.com/muety/wakapi/services/user.go:84.37,86.3 1 0 +github.com/muety/wakapi/services/user.go:88.2,89.16 2 0 +github.com/muety/wakapi/services/user.go:89.16,91.3 1 0 +github.com/muety/wakapi/services/user.go:93.2,94.15 2 0 +github.com/muety/wakapi/services/user.go:97.76,98.17 1 0 +github.com/muety/wakapi/services/user.go:98.17,100.3 1 0 +github.com/muety/wakapi/services/user.go:101.2,101.58 1 0 +github.com/muety/wakapi/services/user.go:104.86,105.22 1 0 +github.com/muety/wakapi/services/user.go:105.22,107.3 1 0 +github.com/muety/wakapi/services/user.go:108.2,108.68 1 0 +github.com/muety/wakapi/services/user.go:111.92,112.22 1 0 +github.com/muety/wakapi/services/user.go:112.22,114.3 1 0 +github.com/muety/wakapi/services/user.go:115.2,115.74 1 0 +github.com/muety/wakapi/services/user.go:118.58,120.2 1 0 +github.com/muety/wakapi/services/user.go:122.71,124.2 1 0 +github.com/muety/wakapi/services/user.go:126.86,128.16 2 0 +github.com/muety/wakapi/services/user.go:128.16,130.3 1 0 +github.com/muety/wakapi/services/user.go:131.2,131.112 1 0 +github.com/muety/wakapi/services/user.go:131.112,133.3 1 0 +github.com/muety/wakapi/services/user.go:136.86,138.2 1 0 +github.com/muety/wakapi/services/user.go:140.94,142.2 1 0 +github.com/muety/wakapi/services/user.go:144.71,146.12 2 0 +github.com/muety/wakapi/services/user.go:146.12,148.3 1 0 +github.com/muety/wakapi/services/user.go:150.2,151.42 2 0 +github.com/muety/wakapi/services/user.go:151.42,153.3 1 0 +github.com/muety/wakapi/services/user.go:155.2,156.16 2 0 +github.com/muety/wakapi/services/user.go:156.16,158.3 1 0 +github.com/muety/wakapi/services/user.go:160.2,161.21 2 0 +github.com/muety/wakapi/services/user.go:164.48,166.2 1 0 +github.com/muety/wakapi/services/user.go:168.102,178.95 2 0 +github.com/muety/wakapi/services/user.go:178.95,180.3 1 0 +github.com/muety/wakapi/services/user.go:180.8,182.3 1 0 +github.com/muety/wakapi/services/user.go:184.2,184.38 1 0 +github.com/muety/wakapi/services/user.go:187.73,191.2 3 0 +github.com/muety/wakapi/services/user.go:193.78,197.2 3 0 +github.com/muety/wakapi/services/user.go:199.122,202.35 2 0 +github.com/muety/wakapi/services/user.go:202.35,203.89 1 0 +github.com/muety/wakapi/services/user.go:203.89,205.4 1 0 +github.com/muety/wakapi/services/user.go:208.2,208.35 1 0 +github.com/muety/wakapi/services/user.go:208.35,210.3 1 0 +github.com/muety/wakapi/services/user.go:212.2,212.18 1 0 +github.com/muety/wakapi/services/user.go:215.85,217.2 1 0 +github.com/muety/wakapi/services/user.go:219.57,227.2 5 0 +github.com/muety/wakapi/services/user.go:229.38,231.2 1 0 +github.com/muety/wakapi/services/user.go:233.55,235.2 1 0 +github.com/muety/wakapi/services/user.go:237.57,242.2 1 0 +github.com/muety/wakapi/services/user.go:244.57,249.2 1 0 diff --git a/middlewares/authenticate.go b/middlewares/authenticate.go index a172cdaf..0b5ad078 100644 --- a/middlewares/authenticate.go +++ b/middlewares/authenticate.go @@ -1,8 +1,11 @@ package middlewares import ( + "errors" "fmt" + "github.com/duke-git/lancet/v2/slice" "github.com/muety/wakapi/helpers" + "net" "net/http" "strings" @@ -60,14 +63,17 @@ func (m *AuthenticateMiddleware) Handler(h http.Handler) http.Handler { func (m *AuthenticateMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) { var user *models.User - user, err := m.tryGetUserByCookie(r) + user, err := m.tryGetUserByCookie(r) if err != nil { user, err = m.tryGetUserByApiKeyHeader(r) } if err != nil { user, err = m.tryGetUserByApiKeyQuery(r) } + if err != nil && m.config.Security.TrustedHeaderAuth { + user, err = m.tryGetUserByTrustedHeader(r) + } if err != nil || user == nil { if m.isOptional(r.URL.Path) { @@ -132,6 +138,19 @@ func (m *AuthenticateMiddleware) tryGetUserByApiKeyQuery(r *http.Request) (*mode return user, nil } +func (m *AuthenticateMiddleware) tryGetUserByTrustedHeader(r *http.Request) (*models.User, error) { + remoteUser := r.Header.Get(m.config.Security.TrustedHeaderAuthKey) + if remoteUser == "" { + return nil, errors.New("trusted header field empty") + } + if addr, err := net.ResolveTCPAddr("tcp", r.RemoteAddr); err != nil || !slice.ContainBy[net.IP](m.config.Security.TrustReverseProxyIPs(), func(ip net.IP) bool { + return addr.IP.Equal(ip) + }) { + return nil, errors.New("reverse proxy not trusted") + } + return m.userSrvc.GetUserById(remoteUser) +} + func (m *AuthenticateMiddleware) tryGetUserByCookie(r *http.Request) (*models.User, error) { username, err := helpers.ExtractCookieAuth(r, m.config) if err != nil { diff --git a/middlewares/authenticate_test.go b/middlewares/authenticate_test.go index e0794361..f6833bbd 100644 --- a/middlewares/authenticate_test.go +++ b/middlewares/authenticate_test.go @@ -3,6 +3,7 @@ package middlewares import ( "encoding/base64" "fmt" + "github.com/muety/wakapi/config" "net/http" "net/url" "testing" @@ -100,4 +101,81 @@ func TestAuthenticateMiddleware_tryGetUserByApiKeyQuery_Invalid(t *testing.T) { assert.Nil(t, result) } +func TestAuthenticateMiddleware_tryGetUserByTrustedHeader_Disabled(t *testing.T) { + cfg := config.Empty() + cfg.Security.TrustedHeaderAuth = false + cfg.Security.TrustedHeaderAuthKey = "Remote-User" + cfg.Security.TrustReverseProxyIps = "127.0.0.1,::1" + cfg.Security.ParseTrustReverseProxyIPs() + config.Set(cfg) + + testUser := &models.User{ID: "user01"} + + mockRequest := &http.Request{ + Header: http.Header{"Remote-User": []string{testUser.ID}}, + } + + userServiceMock := new(mocks.UserServiceMock) + userServiceMock.On("GetUserById", testUser.ID).Return(testUser, nil) + + sut := NewAuthenticateMiddleware(userServiceMock) + + result, actualErr := sut.tryGetUserByTrustedHeader(mockRequest) + assert.Error(t, actualErr) + assert.Nil(t, result) +} + +func TestAuthenticateMiddleware_tryGetUserByTrustedHeader_Untrusted(t *testing.T) { + cfg := config.Empty() + cfg.Security.TrustedHeaderAuth = true + cfg.Security.TrustedHeaderAuthKey = "Remote-User" + cfg.Security.TrustReverseProxyIps = "192.168.0.1" + cfg.Security.ParseTrustReverseProxyIPs() + config.Set(cfg) + + testUser := &models.User{ID: "user01"} + + mockRequest := &http.Request{ + Header: http.Header{ + "Remote-User": []string{testUser.ID}, + "X-Forwarded-For": []string{"192.168.0.1"}, + }, + RemoteAddr: "127.0.0.1:54654", + } + + userServiceMock := new(mocks.UserServiceMock) + userServiceMock.On("GetUserById", testUser.ID).Return(testUser, nil) + + sut := NewAuthenticateMiddleware(userServiceMock) + + result, actualErr := sut.tryGetUserByTrustedHeader(mockRequest) + assert.Error(t, actualErr) + assert.Nil(t, result) +} + +func TestAuthenticateMiddleware_tryGetUserByTrustedHeader_Success(t *testing.T) { + cfg := config.Empty() + cfg.Security.TrustedHeaderAuth = true + cfg.Security.TrustedHeaderAuthKey = "Remote-User" + cfg.Security.TrustReverseProxyIps = "127.0.0.1,::1" + cfg.Security.ParseTrustReverseProxyIPs() + config.Set(cfg) + + testUser := &models.User{ID: "user01"} + + mockRequest := &http.Request{ + Header: http.Header{"Remote-User": []string{testUser.ID}}, + RemoteAddr: "[::1]:54654", + } + + userServiceMock := new(mocks.UserServiceMock) + userServiceMock.On("GetUserById", testUser.ID).Return(testUser, nil) + + sut := NewAuthenticateMiddleware(userServiceMock) + + result, actualErr := sut.tryGetUserByTrustedHeader(mockRequest) + assert.Equal(t, testUser, result) + assert.Nil(t, actualErr) +} + // TODO: somehow test cookie auth function diff --git a/routes/api/badge_test.go b/routes/api/badge_test.go index d4a5a0a6..6ab32770 100644 --- a/routes/api/badge_test.go +++ b/routes/api/badge_test.go @@ -2,6 +2,7 @@ package api import ( "github.com/go-chi/chi/v5" + "github.com/muety/wakapi/config" "github.com/muety/wakapi/middlewares" "github.com/muety/wakapi/mocks" "github.com/muety/wakapi/models" @@ -39,6 +40,8 @@ var ( ) func TestBadgeHandler_Get(t *testing.T) { + config.Set(config.Empty()) + router := chi.NewRouter() apiRouter := chi.NewRouter() apiRouter.Use(middlewares.NewPrincipalMiddleware())