diff options
| author | Paul Buetow <paul@buetow.org> | 2025-09-25 22:44:35 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-09-25 22:44:35 +0300 |
| commit | 02f8e5b3bf8fc60225ebe764f061d8ffc51a3cee (patch) | |
| tree | 0877aec614856e335a81a72f04ba89cdb8621e1f | |
| parent | c3c71345db9086392cd9b7529c7f5287009c226e (diff) | |
Bump version to 0.12.0v0.12.0
| -rw-r--r-- | docs/coverage.html | 100 | ||||
| -rw-r--r-- | docs/coverage.out | 3596 | ||||
| -rw-r--r-- | internal/version.go | 2 |
3 files changed, 1849 insertions, 1849 deletions
diff --git a/docs/coverage.html b/docs/coverage.html index 4a3153b..18886c9 100644 --- a/docs/coverage.html +++ b/docs/coverage.html @@ -7213,9 +7213,9 @@ import ( "golang.org/x/sys/unix" ) -func tryLockFile(fd uintptr) error <span class="cov10" title="213">{ - if err := unix.Flock(int(fd), unix.LOCK_EX|unix.LOCK_NB); err != nil </span><span class="cov9" title="136">{ - if errors.Is(err, unix.EWOULDBLOCK) </span><span class="cov9" title="136">{ +func tryLockFile(fd uintptr) error <span class="cov10" title="198">{ + if err := unix.Flock(int(fd), unix.LOCK_EX|unix.LOCK_NB); err != nil </span><span class="cov9" title="121">{ + if errors.Is(err, unix.EWOULDBLOCK) </span><span class="cov9" title="121">{ return errLockWouldBlock }</span> <span class="cov0" title="0">return err</span> @@ -7259,18 +7259,18 @@ var windowSeconds int64 = int64(defaultWindow.Seconds()) var errLockWouldBlock = errors.New("stats: lock would block") // SetWindow sets the sliding window used for pruning and aggregation. -func SetWindow(d time.Duration) <span class="cov4" title="82">{ +func SetWindow(d time.Duration) <span class="cov5" title="82">{ if d < time.Second </span><span class="cov0" title="0">{ d = time.Second }</span> - <span class="cov4" title="82">if d > 24*time.Hour </span><span class="cov0" title="0">{ + <span class="cov5" title="82">if d > 24*time.Hour </span><span class="cov0" title="0">{ d = 24 * time.Hour }</span> - <span class="cov4" title="82">atomic.StoreInt64(&windowSeconds, int64(d.Seconds()))</span> + <span class="cov5" title="82">atomic.StoreInt64(&windowSeconds, int64(d.Seconds()))</span> } // Window returns the current sliding window. -func Window() time.Duration <span class="cov4" title="77">{ return time.Duration(atomic.LoadInt64(&windowSeconds)) * time.Second }</span> +func Window() time.Duration <span class="cov5" title="77">{ return time.Duration(atomic.LoadInt64(&windowSeconds)) * time.Second }</span> // Event represents a single request/response with sizes. type Event struct { @@ -7305,108 +7305,108 @@ type Snapshot struct { } // Update appends one event and prunes old entries under lock. -func Update(ctx context.Context, provider, model string, sentBytes, recvBytes int) error <span class="cov4" title="77">{ +func Update(ctx context.Context, provider, model string, sentBytes, recvBytes int) error <span class="cov5" title="77">{ dir, err := CacheDir() if err != nil </span><span class="cov0" title="0">{ return err }</span> - <span class="cov4" title="77">if err := os.MkdirAll(dir, 0o755); err != nil </span><span class="cov0" title="0">{ + <span class="cov5" title="77">if err := os.MkdirAll(dir, 0o755); err != nil </span><span class="cov0" title="0">{ return err }</span> - <span class="cov4" title="77">lockPath := filepath.Join(dir, lockFileName) + <span class="cov5" title="77">lockPath := filepath.Join(dir, lockFileName) f, err := os.OpenFile(lockPath, os.O_CREATE|os.O_RDWR, 0o600) if err != nil </span><span class="cov0" title="0">{ return err }</span> - <span class="cov4" title="77">defer f.Close() + <span class="cov5" title="77">defer f.Close() unlock, err := acquireFileLock(ctx, f) if err != nil </span><span class="cov0" title="0">{ return err }</span> - <span class="cov4" title="77">defer func() </span><span class="cov4" title="77">{ _ = unlock() }</span>() + <span class="cov5" title="77">defer func() </span><span class="cov5" title="77">{ _ = unlock() }</span>() // Read existing file (if any) - <span class="cov4" title="77">path := filepath.Join(dir, fileName) + <span class="cov5" title="77">path := filepath.Join(dir, fileName) var sf File - if b, rerr := os.ReadFile(path); rerr == nil </span><span class="cov4" title="74">{ + if b, rerr := os.ReadFile(path); rerr == nil </span><span class="cov5" title="74">{ _ = json.Unmarshal(b, &sf) }</span> - <span class="cov4" title="77">if sf.Version != fileVersion </span><span class="cov1" title="3">{ + <span class="cov5" title="77">if sf.Version != fileVersion </span><span class="cov2" title="3">{ sf = File{Version: fileVersion} }</span> - <span class="cov4" title="77">now := time.Now() + <span class="cov5" title="77">now := time.Now() win := Window() sf.WindowSeconds = int(win.Seconds()) // Append event sf.Events = append(sf.Events, Event{TS: now, Provider: provider, Model: model, Sent: int64(sentBytes), Recv: int64(recvBytes)}) // Prune old cutoff := now.Add(-win) - if len(sf.Events) > 0 </span><span class="cov4" title="77">{ + if len(sf.Events) > 0 </span><span class="cov5" title="77">{ // Find first >= cutoff i := 0 - for ; i < len(sf.Events); i++ </span><span class="cov4" title="78">{ - if !sf.Events[i].TS.Before(cutoff) </span><span class="cov4" title="77">{ + for ; i < len(sf.Events); i++ </span><span class="cov5" title="78">{ + if !sf.Events[i].TS.Before(cutoff) </span><span class="cov5" title="77">{ break</span> } } - <span class="cov4" title="77">if i > 0 </span><span class="cov1" title="1">{ + <span class="cov5" title="77">if i > 0 </span><span class="cov1" title="1">{ sf.Events = append([]Event(nil), sf.Events[i:]...) }</span> } - <span class="cov4" title="77">sf.UpdatedAt = now + <span class="cov5" title="77">sf.UpdatedAt = now // Write atomically tmp, err := os.CreateTemp(dir, fileName+".tmp.") if err != nil </span><span class="cov0" title="0">{ return err }</span> - <span class="cov4" title="77">enc := json.NewEncoder(tmp) + <span class="cov5" title="77">enc := json.NewEncoder(tmp) enc.SetEscapeHTML(false) if err := enc.Encode(&sf); err != nil </span><span class="cov0" title="0">{ tmp.Close() os.Remove(tmp.Name()) return err }</span> - <span class="cov4" title="77">if err := tmp.Sync(); err != nil </span><span class="cov0" title="0">{ + <span class="cov5" title="77">if err := tmp.Sync(); err != nil </span><span class="cov0" title="0">{ tmp.Close() os.Remove(tmp.Name()) return err }</span> - <span class="cov4" title="77">if err := tmp.Close(); err != nil </span><span class="cov0" title="0">{ + <span class="cov5" title="77">if err := tmp.Close(); err != nil </span><span class="cov0" title="0">{ os.Remove(tmp.Name()) return err }</span> - <span class="cov4" title="77">if err := os.Rename(tmp.Name(), path); err != nil </span><span class="cov0" title="0">{ + <span class="cov5" title="77">if err := os.Rename(tmp.Name(), path); err != nil </span><span class="cov0" title="0">{ os.Remove(tmp.Name()) return err }</span> - <span class="cov4" title="77">return nil</span> + <span class="cov5" title="77">return nil</span> } -func acquireFileLock(ctx context.Context, f *os.File) (func() error, error) <span class="cov4" title="77">{ +func acquireFileLock(ctx context.Context, f *os.File) (func() error, error) <span class="cov5" title="77">{ fd := f.Fd() - for </span><span class="cov5" title="213">{ + for </span><span class="cov6" title="198">{ err := tryLockFile(fd) - if err == nil </span><span class="cov4" title="77">{ - return func() error </span><span class="cov4" title="77">{ return unlockFile(fd) }</span>, nil + if err == nil </span><span class="cov5" title="77">{ + return func() error </span><span class="cov5" title="77">{ return unlockFile(fd) }</span>, nil } - <span class="cov5" title="136">if errors.Is(err, errLockWouldBlock) </span><span class="cov5" title="136">{ + <span class="cov5" title="121">if errors.Is(err, errLockWouldBlock) </span><span class="cov5" title="121">{ select </span>{ case <-ctx.Done():<span class="cov0" title="0"> return nil, ctx.Err()</span> - case <-time.After(5 * time.Millisecond):<span class="cov5" title="136"></span> + case <-time.After(5 * time.Millisecond):<span class="cov5" title="121"></span> } - <span class="cov5" title="136">continue</span> + <span class="cov5" title="121">continue</span> } <span class="cov0" title="0">return nil, err</span> } } // Snapshot reads and aggregates events within the configured window. -func TakeSnapshot() (Snapshot, error) <span class="cov4" title="69">{ +func TakeSnapshot() (Snapshot, error) <span class="cov5" title="69">{ dir, err := CacheDir() if err != nil </span><span class="cov0" title="0">{ return Snapshot{}, err }</span> - <span class="cov4" title="69">path := filepath.Join(dir, fileName) + <span class="cov5" title="69">path := filepath.Join(dir, fileName) b, err := os.ReadFile(path) if err != nil </span><span class="cov0" title="0">{ if errors.Is(err, os.ErrNotExist) </span><span class="cov0" title="0">{ @@ -7414,30 +7414,30 @@ func TakeSnapshot() (Snapshot, error) <span class="cov4" title="69">{ }</span> <span class="cov0" title="0">return Snapshot{}, err</span> } - <span class="cov4" title="69">var sf File + <span class="cov5" title="69">var sf File if err := json.Unmarshal(b, &sf); err != nil </span><span class="cov0" title="0">{ return Snapshot{}, err }</span> - <span class="cov4" title="69">win := time.Duration(sf.WindowSeconds) * time.Second + <span class="cov5" title="69">win := time.Duration(sf.WindowSeconds) * time.Second if win <= 0 </span><span class="cov0" title="0">{ win = Window() - }</span> else<span class="cov4" title="69"> { + }</span> else<span class="cov5" title="69"> { SetWindow(win) // align process with file window if changed elsewhere }</span> - <span class="cov4" title="69">cutoff := time.Now().Add(-win) + <span class="cov5" title="69">cutoff := time.Now().Add(-win) snap := Snapshot{Providers: make(map[string]ProviderEntry), Window: win} - for _, ev := range sf.Events </span><span class="cov10" title="25908">{ + for _, ev := range sf.Events </span><span class="cov10" title="5778">{ if ev.TS.Before(cutoff) </span><span class="cov0" title="0">{ continue</span> } - <span class="cov10" title="25908">snap.Global.Reqs++ + <span class="cov10" title="5778">snap.Global.Reqs++ snap.Global.Sent += ev.Sent snap.Global.Recv += ev.Recv pe := snap.Providers[ev.Provider] - if pe.Models == nil </span><span class="cov6" title="465">{ + if pe.Models == nil </span><span class="cov7" title="465">{ pe.Models = make(map[string]Counters) }</span> - <span class="cov10" title="25908">pe.Totals.Reqs++ + <span class="cov10" title="5778">pe.Totals.Reqs++ pe.Totals.Sent += ev.Sent pe.Totals.Recv += ev.Recv mc := pe.Models[ev.Model] @@ -7447,17 +7447,17 @@ func TakeSnapshot() (Snapshot, error) <span class="cov4" title="69">{ pe.Models[ev.Model] = mc snap.Providers[ev.Provider] = pe</span> } - <span class="cov4" title="69">mins := win.Minutes() + <span class="cov5" title="69">mins := win.Minutes() if mins <= 0 </span><span class="cov0" title="0">{ mins = 0.001 }</span> - <span class="cov4" title="69">snap.RPM = float64(snap.Global.Reqs) / mins + <span class="cov5" title="69">snap.RPM = float64(snap.Global.Reqs) / mins return snap, nil</span> } // CacheDir resolves the cache directory for stats. -func CacheDir() (string, error) <span class="cov5" title="147">{ - if x := os.Getenv("XDG_CACHE_HOME"); stringsTrim(x) != "" </span><span class="cov3" title="27">{ +func CacheDir() (string, error) <span class="cov6" title="147">{ + if x := os.Getenv("XDG_CACHE_HOME"); stringsTrim(x) != "" </span><span class="cov4" title="27">{ return filepath.Join(x, "hexai"), nil }</span> <span class="cov5" title="120">home, err := os.UserHomeDir() @@ -7468,16 +7468,16 @@ func CacheDir() (string, error) <span class="cov5" title="147">{ } // stringsTrim is a tiny helper to avoid importing strings everywhere here. -func stringsTrim(s string) string <span class="cov5" title="147">{ +func stringsTrim(s string) string <span class="cov6" title="147">{ i := 0 j := len(s) for i < j && (s[i] == ' ' || s[i] == '\t' || s[i] == '\n' || s[i] == '\r') </span><span class="cov0" title="0">{ i++ }</span> - <span class="cov5" title="147">for j > i && (s[j-1] == ' ' || s[j-1] == '\t' || s[j-1] == '\n' || s[j-1] == '\r') </span><span class="cov0" title="0">{ + <span class="cov6" title="147">for j > i && (s[j-1] == ' ' || s[j-1] == '\t' || s[j-1] == '\n' || s[j-1] == '\r') </span><span class="cov0" title="0">{ j-- }</span> - <span class="cov5" title="147">if i == 0 && j == len(s) </span><span class="cov5" title="147">{ + <span class="cov6" title="147">if i == 0 && j == len(s) </span><span class="cov6" title="147">{ return s }</span> <span class="cov0" title="0">return s[i:j]</span> diff --git a/docs/coverage.out b/docs/coverage.out index 7133d0a..7c8c813 100644 --- a/docs/coverage.out +++ b/docs/coverage.out @@ -2282,352 +2282,354 @@ codeberg.org/snonux/hexai/internal/tmux/tmux.go:79.30,81.141 2 0 codeberg.org/snonux/hexai/internal/tmux/tmux.go:81.141,82.12 1 0 codeberg.org/snonux/hexai/internal/tmux/tmux.go:84.3,84.15 1 0 codeberg.org/snonux/hexai/internal/tmux/tmux.go:86.2,86.13 1 0 +codeberg.org/snonux/hexai/cmd/hexai-tmux-action/main.go:12.13,25.107 9 0 +codeberg.org/snonux/hexai/cmd/hexai-tmux-action/main.go:25.107,28.3 2 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.104,24.3 1 0 -codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 1 -codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 1 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 codeberg.org/snonux/hexai/cmd/hexai-tmux-action/main.go:12.13,25.107 9 0 codeberg.org/snonux/hexai/cmd/hexai-tmux-action/main.go:25.107,28.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:109.29,161.2 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:165.35,165.84 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:174.64,176.19 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.19,178.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:180.2,181.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:109.29,161.2 2 18 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.35,165.84 1 17 +codeberg.org/snonux/hexai/internal/appconfig/config.go:174.64,176.19 2 17 +codeberg.org/snonux/hexai/internal/appconfig/config.go:176.19,178.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:180.2,181.16 2 16 codeberg.org/snonux/hexai/internal/appconfig/config.go:181.16,184.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:184.8,185.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.85,187.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:192.2,192.21 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:192.21,194.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:194.51,196.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:198.2,198.12 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:267.38,269.2 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:271.47,273.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:184.8,185.85 1 16 +codeberg.org/snonux/hexai/internal/appconfig/config.go:185.85,187.4 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:192.2,192.21 1 16 +codeberg.org/snonux/hexai/internal/appconfig/config.go:192.21,194.51 1 16 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.51,196.4 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:198.2,198.12 1 16 +codeberg.org/snonux/hexai/internal/appconfig/config.go:267.38,269.2 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.47,273.17 2 4 codeberg.org/snonux/hexai/internal/appconfig/config.go:273.17,275.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:276.2,276.25 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:276.25,278.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.2,279.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.65,281.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:276.2,276.25 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:276.25,278.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:279.2,279.65 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:279.65,281.3 1 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:282.2,283.30 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:283.30,284.53 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:284.53,285.52 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:285.52,287.5 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:290.2,290.14 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.35,369.77 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.77,378.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.2,381.38 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.38,384.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:387.2,387.44 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:387.44,394.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.2,397.44 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.44,400.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.2,403.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.36,406.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.2,409.82 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.82,412.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:415.2,415.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:415.47,418.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.2,421.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.57,428.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:431.2,431.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:431.71,438.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:441.2,441.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:441.68,448.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:452.2,452.59 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:452.59,453.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:453.67,455.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:456.3,456.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:456.66,458.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:459.3,459.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:459.66,461.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:462.3,462.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:462.65,464.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:465.3,465.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:465.64,467.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.65,470.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.53,475.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:477.2,487.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:487.41,488.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:488.67,490.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:491.3,491.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:491.71,493.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:494.3,494.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:494.68,496.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:497.3,497.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:497.65,499.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:500.3,500.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:500.69,502.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:503.3,503.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:503.66,505.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:506.3,506.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:506.66,508.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:509.3,509.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:509.64,511.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:512.3,512.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.35,369.77 2 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.77,378.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.2,381.38 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.38,384.3 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:387.2,387.44 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:387.44,394.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.2,397.44 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.44,400.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.2,403.36 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.36,406.3 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.2,409.82 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.82,412.3 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:415.2,415.47 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:415.47,418.3 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.2,421.57 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.57,428.3 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:431.2,431.71 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:431.71,438.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:441.2,441.68 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:441.68,448.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:452.2,452.59 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:452.59,453.67 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:453.67,455.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:456.3,456.66 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:456.66,458.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:459.3,459.66 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:459.66,461.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:462.3,462.65 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:462.65,464.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.3,465.64 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.64,467.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.65 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.65,470.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.53 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.53,475.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:477.2,487.41 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:487.41,488.67 1 10 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.67,490.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:491.3,491.71 1 10 +codeberg.org/snonux/hexai/internal/appconfig/config.go:491.71,493.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.3,494.68 1 10 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.68,496.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:497.3,497.65 1 10 +codeberg.org/snonux/hexai/internal/appconfig/config.go:497.65,499.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.3,500.69 1 10 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.69,502.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:503.3,503.66 1 10 +codeberg.org/snonux/hexai/internal/appconfig/config.go:503.66,505.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:506.3,506.66 1 10 +codeberg.org/snonux/hexai/internal/appconfig/config.go:506.66,508.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:509.3,509.64 1 10 +codeberg.org/snonux/hexai/internal/appconfig/config.go:509.64,511.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:512.3,512.68 1 10 codeberg.org/snonux/hexai/internal/appconfig/config.go:512.68,514.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:515.3,515.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:515.3,515.66 1 10 codeberg.org/snonux/hexai/internal/appconfig/config.go:515.66,517.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:518.3,518.44 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:518.44,519.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:519.52,530.5 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:534.2,534.45 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:534.45,535.60 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:535.60,537.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:538.3,538.60 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:538.60,540.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:543.2,543.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:543.67,545.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:548.2,548.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:548.32,550.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:553.2,553.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:518.3,518.44 1 10 +codeberg.org/snonux/hexai/internal/appconfig/config.go:518.44,519.52 1 9 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.52,530.5 1 16 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.2,534.45 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.45,535.60 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:535.60,537.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:538.3,538.60 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:538.60,540.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.2,543.67 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.67,545.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:548.2,548.32 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:548.32,550.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:553.2,553.32 1 15 codeberg.org/snonux/hexai/internal/appconfig/config.go:553.32,555.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:557.2,557.12 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:560.66,562.16 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:562.16,563.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:557.2,557.12 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:560.66,562.16 2 17 +codeberg.org/snonux/hexai/internal/appconfig/config.go:562.16,563.43 1 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:563.43,565.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:566.3,566.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,574.22 5 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:574.22,575.20 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.20,577.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.3,578.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:582.2,591.21 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:591.21,592.216 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:592.216,593.12 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:595.3,595.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.3,566.18 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,574.22 5 16 +codeberg.org/snonux/hexai/internal/appconfig/config.go:574.22,575.20 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.20,577.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.3,578.24 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:582.2,591.21 2 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:591.21,592.216 1 41 +codeberg.org/snonux/hexai/internal/appconfig/config.go:592.216,593.12 1 38 +codeberg.org/snonux/hexai/internal/appconfig/config.go:595.3,595.41 1 3 codeberg.org/snonux/hexai/internal/appconfig/config.go:595.41,597.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:600.2,600.19 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:600.19,602.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:606.2,608.53 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.53,609.59 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:609.59,610.26 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.15,612.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:600.2,600.19 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:600.19,602.3 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:606.2,608.53 2 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.53,609.59 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:609.59,610.26 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.15,612.40 1 3 codeberg.org/snonux/hexai/internal/appconfig/config.go:613.13,614.35 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:615.17,616.40 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:620.2,620.50 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:620.50,621.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.52,622.26 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:623.15,624.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:620.2,620.50 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:620.50,621.52 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.52,622.26 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:623.15,624.34 1 3 codeberg.org/snonux/hexai/internal/appconfig/config.go:625.13,626.29 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:627.17,628.34 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:632.2,632.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:635.37,639.2 3 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:642.39,643.25 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:643.25,645.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:646.2,646.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:646.56,648.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:649.2,649.34 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:649.34,651.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:652.2,652.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:652.32,654.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:655.2,655.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:655.32,657.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:658.2,658.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:658.36,660.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:661.2,661.38 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:661.38,663.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:664.2,664.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:664.36,666.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:667.2,667.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:667.36,669.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:670.2,670.38 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:670.38,672.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:673.2,673.55 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:673.55,675.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:676.2,676.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:676.56,678.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:679.2,679.55 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:679.55,681.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:682.2,682.33 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:682.33,684.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:685.2,685.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:685.53,687.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:691.40,693.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:693.66,695.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:696.2,696.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:696.65,698.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:699.2,699.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:699.65,701.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:702.2,702.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:702.64,704.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:705.2,705.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:705.63,707.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:708.2,708.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:708.64,710.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:712.2,712.59 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:712.59,714.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:716.2,716.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:716.53,718.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:720.2,720.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:720.66,722.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:723.2,723.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:723.70,725.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:726.2,726.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:726.67,728.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:729.2,729.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:729.64,731.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:732.2,732.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:732.68,734.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:735.2,735.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:735.65,737.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:738.2,738.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:738.65,740.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:741.2,741.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:741.63,743.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:744.2,744.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:632.2,632.18 1 15 +codeberg.org/snonux/hexai/internal/appconfig/config.go:635.37,639.2 3 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:642.39,643.25 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.25,645.3 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.2,646.56 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.56,648.3 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.2,649.34 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.34,651.3 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.2,652.32 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.32,654.3 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:655.2,655.32 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:655.32,657.3 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:658.2,658.36 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:658.36,660.3 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:661.2,661.38 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:661.38,663.3 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:664.2,664.36 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:664.36,666.3 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:667.2,667.36 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:667.36,669.3 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:670.2,670.38 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:670.38,672.3 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:673.2,673.55 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:673.55,675.3 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:676.2,676.56 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:676.56,678.3 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:679.2,679.55 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:679.55,681.3 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:682.2,682.33 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:682.33,684.3 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:685.2,685.53 1 35 +codeberg.org/snonux/hexai/internal/appconfig/config.go:685.53,687.3 1 12 +codeberg.org/snonux/hexai/internal/appconfig/config.go:691.40,693.66 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:693.66,695.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:696.2,696.65 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:696.65,698.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:699.2,699.65 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:699.65,701.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:702.2,702.64 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:702.64,704.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:705.2,705.63 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:705.63,707.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:708.2,708.64 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:708.64,710.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:712.2,712.59 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:712.59,714.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:716.2,716.53 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:716.53,718.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:720.2,720.66 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:720.66,722.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:723.2,723.70 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:723.70,725.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.2,726.67 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.67,728.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:729.2,729.64 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:729.64,731.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:732.2,732.68 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:732.68,734.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:735.2,735.65 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:735.65,737.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.2,738.65 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.65,740.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:741.2,741.63 1 19 +codeberg.org/snonux/hexai/internal/appconfig/config.go:741.63,743.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:744.2,744.67 1 19 codeberg.org/snonux/hexai/internal/appconfig/config.go:744.67,746.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:747.2,747.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:747.2,747.65 1 19 codeberg.org/snonux/hexai/internal/appconfig/config.go:747.65,749.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:751.2,751.59 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:751.59,753.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:754.2,754.59 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:754.59,756.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:758.2,758.34 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:758.34,760.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:761.2,761.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:761.57,7 |
