Detailed changes
@@ -0,0 +1,73 @@
+# Preferred tooling
+
+## git-bug
+
+I like using a bug tracker that embeds bugs and identities and conversations directly in the repo we're working in. These can be private bugs just for me, or public bugs I push to the remote repo to collaborate on with other contributors. It's called `git-bug` and you interact with it like so.
+
+- Create new bugs: `git-bug bug new [flags]`
+ - -t bug subject
+ - -m bug body
+ - -F accept the subject _and_ from the given files, use `-` to read from stdin. The first line is the subject, then include a blank line, then the body, then a blank line, then any trailers.
+- Commenting on a bug: `git-bug bug comment new [BUG_HASH] [flags]`
+ - -m comment body
+ - -F accept the message from the given files, use `-` to read from stdin
+- Viewing a bug's timeline: `git-bug bug show [BUG_HASH]`
+- Pushing and pulling: always pull before pushing
+ - `git bugs-pull`
+ - `git bugs-push`
+
+# Interacting with git
+
+I have git configured to use a pager you don't understand, so make sure to _always_ prepend git invocations with `GIT_PAGER=cat`.
+
+## Committing
+
+During the course of our conversation, we may implement not only the thing we set out to implement, we might also introduce some bugs and fix them before making the commit. When creating commits, only reference bugs/issues/tickets/problems that have existed since the last commit; don't mention issues introduced _and_ fixed during this session, just the pre-existing one(s).
+
+Strictly follow Conventional Commits. For AUR packages, the prefix will usually be `chore:` with no scope. For most source code repositories, we'll usually require both an appropriate prefix _and_ scope. Necessity of scope increases with repository size; the smaller the repo, the less necessary the scope.
+
+Create/amend commits exclusively using `formatted-commit`. Try to use it normally, but if it's not in my PATH, ask me to `go install git.secluded.site/formatted-commit@latest`. It has no sub-commands and the following options:
+<formatted-commit_flags>
+-t --type Commit type (required)
+-s --scope Commit scope (optional)
+-B --breaking Mark as breaking change (optional)
+-m --message Commit message (required)
+-b --body Commit body (optional)
+-T --trailer Trailer in 'Sentence-case-key: value' format (optional, repeatable)
+-a --amend Amend the previous commit (optional)
+-h --help
+</formatted-commit_flags>
+<formatted-commit_example>
+formatted-commit -t feat -s "web/git-bug" -m "do a fancy new thing" -T "Crush <crush@charm.land>" -b "$(cat <<'EOF'
+Multi-line
+
+- Body
+- Here
+
+EOF
+)"
+</formatted-commit_example>
+
+When directed to sign commits, sign as `Crush <crush@charm.land>` as shown in the examples.
+
+# Ticket tracking
+
+- When I provide the URL to or number of a ticket, todo, or issue, use the appropriate tool.
+ - github.com or "issue": `gh issue view https://github.com/USER/REPO/issues/XXX` where XXX is the issue number. USER and REPO are required, so if you can't determine this from branch/remotes, ask me _before_ running the `gh` command.
+ - todo.sr.ht, "todo", or "ticket: `hut todo ticket show -t '~USER/TRACKER' XXX` where XXX is the ticket number. I'll refer to these as todos or tickets. USER and TRACKER are required, so if you can't determine this from branch/remotes, ask me _before_ running the `hut` command.
+ - Run `git remote -v` and notice whether any of the remotes include 'soprani.ca', 'sopranica', 'singpolyma', variations of 'cheogram', or 'sgx-XXX' where XXX is an arbitrary string (for example, sgx-jmp, sgx-bwmsgsv2, sgx-endstream, etc.). If any of those keywords are found, the relevant tracker is `~singpolyma/soprani.ca`.
+- When I _specifically_ reference a "bug" and provide a hash instead of a number, I'm referring to a bug created with `git-bug`. Use `git-bug bug show HASH` to read the bug and discussion. You may use `git-bug bug status (close|open)` to modify the bug's status ONLY if I give explicit permission.
+
+# General development practises
+
+In my opinion, JSON should _never_ need to be written or read by humans, unless the project already requires that. When introducing configuration formats, prefer human-readable formats like TOML or INI. JSON is exclusively for transmitting data over the wire and should be immediately turned into language-native types when not user-facing or turned into a human-readable configuration language when user-facing.
+
+## How to defer work
+
+Your suggestions are valuable and our findings while working on important. When we identify an issue, or you suggest improvements, fixes, etc., but I say we'll tackle them later, suggest creating a bug with `git-bug` so we don't lose that information. Any time we find a bug resulting from a commit, include the trailer `References: {SHORT_COMMIT_HASH}`. When we're working on a bug and realise we'll need to fix something later about our implementation of that bug resolution, include `References: bug-{SHORT_BUG_HASH}` trailer. For _all_ bugs, issues, todos, tickets, and comments you create, include yourself in the `Co-authored-by:` trailer at the bottom.
+
+# Workflows
+
+- When you specifically see a suite of `planning` MCP tools including `set_goal`, `change_goal`, `add_tasks`, `get_tasks`, `update_task_statuses`, `modify_task`, and `delete_task`, follow this general workflow.
+ - If I ask to work on an issue or bug, set your goal and include a description first. If you need to look at relevant files, do so. After you have a _solid_ idea of what's required to complete my request, fill out your tasks accordingly and get started.
+- When you do not see that specific list of tools from that specific `planning` server, use whatever workflow the todo tools you do have prescribe.
@@ -0,0 +1,81 @@
+We need to create a new AUR package (or multiple) from scratch.
+
+Code style:
+
+- Language(s): PKGBUILD is bash; .install (if necessary) is POSIX-shโcompatible
+ functions
+- Indent 2 spaces; UTF-8; LF endings; no trailing whitespace
+- Strings: single quotes for literals; double quotes when expanding vars
+- Functions: prepare(), build(), check(), package(); only define needed ones
+- No sudo, networking, or user config in build/package functions
+- Use install -Dm755 for binaries; set exact modes explicitly
+- Checksums: keep hashes in sync with sources
+- Keep .SRCINFO in lockstep with PKGBUILD; don't commit build artifacts
+
+During creation, follow this strict workflow. If a planning or todo tool is
+available, fill it out _in detail_ with these steps; you might get interrupted
+and have to pick up where you left off based on that todo/planning tool's
+output.
+
+1. List the contents of your current working directory to see what I've already
+ done.
+ - If you see text files, read them.
+ - If you see directories, list their contents.
+ - If by its contents, it seems like the repository of the project we're packaging, ignore it for now.
+ - If there are sub-directories of your current working directory with suffixes like `-bin` or `-git`, we're actually going to be creating _multiple_ AUR packages for the _same_ piece of software.
+ - `-git` packages clone the primary branch (main, master, trunk, etc.) and build and install the software from that source. We do not specify versions for these packages; updpkgsums determines the version and edits the PKGBUILD.
+ - `-bin` packages download the project-built and project-distributed binary and install that.
+ - Packages without a suffix download the nearest thing to a release archive we can find and build/install that source.
+ - There are no sub-directories of your current working directory, we're only creating one package. Look to your current working directory to determine whether we're creating a suffix-less package, or one with `-git` or `-bin`.
+2. Ask me for the package name (`provides=`), description (`description=`), and license (`license=()`), _and_ the license path inside the project repo (for `install`ing). Then for each of the non`-git` package types, ask me for its current version and the source URL.
+ - For `-git` packages, you _must_ prefix the source URL with `git+https://...`. Ask me which branch to check out. Include the following function to support versioning.
+ ```bash
+ pkgver() {
+ cd "$pkgname" || exit
+ ( set -o pipefail
+ git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' ||
+ printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+ )
+ }
+ ```
+ - For `-bin` packages, use `bin-name-$pkgver:https://...` in the source, then `install` `bin-name-$pkgver` as `bin-name`. Additionally, we'll need to obtain the license from the original repository. If the source is GitHub, the raw URL is `https://raw.githubusercontent.com/bmf-san/ggc/refs/tags/{TAG}/LICENSE`. If the source is not GitHub, ask me for the raw URL to the tagged LICENSE file.
+3. For each package we're creating, write a new `PKGBUILD` to that directory with the details above. The `Maintainer` comment at the top should be `Amolith <amolith@secluded.site>`. If multiple packages, make sure to include `conflicts=()` so one can't get installed alongside the other. Make sure packages with `-git` or `-bin` use the suffix-less package name in the provides field. Use `b2sums`.
+4. Ask me to find and relay the build system/installation methods recommended by the project. This might be `cargo` for Rust projects, `go` for Go, etc.
+5. Once I've relayed the project's instructions, adapt those for each of the packages depending on project language and update the PKGBUILDs' `build()`, `check()`, `package()`, etc. functions.
+ - Rust
+ - `-git` and `-bin` are pretty self-explanatory for Rust. For suffix-less packages, download the version crate from cargo's API as a `.crate` file and build it using `cargo`.
+ - Go
+ - To keep all Go modules in the package build environment, use
+ ```
+ prepare() {
+ cd "${pkgname}-${pkgver}"
+ export GOPATH="${srcdir}"
+ go mod download -modcacherw
+ }
+ ```
+ - If the build process bakes in version information, use the following in the build() function.
+ ```
+ go build \
+ -trimpath \
+ -buildmode=pie \
+ -mod=readonly \
+ -modcacherw \
+ -ldflags "-linkmode external -extldflags \"${LDFLAGS}\"" \
+ "$pkgname" main.go # or ./cmd or ...
+ ```
+ If the build process does not bake version info in, use this.
+ ```
+ export CGO_CPPFLAGS="${CPPFLAGS}"
+ export CGO_CFLAGS="${CFLAGS}"
+ export CGO_CXXFLAGS="${CXXFLAGS}"
+ export CGO_LDFLAGS="${LDFLAGS}"
+ export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
+ ```
+6. Consider the diagnostics and present _all_ issues to me, whether you think they're relevant or not. Include reasoning why those issues are relevant, or why they're not. We'll work on any genuine issues until they're resolved before proceeding.
+7. Update checksums in each package directory with `updpkgsums`
+8. Install dependencies and build/install the package(s) by giving _me_ a code block of `makepkg -Ccsi` commands I can copy/paste. If there are multiple packages, include `cd` prior to `makepkg`. We'll work on any issues that arise during this step until they're resolved.
+ - I must run `makepkg` commands because you're prohibited from interacting with it.
+9. After I build the packages, run `namcap` on `./package-name-*.pkg.tar.zst` to lint them. Again, report all the issues to me and we'll work on them before continuing.
+10. Generate each package's `.SRCINFO` by, again, giving me a series `makepkg --printsrcinfo > .SRCINFO`. If just one package, no `cd` is necessary. Just `makepkg`.
+11. If the PKGBUILDs and .SRCINFOs are the only files you've created during this session, enter each package directory, then `git add` and `git commit` them. If there are other files you've modified that are tracked by git in those package directory, please show me the diff and ask which you should commit. Create a `.gitignore` in each package repo that lists everything in the dir we have _not_ committed. Use appropriate globbing.
+12. Clean all artefacts with `git clean -fdx`
@@ -1,146 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IEhBV2NqUSBBN1lmbE5o
-SGFRSFpOaE53dHpwNFd5UlZlOHI2Qk9GQUU1aHhRQ0lUcHpXWgpsL3N0M0VoRzN0
-aVRMUkoxcXJnRDZOV3FTVm5RaFlIOGtBbTZwUk5abmI0Ci0+IHBpdi1wMjU2IHBE
-YXpSZyBBOVJCM2FjcHh4RW05V3o5clEySzBBcEFxUXN3bEloaGErdkJSakpONlBZ
-MAp1dEJvcXRKVVlqYVVsa2RFSi9FN1JGdGtyZFQ4SmR6Q3hjT2FlVndFeTdnCi0+
-IE9uKi1ncmVhc2UgOzxHb2lgYApMMHo2WjlMZ3lNaGttSzhTCi0tLSB3bHV3VmFR
-S241S0pDd0taODB1aENMNnk0b1pHVFU2YnBXa2dHdjZxaEJRCsh5g/szN+jnnei5
-hjL+2RRz1pQucTPx5/0V1zn9asbfGnamwUto1/KqKnVuE8OafrReyA1HJHKPuo8p
-v3AIg78tAQFDlUX9OXU5CC3V4BjNcPcomgDfP2Hfc2+EPLYj8e6ebQF0waB0sI/J
-deEW6dMKLWMzOaMJoUaA240ShZLtsTCEOZbHbHcMeH1/bXx30ZpE3R+jH3cDe1ln
-rNUPyIyQd0QF8XGmsNaKn689YocWnrn4i6+56AwEyQZ/T8vvLLvxTViQtv1Y/kRB
-BKTusg9cqJJFLHkB3Qbsc8Z0ngI+RXIru1dPRYS4WciNJlp28jfADEsOWzNaAeyt
-N2AIrtHF63JysL1TonMR2B//V53LH/Qhw2cYjcQuN2pXEyOQgjj5goSIVXXE2gdJ
-wGHUgtOKvaAAGeHg92GWuHCwHazJV/Nm+kK3BDfs+X1Rwy/QFBapFAiQak+T6w0L
-7EEGMulvLL8Nysgfa4Zn6JCD37EO5wxYSsgdNEzbvHbQAsyBZ/UwDq53pT0+KYk1
-LjagAfbqcetA855ZYQOPlMhwZRtDV+6ML3QH8UR592W74oATXOTDE1FxfzvFw3qb
-/sfvHqFkJlJ/7fiFx+EXoK1xYADvvQDkIcU73/LhGmYZD8TZQ30tmQkn8Dip/AEV
-5zKl8DaCkTrRHhXyN669C1qR8qPD91Cz4Xj93eveqz5AL7m8Fp8h2bLV5xssvffH
-U9N6cY6sMFcqXXa8qDjHtypbjDiqWp2EvVZp3gPXuJeDyNjUpD8j8USYHVhLWBIO
-lQe4rRv5hHqjMZLTRmzCbGRGCJP8F6mmgi8uwrTlpT1pOF9sY1ml0uuVcTbXRP1U
-6y7MZns0UPxQv7dJnS1AJxPtpbq7wRfnIVwyxFKb95TRTbhpvxASbp1FU0aysxOj
-I6wv/JXP2DSH819dLwjY+XcVAh23LmT2g+XQM5dBVbrwwra9W4TMcla+cD72OWqS
-oHoPVsE/sq1CLAUVf34Yp5KCbo/ZUSdV4LRsjdsxRDhvATaMokgFlDguPXuV3K6Q
-ZPJ5dDl9/qc578bWLlCLRnIJ3ATAF861Z57crzKYQwOWILReIp8r8q2UU4thXXoA
-rZj6RZ7fW+Zj9sDHeNvDBCdcAv9cf4p4AZfztMOg0dg1M80YReiKGbq+8A+4a11d
-bRER6aT73aoHfN+bG/DWDMv32te6I+sAUr8X83G2y/xD1C/RmhPY+PntMEkvvLxa
-Ga1Zq9Iu7l10YjWBWX2xf1ruY2RDpFWt92V6WQQpt5BOe2mf3b34Xd2Ihf0H1iKL
-yya+Pbzdr3ZLVHsBVhoweVIr+6J/zSwVp7t7lHlWRZbViCEUj7usP0+RdioMQdEu
-3CJq/TuQDNH62EqLDxHWgo2akHjkysIjlPmEyg42zClrzGN7XOqPZVA9RyU7TeoT
-tvl98VnbbaVlM4rlZFdAoUbyTp34TQegK2KJQo6uZlQCTWujnmdKAVhnd7aplBaw
-WVQrCgboUFr5jN8zC31cgZpDs5RoO2DBr4EyHRKYR2qrHUZJXv7rHAYDoAI+5Uw/
-FHmU9md8GHqbXB+mvWu+T2UcC//GBnwN0xVkPRJmrDgS5ZEBL0IJZWKj11bHr3SH
-lXCMdy8Z3FJ4gVg1E1OLI6LIYYDYOCkcsXaPrsEnSrz9e7CgsQIot5Y7zBsz9yC3
-wYVB4c/wbcz02lcLeH13I3Q+ZsKnT6Jbxw3ZqYB45zjFaVfc1n2GjTyIh8ENKcKv
-GAHyFQLeLj9lmGy+f+Rnd4luWIpyQd3QjvuOFmU0SyJ3kQILLb6eXfdxPzkqh8Ni
-NewBQW78EOsw44MPFhLm6CCjXxq50gZ+Nbou1LZ25viSCRFRbCEtrDPEEbLsCDhh
-t65e4W97DBRy6EAZ7JjzDGjFVXTb79AvRia7VPhvfTXNe80qqrG5AMloPEl06lpf
-dc7L8PM9wkDMAWZqiJapcwhsko2p0E1OjXSM7cJKQBmmBQoPbd4kG+81f6/hSl8B
-4vDZ/f5SJSYkSNAmq3Z+CUTJbbUMZKDHO3VeOk2F2ClcyjmQ805h6TgySu23xYoI
-pvZS3By/ojvPsrhIR4RJBKZfW3/zNZo9kTD3cIMci8SMorVEyKTvYupEAqVJ5h14
-su72b/XebstWDdpOiI+zIwAioLpSNul1UTa0JU6FJllFVWRz2NnrI0GTuP2Ewgtm
-v5k4eNv9tQ0IrkHuLPSgs3RwewEXvgiNFG6xy/L4BbPTGtGfCPNvdbqmdj0tDySU
-ZqpMR/ZJYq00pqTh2bKccnzWmCbgJ7vZPxfQIUT7Hnv1Bge16p0cT6g4UvHbjAXa
-322Nuwy8cZ31mSget4h6Rexksr3ATI78vJtlI94pyIP9nDPh9tGt4NDx5X7g197p
-Z3miHcNSBTYzkH8YJOlxXk7TGs++WSTpwT3H1az50H9WuOlqtbDt6P+daZOknbdQ
-SoQfZ5rLG/yqH223NtZzDCOWa+1mdpspsU38gbakYOd1x23bVyxj3YCW8QcKo/my
-Gc1KnWNc0gmNHSBLWs5/1xjxUtH8TrAecTN2cRPos8kVImSabL5MHuOE9Q8GfaEt
-O2Qw7+2F6ObtOOCdgWhTJgmsr1lupHDpoxb83lsyc1rydsPq9Uxdtok23zoN4wgI
-nrRk7yOuQQ8I/B7xFTgPU+5VW+KPgNiKTPj//4IZz3N4AoimW4l+RRGntD6MvGDM
-vQV+YxF/rxa6cTWVwmXfxHkgiJrYmPIoYUqOIgQNot8vb5yvhbiCSgBfJFmieggm
-cBz0Netl1opbn5pWyDosQZ4pFA1CnqjELWlPWU7BY26QXgn9WIpu6CQO67IxI/rR
-zorEt5oU8pvlPPRJ1HRYKADiqE+cAfFdy6Jo8xkiGhQ4m5uKNurynGqRkX9xEXfi
-/7p1pK3X3TDOUvEcDMkzqVQV5DpB66Ba2FmqfbxIt+7mBNjg783LxlQPHexeXkCb
-UictB9pj3Id4voQ8FV3lsgG99gGJ8VRkAqC3KCoK4EB7uZduWvMGW+tc2CNmaLAc
-FFTPO4F2LAxMhtz89lHUl2lFx8mkxYzPtQPu9Dn19RFEPthUVXLSm44NBxHdDAjO
-rix1usNZJVf3RPOL5BIPnDzMjwlzJnrlOrjtK0edAggSl93U6oXmOZdXdT/SU/f1
-FHWyfzlaBUST1glPp/I/RHVuxWU+UBiNhoZea+utTeckZTAJdbFYcz3UvfeX+XIF
-unQ/BP3LtBpyRBaM1mwb7qaQrduYx6gA/VujCfSQUMyzC4st6O2c6fIJa/ZJOOo0
-dOjJ9y5jCekc9VqB7zFJxxeoHr/ZlaUbgIQn2vu06jqm0DZscAa3w+NAtEA4bacv
-GqkWzjvtrF6ltrKN+3+W2gpXw8HnXt9XQQdk8sNmiWBI+kpDF+l6VE7Fo5ObVqA0
-+5ZFuorVPRzzGv6EM81Qs2q0BKe+7ONo4uBcR8O34R+9IslYTXtxT0XR8WNa1WDR
-QhBLpItSompuCSQQcmUk21HXea3wLM9bw+Bl57NkCt+ceENOOwbbG1APQlXMSOV8
-323ElMg6ktZFm1wSjwbIe5Z4KLmpfNSgZR6+FgIFgOzYq6msJjhaWHVgkKYFt6o9
-2o8hRLL1/wzMS6t+Zcq2IeXdDwRXN56nilW/jqqJ2461yzj4LAzFt4uTzoCOAznp
-l5QHDkCHpnJFC4qVJO+bOSW0ZheduXufBcG4l/tmtSuwAgaHHnm8d8YmRyZcTsLs
-eYXYuGuO1gHrvjRqPsBeGHuLaxl5irbUO2xaezux4DiWez4Gk5VXUnAMKn4ssToD
-AbGVeATI+RpIkAnU6h4YsbLnFCTnPrqq9wrS6r2ttlvt+JZh/TsKJW1vMy0VikxT
-5x/SgEnjKb4ivLByQ25ctWFuO2Wuite37bweZrE8QlylPfq3iMQK1vW5BmKl7pe6
-+6TTFyg0tZmCX/rAWEtd4kqDug2CTaVzBCmw+ykhv33VSyEUGkWF27dSgOkGdh3t
-o29xytSpo8svYTEMrjlEeQdMNTEVmHkPR7pR3r5qWEbuYx9bf0STJlLpsy2/S1s9
-qW07oNablFw6xfcYDaDjTo6lS8Ow1TDmZUGC/MGSHsm7f6nv2mgMvwkuZNveWmgT
-s3IF63eGC1mvDZUZOfuWtOEv/kyA3KjclheDS637QyzwZQb8hB9dWer+8NeoAWQ8
-iTXN5p7YLgDtRfL5jN268IwTdxNfVxhY4vowiG2gyJsexptruQohaorKx7CS9koM
-WcR+aWXyoiGx/T0DIS4xKNZn4TkVl5Tf2eTcbnm2FwHLCaNFxYTKsoZ/unfV3X1l
-uGGOvbGo0uxaheAaJHTkBb+TMs5NVUPmhVzwAmw3I7lpSIO13ZAyJOTROmHUkqHA
-yRrMYGbXqJ5WLUvGqaKreFVfwSXQsA3pwBCJK+2dbGOAUb1LpFlUfYf860fdNe1e
-6Sha3pYDsM/KX3ilnPUt9qaNUqEzqCgzb1Bj9jfiFGAWDrwo10Jxd3wTIHj76alS
-NY537iigmtZY4VFCLx29zWt0nujyq9QXRX4Z/nvPes8Oli9D8FVJQMdyRxY+PCir
-g9//1FkAwk/2tONgSpuS7kjaM97/I6hZKW5UPjeEn8Giz3WiLYu+9P6MZQOBDLgM
-f83gQckPnR3OsGvg/GJeLi4wDts7h4VRGsCb0LMSwx/VC85nDMjpTTnjY5cXazqA
-DgY4kGnA+/HlFh3m/H+wNkXjgUNFozZxrsBg3I11qCBZCakLdE6UnZaySrrtY2r0
-av3i4mzkh+RW0dOyxZtsJcKhT2X/GwRXJ9Y4Om00R76kWJuJvjQSvk5o6wuzLP+6
-pPNiPcCBkCbUS9UQ/BsCXUxBdSJ6rkU5X2UFFijO48DYw5IBEpqls+6KablGViUl
-yYStYgUA/gLtxyF0JKw3fK6tYqHFXkg7N4xawlRrKGQ52mTLeU7ZM7XrxNPTbKe+
-hW7jVV+5KDYXR2jfFlqXeS8ebtR+Kzc5UIqfxFdhwCxmGhvRbiIHz6gfP+/jm167
-hOUQ7q/kI39BvIbFb0X5sFHBdGUXTG9sj9OfDciHxHUFy8s5dplH2Afah9mdrGTj
-gxnVueNraYDOIDUVamz3ZpNlT0FSjuqYa6mg5m8ehauyEtxEiWoLrM5VwwW5Ui/j
-vu59EmFJt7ytlOTz3yf1Ovm6wW169HwOWy+0pdjhtWF+gDKhaNmaaMiVkAifzT8o
-HHW7Cgikz3hLLzX91uhO2tTkcz6Zdool3rJktld5E1YCy5X++jLJDIRw+AfVO05z
-f6DWZleuPYaeUQvM7NExONf93ZPxb11qjloTf4PlM/EkUkacL4EAuglfUEFmTefv
-5hSnpE1ZxYmAt9jiJwUz/7PqbZo9lV1XydxxEQazCb4bN+udSzAs62iiDnIZIBdU
-/09RMEknl5eFTa7hYWVMvGbWtaHBAzbsyqdMoUJEKZKvvWHG7DYDyD5FvzU2rLAF
-KFG097UrCbaUhLvuuaOqZNpkkoPy4i9TjyM0DKSBjVmh11IP3rdKiFPQq0BgMTNX
-iD/uJxS9odEAirIZFt4Xzrz9i1gugY8TxDfApydvVkPKorP8yD1MtTt/j+ZQmysU
-gHx7O27y9Z8a4HpDvkqFmepx11YqQ4qyl9itqioNPu5oSJ3GsWs1jDUW3Ob+a2mM
-ef5tuTjDiIJrPc9yeZmQ14Z7Q/w2ZJnYq5cXTyWZHqlfRBLrEo3x4hxMWjG+uBzu
-ErHEi30c6ggoEfjIBE6v7gXbc0oP/7LfqxPADM5clcCi8JcBOhX+t0b1rj3mJ/Ue
-pxkrTcErNetJNQ6QUXE4s5mtFVaU3NvtZ/xIQNF8SmbI4+HfAP0aqoqht0olacva
-w3rTjeJXdhFvwmuGnQWmo2BfMjCS6dfrAeEMV4TZ/jrV9QRsWp9o0el778CAA3i6
-IZvioJ5olBiWYJKHVr8JPLJg9yAUr7zCO3ggtMOPmOW181YCspYLO3Ns6ozZae0X
-TcsFoQxsBZi4RoNUmfBMtKc66lnN8Mi4hV2tWWGppegzz06buOQ0lYY3zBN1kGbI
-asfK0U8ipIwWbW3lmAPKLf9p0Q4T3Vjq3ulJa1nLCE7TJxsasteP2vjDrait7TET
-Irk/Wn8RctP7I444Wl4Taypv6ApvasbmEYVjEshyle2slP30WTCEkgk4A5Gw5VeB
-v8xgii2D/JkejT7KcSt3pPiQEVVYSDMX/8CVWT9CPmlgF06524o2TACBbbKHjW7/
-q6BZySbimRdvmbnIAYby9XvNiORWTgOy9aa91htdnH22HubXJg2fl1oqvmUq6NoK
-90AJl7rKEUS643rjpzR0q11u4Y4ssGq/LLyxkuGauX7vvSy0I8kaeunbUjflzQUD
-OCQF8BpWj9NPkOUKxJt3QauGb4Uf6IYWm8LN7rJsQw2NtPKECJ/GrufzjdBpfttM
-J1ThJtefYKy9slpVOS/FmL3iPHXmc4FBevjIIvh1wjEU/SHck80Ydb3gv5ne1HD+
-PLOh+VxO3Lw14S1isDfvlZBvJ48jFUnTUhwIWlMmZcmtS55NmyNiZ42HZUkCHcva
-hBZyHpFGz1Z0eLuwncdE+/iqJKHyiz6wRom15+J4YG3BmEoujP2Ifv+1VU+8IJvX
-ti2jg+Wz3OAlZulqZT7iMf37O+vKQ/xmr70jroxAD6ufRq41dbzBwtjEsz4kqAZx
-jLav1cZ6GaaTXrAFLHEVPv5Co3Y4IINr0fXose0BU7Ttjfb5SODaxgGTt6KuN01O
-9cR9yBj5lRBi9Lr+NdGTyLOLJQE4kX29oXdkt0BZ+fXTMP1sLKpAMJXsh5xkH3fl
-z7OjKFFc7fdgzUkaShsKotyND71vCSbk6X9KnNKfOZOkvOgU27OOgIUFeQjlhWNG
-wXm8B00qqgJdtYc+D8lC7rBBk3dK3qaENiWnBcBD2xY2Ifs2+Q0/z1+TNtdPQc46
-Z7n0izn534X/SVlxCPhTaCG+CwsZA7rJ6SO6PHBMMhpR8DtOkLsm+U4buTT16mxt
-oYunk9zKUwcgVF/L5x6PSMQHN8Q7Vtka1a7JM3WpDsmR+0MJsoay9lWpT/UmZ4vy
-SaQjvTHvD4XH/AI52BNQHs/XnZG4k0hnMxlSngm2+NM7RDohBdOn85v7yILrQiiX
-qolSTXsnEj077BVGm8jFCAww5diI+zSzVTTV6/13b7P5QisRbw6o+ewWklhMHrqg
-gV4wq3nCvORo931icMjQTA/u5gesbgpPNEW1pMs/H7z1aLWoZAUmNrGa+jwxZwgC
-ZHoVKgkHNBzgIomw4yCx9O94wgf3n24n6CZlnlS+qK1bVXIuNkHKwTlw8XhwOJBJ
-JGPqjIQqLmvT+SN+vwOuQMPrfQyLKGKZ7wiQWq846OSVLHW2y464t25tqsbiOM6J
-zHNyJ1PaESzOEizlRnRWTLi04ybZQhPj1xXNrc3WRf/OVfNWjBDG1mzYl7yac/Wj
-Y89JCZGaqRLqnethuWoS0o8yrldykYx78K00AOa9tQhZW86PMUap1O0iOslLbH0g
-NUzq5jDnvO3SlKGdVYdnf0MBMiH7ofOLh8dikpknjVB0Aki9vMAbEZd5KeWkpwqd
-qs8D5w6w2aNGvTT8iUgigl40iSJcLlObKkvKjgE6pEGHwyQOE4YWMNklEa90L4Vh
-vUJdaOr/3sjWbc/V9Vb10lf6wl/qY4lMyRnRJTUqqXl4cnTvNvTS/1knLpqPrkFI
-1shN3ShcuiMwgAfVsF3bXw9fUWv5ozNkQsiKkvcxKw5qLv5H8yJuYWeEVZdwhXdy
-0rCzr4K1yUsWlaDaSIFu7RfSwf1Qraj3ItLV6qZX4vAUbwGihFkvoXQB2KjOJnSk
-36bX3VMPp5m0HsJ8egAXaQ2Uk1he6elY3HCw9JWuZES2YTGP0oW4jJ/G31fjA4nd
-c951KZ4H4SalvUtofh6SssdgWR7EIHzendXy9bm2YPC3lnKtjTtgMlMgFk2ljw63
-EkBtIkeCQ2N+3n9/oqMqV7WLQondC3UFwp4f5i0TvSf1yS7ZpYwmJMNvA+RPjhMX
-MwloyFQug2pM9ad0tA/6i503jjoVvhw8KEmF1tQlUjSNGfaA8rIpXK9S7qLksQeT
-xtC6F+WsfKWmxgYdHvqZzrNqfGRNw7Eyz8DGnrQjHvkrL+ERmiPVZYoWxJE1P40p
-kME2nkYcKTw9m2p6X/ESZgGXrJPOITaCRdcwD0FD+QS3ieVAnnqcRcn3ghQVBqO7
-LqYgTmjv8DZjYJFz+Fv4ECnnwwPR94CvMxTRBu0nF5RwZzilohTQrpzJThiW487V
-CBrRHdUNR/5kjaczD6/Oku9PAwdTyybevSqgrCxoC94xgk8/h/vC6GYsp2PW7YBA
-9EKSUSVUu2Whmpt60Gr/f4nCDjkeCyyyZUmuQWCAMCjdYDTIMzfIPG5DVNQ1rwM8
-uqlt2FAraeszWiAptMsug4hXusmOTybp7iICK9eKfD819OP9UFrCjPSfPSbFjO3s
-S/OYwKrn0wC+1qD/uA2ucqNuLNztRfE3j/FXAltra87tNujWg1UFi+4fHzla/wQy
-F4EHlIOXN690EGNXwVnOcms3Fnz87aqIOuhw9XaYP+fcd4tzV1D5Ai1pZDAo8DJe
-RVD6LCzo7fMMQhuGtawzb6fMjmMpsLYOvhVhBjFCeui8nx0iJKLxD3Y8KoRRTiBi
-DOjRR+JkidJ9Ot/3R7ZS34oygchxetZ/WNEe4tYtI+4hB9A7HHWaWi03ESmGwRZN
-d0j312F6A7w=
------END AGE ENCRYPTED FILE-----
@@ -1,85 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IEhBV2NqUSBBN1lMSkFQ
-TkdXU1lOL2diN0lyUDFaVWFwdm9lOW1hODBIT29HWmJuRHJpbgpvdklKdVQxQ2FR
-aUxjdzZFalhsS2NpZ2dLU2VrRGxOVStBblM3bVl2UFlRCi0+IHBpdi1wMjU2IHBE
-YXpSZyBBakhyM3pNUnlMK3ViUWIrYlZUdmp3dmdpUXhER3luTUFaam5GS3hWSThV
-RQpGQXY1K25COWJuemgwZWJkV0tjYXA2SEFsUGwybjVPUzJNOGtpQTdFYUFVCi0+
-ICxJJTctZ3JlYXNlCkFiRnM2bHFZUVhrYkJnS1FSdjMyS2JzVXFncVh5ai9BZmFx
-NgotLS0gUjNKUW9XTHZNYTlkTVU3MUlWZ0NMbU1EL3kzazRzREp3MkZhdllLMndG
-UQrGPqpBXTlOqgKVAFuSFM6w5QBpPjLmGBGM0bWL2NsIkSUcF05aNgeir86kTpv7
-w99AQRmkYGyGgUGFxFOojmJt+H8EU7BpkmzviMKJ/HyeUtSK2jaxX8vnLEZz+nad
-rZBkqAfBJDF25SFLZxs3XBjAFGks8axeQ+E/wHJq4oNLpxY/dCUTTM3tHrPVO+Bb
-LIue5UZHXO9nngEdlmoApiJhCd+mj/5ovqN1Zw7NuUIMUyRzNjHi5lrfXmTS7Lil
-+Jx8N0iakZ/zvDyvSn3FHn0q07z+NYusFsg3ijDA9lRCiFcFyEMq9uWR5ufjiWkI
-pCN1FWZiBV4r9F/bniYGqlgZbyC85UtvIFAu4LRO4k5bEXJeWmYhvjuLPdfnWUOV
-+jTfVDjvUyXWUPZDxr6he/Xezd2jj8IAjEXg8BBQPbuD12+ahHJHDIYdbs/lcxsN
-9ZwYSJhU0ZCtG+HPFmMOWMKNYaMVHij+K1ruBgIorhsuj+jmZ8dFyQatp5Uyf9ag
-JJS30kyK1S0ktFe1qp2/hqXFZeT/gnA8GnK4kPRqWHsWbwq0CvmArra7fWd60Mp+
-e5M+WVfTaoMRaUZZ/NLgDcT7ovSOwcsfYMCXmm3rMLS60toRBKMcpMwH1ntkF6zj
-Wpgob2EoG8FBTBKT+NOjHYYrUK7/1qjWAAYTbyTs11vCe6+R00nKyT1OU2ZgAIq6
-+eMI1XtBq07id7xmqY9y8XlIqTVWRrmEeT/VhGbcmU+5PzM52dAu7BmXzlJxJwWG
-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
-enoJ9iATTIiLzjSpBJAFul0l+7jA2CQkxJQ34Ko=
------END AGE ENCRYPTED FILE-----
@@ -0,0 +1,39 @@
+We need to update an AUR package (or multiple).
+
+Code style:
+
+- Language(s): PKGBUILD is bash; .install is POSIX-shโcompatible functions
+- Indent 2 spaces; UTF-8; LF endings; no trailing whitespace
+- Quote variables: use double quotes around "$pkgdir" "$srcdir" and paths
+- Strings: single quotes for literals; double quotes when expanding vars
+- Arrays: arch, license, provides, conflicts use ( ... ) syntax
+- Functions: prepare(), build(), check(), package(); only define needed ones
+- No sudo, networking, or user config in build/package functions
+- Use install -Dm755 for binaries; set exact modes explicitly
+- Checksums: keep hashes in sync with sources
+- Keep .SRCINFO in lockstep with PKGBUILD; donโt commit build artifacts
+
+During update, follow this strict workflow. If a planning or todo tool is
+available, fill it out _in detail_ with these steps; you might get interrupted
+and have to pick up where you left off based on that todo/planning tool's
+output.
+
+1. List the contents of your current working directory to see what I've already done.
+ - If you see text files, read them.
+ - If you see directories, list their contents.
+ - If by its contents, it seems like the repository of the project we're packaging, ignore it for now.
+ - If there are sub-directories of your current working directory with suffixes like `-bin` or `-git`, we're actually going to be updating _multiple_ AUR packages for the _same_ piece of software.
+ - `-git` packages clone the primary branch (main, master, trunk, etc.) and build and install the software from that source. We do not specify versions for these packages; updpkgsums determines the version and edits the PKGBUILD.
+ - `-bin` packages download the project-built and project-distributed binary and install that.
+ - Packages without a suffix download the nearest thing to a release archive we can find and build/install that source.
+ - There are no sub-directories of your current working directory, we're only updating one package. Look to your current working directory to determine whether we're creating a suffix-less package, or one with `-git` or `-bin`.
+2. We're upgrading to version `$VERSION`. Read the PKGBUILD(s), and then edit the version number for non`-git` packages.
+3. Update checksums and/or versions with `updpkgsums`.
+4. Consider the diagnostics and present _all_ issues to me, whether you think they're relevant or not. Include reasoning why those issues are relevant, or why they're not. We'll work on any genuine issues until they're resolved before proceeding.
+5. Install dependencies and build/install the package(s) by giving _me_ a code block of `makepkg -Ccsi` commands I can copy/paste. If there are multiple packages, include `cd` prior to `makepkg`. We'll work on any issues that arise during this step until they're resolved.
+6. After I build the packages, run `namcap` on `./package-name-*.pkg.tar.zst` to lint them. Again, report all the issues to me and we'll work on them before continuing.
+7. Generate each package's `.SRCINFO` by, again, giving me a series `makepkg --printsrcinfo > .SRCINFO`. If just one package, no `cd` is necessary. Just `makepkg`.
+8. Clean all artifacts with `git clean -fdx`
+9. If PKGBUILD and .SRCINFO are the only two files you've modified during this session, `git add` and `git commit` them. If there are other files you've modified that are tracked by git, please show me the diff and ask which you should commit.
+
+If anything other than `pkgver` is edited during the course of this flow, make sure to re-run `shellcheck` and `namcap` if appropriate.
@@ -0,0 +1,23 @@
+Please do the following.
+
+- Always follow Conventional Commits.
+- Only stage files you've directly changed during this conversation.
+- Trailer references
+ - Issue/bug trailer options
+ - Fixes:
+ - Implements:
+ - References:
+ - Closes:
+ - Include yourself in the `Co-authored-by` trailer.
+ - _Always_ look for a number in the branch name, like `3-new-feature` or `user/fix-thing_36`. Only if there is,
+ - Run `git remote -v` and notice whether any of the remotes include 'soprani.ca', 'sopranica', 'singpolyma', or 'sgx-XXX' where XXX is an arbitrary string (for example, sgx-jmp, sgx-bwmsgsv2, sgx-endstream, etc.). If any of those keywords are found, run `hut todo -t '~singpolyma/soprani.ca' ticket show NUMBER-FROM-BRANCH-NAME` to see the ticket we're working on and surrounding discussion.
+ - Depending on commit contents and bug contents, ask me which trailer to use. Format the trailer value like `https://todo.sr.ht/~singpolyma/soprani.ca/TICKET_NUM`. If there is no number in the branch name or the remotes don't contain any of the keywords, _do not_ include a trailer.
+ - _Always_ look for a short hash in the branch name, like `40cd4d1-sort-branches-by-updatedat` or `user/9ebc998_pin-default-branch` or `horizontal-navbar-on-mobile/6016e27` and so on. Only if there is,
+ - Run `git-bug bug show HASH` to see the bug we're working on and surrounding discussion.
+ - Depending on commit contents and bug contents, ask me which trailer to use. Format the trailer value like `bug-HASH`. If there is no hash in the branch name, _do not_ include a trailer.
+ - _After_ creating the commit, ask whether to close the bug. If I say yes, close it with `git-bug bug status close HASH`.
+- Check whether there are already staged changes.
+ - If no, look at the `git status`, then look at our conversation above.
+ - If you do _not_ notice View/Edit-related activity for the files/dirs referenced in the `git status` output, STOP and ask me which changes you should stage, analyse, then commit. Present the changes as per-file bullets with summaries.
+ - If you _do_ notice View/Edit activity for the changed files, `git add` them, then STOP and ask me whether to stage any of the other files. Present the changes as per-file bullets with summaries.
+ - If yes, analyse the changes and craft your commit message.
@@ -1,63 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IEhBV2NqUSBBeUNONnp4
-bVJIZXd6b1ZZeUxSbnR5TnBrTC9rZzR0UUY0ZXkzQzlROXFnNAo5VUJZUGg3Slp6
-eGhqM1lMOVVaZGJUb1FsNVZxVzFZQTdERy93N1U3Y1hzCi0+IHBpdi1wMjU2IHBE
-YXpSZyBBcmsrMnpPNGY0azhNMkFCRXdCSzFPK3UvcGVOMVlKQzJyR21tZ1hDTWVM
-cwpzdUM5WHIrWWtmOXBHMWsyaWllQjE1YmZobnlkRTQ4cG01VnNsaWRTOVJVCi0+
-IEMvcy5RKTtrLWdyZWFzZSB5XlJcIG1NWSNFcHwgfGFERHQKOEJtUURjTjUrQmxY
-bk16cSs3QkNtTndLRlhJc05TZ0ZJSUZoeTQ5MkFFSGhmZ1Z1VWhvdXcvZE5Idkdx
-UmhjSwpQRjZzbXpCcWJ3Y09sMVRiCi0tLSBuYWpSWEU0L2t0RnFIUGF5TFJZQ1oy
-L040ZWtvdlZXcTRDcnR6ajMweGNNCgXSD9ZrKpuRZMvVJgiqVbkKvgPENejs7l9g
-iN5aYuBrjHDGrXlTQd4mFrNbNi4u3vBV3XI6eCfDjZZen4YUeVcKIYSA8sY2b3tr
-HNESDkKedtdcGdP1TLGhGqpAKFRyHyV874yLDvRFHYvOtH+mUyFky301PmdxA863
-kNzRw9Fmbtl7Ga6vLoxy71kMcmY41mtUe4UQCKvGfk/YjdbgED8iMjVbQsiOxhTP
-JtcfjPBHCAaQ06cKWpOgwjQZPPT4HcZsEgVoE88MhMhcwdg88YvfAi29LxvZTRJe
-JF4mB1bBIxKQovPcjGyY2bPFvAM2M+iGuhQ3OI74wbfUUZcmAEkbHm6NnRgDMnmZ
-gcrycXDXT/F+7hKv7umiXfitGRdb9I3J4CM95nBgkSPdNLkc1i9PB4k0oWtrOnRg
-TuVNrVLZ5F2e95bR3lu4uhEuBNy7IDJnFPrttcFuMJdVeNmW2FsoxTtzIeOs5LCh
-O+ya5SNsZlhIAKpqKpNc+ZVb/G5hGGnu1aL23QEs2jVKI2ArfXO9d9ZrwzJtj+vx
-dmETR25//EzyONIaUa1IiYiX2bwLadAVUXT7mzarqyIDhOqSuSCkiNDDGwZx8vLc
-OGD/zlCSFXOQLEgNuySXJikLEUBwoK9L7uxAFnbhuexH5oCj4/jlgnT0QEE2lYI+
-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
-VqfZf7Yx3RNCXw==
------END AGE ENCRYPTED FILE-----
@@ -1,15 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IEhBV2NqUSBBOCtOSVRt
-MjJmWklxWmVCbVByYW5jazlXWFh3bkNQSkJTT1pkMFVHQ1JxSQpwdzFQQ0d1REJw
-aWlxTmxuenp5UndWUFhxYTJuODNHamNuMzcxR25Ca2hZCi0+IHBpdi1wMjU2IHBE
-YXpSZyBBb3VjWXZBbm1icTd5cHNCbHY1L0V4bE5vU3o5TEtIaExzY2E4Um5sTk9K
-MwpiNzZ1cm5XNWRmUUxJRE5HYzI4bVJxOVBIbk8wWFMvSG1oZ1VZK0RnbnBRCi0+
-IGx3RktnbS1ncmVhc2UgelZSbl4iIDJxICV4XCA5JixDMTlFUgpDa0kKLS0tIGw4
-Vjlud2twaVAyaEpvZ0dNaVMxMjNSMWZjQUFkVHBoZ2Z5N1hVcVgrUG8KiiS423sV
-CJQLwIW/aWEygj91rNMGM1gJUJ1USNyAAVd6hnXMtWq1xbEstlVPQRoKkd6j5q/k
-iy3wOeWcfe2rz4EBsfXMpqvKp6/w0NSTnI3BIpr4pZd2ksIO57zXPH9PaTSNDuMK
-i/gZBfaZswaAbL1AxXQhSL+fODDREsDObOj/J43PQnJ+oCB+/+dRWrdZYvht0ODf
-IZc5jOE+0wZxXUyWTFZef1oq/CAB5OnERRji81koDt9IQYEuQQu4kPQEd6wDMr7v
-cdC6sGlvJhmsw1lBQsexaiItCfG63HjCWijDq00/txVl5aYMXz16N8hXLW/sLnGd
-oSd1gEk6eUY=
------END AGE ENCRYPTED FILE-----
@@ -0,0 +1 @@
+Please take a look at $REFERENCE. Read it, set your goal, look around at the relevant files to get a better idea of what changes might be necessary to resolve it. Think deeply, then add your tasks and get started on them.
@@ -1,126 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IEhBV2NqUSBBaXYzUGc1
-YWtQYW81R3JEbUVnWkFNRzVlR3NIZzNDaVFnMi84Vzk5WXlYdQp1NEkvSmxJZEh6
-dTlDalp1SFFkMXBBNnE2Rm5wNDg4Z0Y5Lzd5OTZIZTZVCi0+IHBpdi1wMjU2IHBE
-YXpSZyBBbG1xbDlLeUFxTnFUQ0xyaDk4VU9tUi8xT3VSd2wzZmlsd1dveFR0SXly
-dApWUXNMbjZydHhuTVd2N2xrT0J6NVRwdjR6Zlc1ZnhHTEt0MEY2WFBaS3pNCi0+
-IHJoZmdOLWdyZWFzZSBbPUszb24yIGUwV3sgZGggMCxHKApwYVRJY1JpK0tDNkpC
-S29Xcmt3aXdPSkdhdERBNzQ4dVJrYzkxcmY2dUREMlkvRU1TSG5uL05aenVGZXNo
-Sk93Ckk0ZldzMDdFMDFWcVhMMFFxY0dhS3dJT1NUM3cKLS0tIHNMSFVxK1dkSUR4
-NDZZbVdtODZEV2pNK0JzRFluNDZwOHdzMHdMejRJdVkKnuIg5f0pTrR8vj15VzSf
-uRNoPgTtHJYx0i+Wcoi5EblviG1wH4J0oD2mAmGTc3+OIEgC6BXqi5ZAWwFXGGOn
-sQ6c1hGEy3KacqpxvKLNDcEWOR72s1NPjR0KU2f7UuCn32G642fcdHof1A3cjkLG
-vxkZlvobSRxBQVC0jB84dkkDmoVW/jbKjebq3ch2NUlZ47jLZ0h0yp+dVlmpFuJU
-mEn5IChnlua8atIo+TdjQkq83CmeDMwWq+bgBYYAeuHU2tQAtoMym+zzdJhU8DNT
-B9aOPF7RwoJEEtFZYx0DJgb8HuTtzeYP6WH1H3LrehqIqiFFmejbon7J24su4Epc
-SDvTAPBKy6C/6HF1gjNy0jB/HjvOn2a16pCZ3LlbzVANoAecyQDmU/LyT4cV9St4
-gj0ZripAhx8SJwwrhoTv56W/nM0M8aoZo5vo66kJaOUuQce2dHcyVjsCKIjCxzfV
-p1u8Nui2MdVpO5o2JafWYer0N6wIFsEnUS2irsJEe8vQKIHlBH8geqIJFLlNt7Mf
-51Iyf7oT0qGW3A0Z246HQr7twA+fO0UMe88UKmr6Mol7ZfqcvM5Ya/iMhVNuxZmo
-VNQwIIDWZqFYpgGJi2/vZ9USbsK1H1wUzPdgtL8pNrZqUQwdhM2l6e+RTHduaFjw
-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
------END AGE ENCRYPTED FILE-----