All three implementations had a defect where UNSANDBOX_PUBLIC_KEY/
UNSANDBOX_SECRET_KEY env vars were checked before --account N, making
it impossible to select a specific accounts.csv row when env vars exist.
Correct priority order now enforced:
1. Explicit -p/-k flags
2. --account N -> accounts.csv row N (bypasses env vars)
3. UNSANDBOX_PUBLIC_KEY / UNSANDBOX_SECRET_KEY env vars
4. ~/.unsandbox/accounts.csv row 0 (or UNSANDBOX_ACCOUNT env var)
5. ./accounts.csv row 0
Changes per file:
- clients/csharp/sync/src/Un.cs: add LoadAccountsCSV(), rewrite
GetApiKeys() with correct tier ordering, add Account=-1 to Args,
parse --account N, update all GetApiKeys call sites
- clients/dotnet/sync/src/Un.cs: same as above (top-level stmt style)
- clients/swift/sync/src/un.swift: reorder resolveCredentials() tiers,
add accountIndex to CLIArgs, parse --account N, pass to entry point
Also create un.swift symlink at repo root (parallel to Un.cs symlink).