From 70b1c373ae31d4bc660243ba2c81eee150d0fd95 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Wed, 18 Jun 2025 03:31:34 +0100 Subject: [PATCH] replace huh with promptui - it gives more control over filtering add --filter/-f flag, this allows configuration over a prefix vs contains filter update the README to reflect changes --- .gitignore | 198 ++++++++++++++++++++++++++++++++++++++++ README.md | 3 + filter.go | 21 +++++ go.mod | 27 +----- go.sum | 80 ++-------------- img/promptfilter.png | Bin 2368 -> 3719 bytes img/selectionprompt.png | Bin 10339 -> 11367 bytes main.go | 3 + new.go | 39 ++++---- 9 files changed, 254 insertions(+), 117 deletions(-) create mode 100644 filter.go diff --git a/.gitignore b/.gitignore index 52dd8b2..74c628c 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,201 @@ go.work.sum # .vscode/ # End of ignr-cli +# Generated by ignr-cli: github.com/onyx-and-iris/ignr-cli + +## Python ## +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +#uv.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# Abstra +# Abstra is an AI-powered process automation framework. +# Ignore directories containing user credentials, local state, and settings. +# Learn more at https://abstra.io/docs +.abstra/ + +# Visual Studio Code +# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore +# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore +# and can be added to the global gitignore or merged into this file. However, if you prefer, +# you could uncomment the following to ignore the enitre vscode folder +# .vscode/ + +# Ruff stuff: +.ruff_cache/ + +# PyPI configuration file +.pypirc + +# Cursor +# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to +# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data +# refer to https://docs.cursor.com/context/ignore-files +.cursorignore +.cursorindexingignore +# End of ignr-cli diff --git a/README.md b/README.md index b91202b..cade4ae 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,8 @@ go install github.com/onyx-and-iris/ignr-cli@latest - --token/-t: GitHub authentication token - note, this tool can be used **without** authenticating but rate limiting will be stricter. - --height/-H: Height of the selection prompt (default 20) +- --filter/-f: Type of filter to apply to the list of templates (default startswith) + - may be one of (startswith, contains) *environment variables* @@ -29,6 +31,7 @@ go install github.com/onyx-and-iris/ignr-cli@latest export IGNR_TOKEN= export IGNR_HEIGHT=20 +export IGNR_FILTER=startswith ``` ## Commands diff --git a/filter.go b/filter.go new file mode 100644 index 0000000..f9aba31 --- /dev/null +++ b/filter.go @@ -0,0 +1,21 @@ +package main + +import ( + "strings" + + "github.com/spf13/viper" +) + +// filterFunc returns a function that filters templates based on the specified filter type. +func filterFunc(templates []string) func(input string, index int) bool { + switch viper.GetString("filter") { + case "contains": + return func(input string, index int) bool { + return strings.Contains(strings.ToLower(templates[index]), strings.ToLower(input)) + } + default: + return func(input string, index int) bool { + return strings.HasPrefix(strings.ToLower(templates[index]), strings.ToLower(input)) + } + } +} diff --git a/go.mod b/go.mod index f7c6d29..6839330 100644 --- a/go.mod +++ b/go.mod @@ -3,50 +3,27 @@ module github.com/onyx-and-iris/ignr-cli go 1.24.3 require ( - github.com/charmbracelet/huh v0.7.0 - github.com/charmbracelet/lipgloss v1.1.0 github.com/google/go-github/v72 v72.0.0 + github.com/manifoldco/promptui v0.9.0 github.com/spf13/cobra v1.9.1 github.com/spf13/viper v1.20.1 ) require ( - github.com/atotto/clipboard v0.1.4 // indirect - github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect - github.com/catppuccin/go v0.3.0 // indirect - github.com/charmbracelet/bubbles v0.21.0 // indirect - github.com/charmbracelet/bubbletea v1.3.4 // indirect - github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect - github.com/charmbracelet/x/ansi v0.8.0 // indirect - github.com/charmbracelet/x/cellbuf v0.0.13 // indirect - github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0 // indirect - github.com/charmbracelet/x/term v0.2.1 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect + github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-localereader v0.0.1 // indirect - github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect - github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect - github.com/muesli/cancelreader v0.2.2 // indirect - github.com/muesli/termenv v0.16.0 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect - github.com/rivo/uniseg v0.4.7 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.7.1 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/sync v0.12.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index a2dbcd3..0f6ab79 100644 --- a/go.sum +++ b/go.sum @@ -1,51 +1,13 @@ -github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= -github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= -github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= -github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= -github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= -github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8= -github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= -github.com/catppuccin/go v0.3.0 h1:d+0/YicIq+hSTo5oPuRi5kOpqkVA5tAsU6dNhvRu+aY= -github.com/catppuccin/go v0.3.0/go.mod h1:8IHJuMGaUUjQM82qBrGNBv7LFq6JI3NnQCF6MOlZjpc= -github.com/charmbracelet/bubbles v0.21.0 h1:9TdC97SdRVg/1aaXNVWfFH3nnLAwOXr8Fn6u6mfQdFs= -github.com/charmbracelet/bubbles v0.21.0/go.mod h1:HF+v6QUR4HkEpz62dx7ym2xc71/KBHg+zKwJtMw+qtg= -github.com/charmbracelet/bubbletea v1.3.4 h1:kCg7B+jSCFPLYRA52SDZjr51kG/fMUEoPoZrkaDHyoI= -github.com/charmbracelet/bubbletea v1.3.4/go.mod h1:dtcUCyCGEX3g9tosuYiut3MXgY/Jsv9nKVdibKKRRXo= -github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs= -github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk= -github.com/charmbracelet/huh v0.7.0 h1:W8S1uyGETgj9Tuda3/JdVkc3x7DBLZYPZc4c+/rnRdc= -github.com/charmbracelet/huh v0.7.0/go.mod h1:UGC3DZHlgOKHvHC07a5vHag41zzhpPFj34U92sOmyuk= -github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= -github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= -github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE= -github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q= -github.com/charmbracelet/x/cellbuf v0.0.13 h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k= -github.com/charmbracelet/x/cellbuf v0.0.13/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= -github.com/charmbracelet/x/conpty v0.1.0 h1:4zc8KaIcbiL4mghEON8D72agYtSeIgq8FSThSPQIb+U= -github.com/charmbracelet/x/conpty v0.1.0/go.mod h1:rMFsDJoDwVmiYM10aD4bH2XiRgwI7NYJtQgl5yskjEQ= -github.com/charmbracelet/x/errors v0.0.0-20240508181413-e8d8b6e2de86 h1:JSt3B+U9iqk37QUU2Rvb6DSBYRLtWqFqfxf8l5hOZUA= -github.com/charmbracelet/x/errors v0.0.0-20240508181413-e8d8b6e2de86/go.mod h1:2P0UgXMEa6TsToMSuFqKFQR+fZTO9CNGUNokkPatT/0= -github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payRxjMjKgx2PaCWLZ4p3ro9y97+TVLZNaRZgJwSVDQ= -github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= -github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0 h1:qko3AQ4gK1MTS/de7F5hPGx6/k1u0w4TeYmBFwzYVP4= -github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0/go.mod h1:pBhA0ybfXv6hDjQUZ7hk1lVxBiUbupdw5R31yPUViVQ= -github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= -github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= -github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY= -github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo= -github.com/charmbracelet/x/xpty v0.1.2 h1:Pqmu4TEJ8KeA9uSkISKMU3f+C1F6OGBn8ABuGlqCbtI= -github.com/charmbracelet/x/xpty v0.1.2/go.mod h1:XK2Z0id5rtLWcpeNiMYBccNNBrP2IJnzHI0Lq13Xzq4= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= -github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= -github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= @@ -65,29 +27,12 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= -github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= -github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= -github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= -github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= -github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= -github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= -github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= -github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= -github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= -github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -111,18 +56,11 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= -github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= diff --git a/img/promptfilter.png b/img/promptfilter.png index b70dc61b245301d0f47b93df6a940874b9cec507..15260566ea2742716e035876fcb395cdd0c82763 100755 GIT binary patch literal 3719 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 RXrD(qJuM?BTEi*&zW{m4HIV=S literal 2368 zcmds3`#%$G8^4F}I989Phw#z?6RJ@;F3PFq5aw7Y*))XKLQYfRO=abj(}t4sArWEC z(m@Jyo~IV8WC$Z;nCzV&o_=}Xzu^7hzV7?_T;I><`h33M`+ME@Ehh&XSt%tc0D!EW z?FnZ9AYsDubxCny^fgG&5pEEivyCOF>De_UOvEr2_7(ut5vAA9Z4u^wgxPxH0FZmN zxgZ^(WfuUD9I`uM;Tq{P`#Cfa#Z&26a7=czuDSbCw;Cy9|8T*gTQogQqdC)O!nNVS z)L{#iDanNGU$gyw7G6-lsTFk(c_~L-(xIid4;VW^LMiLvGR!8&Iily zkCET!S0GHQ;A&^Dn!lPJ$;U|mKgg-=^J}_6k99Ct`i(Blv{fB{<~u#pX#eq9Nczw0O%+rolG?(dal&jQO4! zaF57=)FRe%eOh8qe^xW;@E)$vigJm^rQ&8!cO;v*UfVm-)#abtYppUJ%99f#Txa8G zyve1d4@*-+yGNz9^N3Ss45WAHZ2#MPe9u*FydcgJ4%M&h!|4D8<9N}HVZD&Sn+|F` zpRkyiV{ObvyVf2gn!Z!f3SN~AwikZ8S2=#} z+ma4y+*};kQpHW_{T6op3-DZ9J;qyK_Uh%ID~P4?_X?d=ierybbpvw4tNkFL*t98I zR)xtq)*S8+V}Cp|EieDWsnco}+bLLY-DJ8fjAZLD8G%3)p29Nvh*u{cb5}pH+3U){ z>0OLeWNT_1H@76Z5$#q00M*lc%Pzn=A|NM-f*30rgr+4T2duY+fdeT7QNrm>eWk_^ zwU>5>PHt4Hv$e{=hE z1PZ1C5%TlGx?W=DiWO0b!kBnk0UO>#%$c9#BzNwZ<3?HzNinF}oKwb?6D3?{`O{oR zsZU&NY90hed@C?mInEi13N9OpepT{5NdHu@M>49aqa|^hu-tmm- zIq#YT;B<6d`Y52eQ_U?QU?uqxB)WeTO%^k{o6(}XRnw!Afp#^1fB zf3iRB%~x*}*&OME;!w>WCk>b5%B&2hNF#gpcJQCo1_k%<2aO6Fb05ygUW`bBnypZI z`+?ZWLNx1(ZK7r8C#6nhjxk;?1T_`e28VMP&nt#@eA2hWraUV{V@H~Y3s*>q9OYST z&mDVo&5^C4V4oO_Wz=4+bP^$?r3@y7wyawh;^^t0VIh&V9Qs;Yc zzUde(;IW-aATD3@ZLsKDxv+fZXWjO>gSVHec#va+Eil%j2sPUxDXWRKw})J-V7zct z-5DZIc|rnjmu&_?>%s?WPFuF!(Qf{Z>+>Q7&d#=UnEZ*T`V){`y)1sV{P3 zsGb}RM{IO19)TkU7uIQ-Y$YJ(O+&N%r$4eOKMiwY-vk+t;zE}1rADC6FYEXZ%)K7q z$^39w9nM#Ye9Ble^l3qbGh)G3SBUhAX?t}_20f6{w0lwR&x^>j5`5>{J3}bh@u+~A z;3fkSmwZauh4HRyIHVx7KDn<|zPKONOfP&@=~^K%2hYJUi*iXu@b5DZvj5gcD!vvrq6VNvs4TR6 z5!SHvNJwB!)?0d%c!?l2`bIM5$-nJ204)?E9Z51y7Kai`heMLFUJArgx9i0ZcD^mG z7|M#9O&)w-(Sodc5Mi-B}wcR0idZt`0Db&uTJE! us07%*WAowM^zi?ly}vKV|1YFWAo@N?Fu1M|d0P1E0d`gnCu%JHuKx$Qenut$ diff --git a/img/selectionprompt.png b/img/selectionprompt.png index de2c066106ab1d9b9b288b7fa3f13059d7c0e218..4634c9679fb2405c1988cd1f68e5f756f3e6e9c0 100755 GIT binary patch literal 11367 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
    +FaHpZ=TyF|J>V9W8I^zJnc zB==mU3KY9kBT-!Yz((<5$JDH+$&WC9N5st^i>q|)&mg-9gu>t3l)RwZ06}ZQ<8G7| z9^C6?v3Le$UQ{lrCse&H{zAE@XYGrS#dM!v5gP#?w z<<(i?SpNYq(CC{xVvV<9YD@1hJBcoSU5c{GjNSjhS(G3)kv#t?hXV66oIZYNzz>d} z<}7d{9|53WdHfkJa$?U6p?%sNF=jCSXZeP3_MVIYrMf-o1BQ0IoA`#M{DXF8@5qsN z(24;e<*Vq+9}yRSU+^o5ozNIQjrs<*&b&y2aomwZ=bXgG{Rv{$r=&W1QA8R18;}hk ztvn(8Mpr(*=g$JwGdo`@cBGS6d%!%06c%u0{>AF|CJ(95sZ~TkyFB{9Ul1`G`$%_0JcF%9@84+d=C)M_scoD8454a3 zKb(SUzSemXWg zd|6U|a&T)6I*Ik%zRJE*5k}PBAm<40c2r~&zk2KSPMz%PIi;jOd0im`%daO){Y9IO zr^)QA=YrM{m3s=7f{bp>nqgNZ(U-oA5j!&{oNz~s1>p^@3%J_Y8i@|29t+V9YvMTC zM#RVOa#78_{#uLfw8hqS_>P%ZeC7UJ**9#s(A6dWAgF&Nv=??WL}pV{%76>w4dJp7 zAk?K$`h<5!+a2!hQSE??0EC2sHRy%vjR&O!q3heEwVkZH^u{f;t#45UmG{?hx!C!ds8ssn3I8|LP!}o4RSku<$XeTR$@pSQ6M((h1Q2q|`?_+GqC?BtD9bI6im!}ju=#Z8D$Q?v~hNLE%995Qc zHj_0CYvRh*LABL;R{8^_!F)wuXw13Icu0$KVNxs_a5z5x3%cFaUkzO}=C`9HxZ1$2 z!n56Uv_5l0j^Pl9Oec*wEp0ZlaR(g$Lr4oq?1bZl`1ni!P6E)GTNn}OquZXPpBX@O z@4jd53lAH!NesB)+ilXUewYcBGbOu*Z*+Sda;jT{K~6ng+dq90pAs#-vs(Q zm&J!%zQc3peSk8#--v&k7_~0J@3;%yN531R-1C1WvSD`!Gokzf`n*uXVXSTx7`7sq z(Y<}|YhVNjSl2BZ?v=Z_{ZL2SeSZ-WD-9z57JN?!MB*uB);~J|LHJ{1hfx8z2>aAN zGdN@2CUcv&0zv0hr$%*}5C~*f#Rc&khRyKQ+By{G(%yz~3A@p4ALtVFbw7AzKiZb1 zb7+1==?%YngWQ7Kpr;jmlojN8pJ&yHg!yG{ppr{iswi>sZ5`3PI24>V<)@a@-*J{xbwpoNs}&=Q2^T!U8I$F}p$YSPmes zxP`X&ZUtOMdH(Unx|i3~9kE1LUi)>@-e)8g*AE-r>`{B)HC5Kz{&O05`qk2kD2rk* zF3I|u#lE%*Q>~O4-JpCUzJD!s|I=t~QLODV2W-A?;R=iHf+rVd?@$YVH|*f#oXIXO@jM?p|uCH3=U1fIs{j#>Au% z$l5b2lnFzxW#|exIYfE669Qp$no|j+@Xg+2NuXP<8@1OhHLqI!XkA;^b1ZBN*`UH- z(Pldf3O{uH1waA?LoS0z`kIgB92@{|Aww#+;uRP4dj;cefVL8bt<*me-Xxw7=pbK2 zNGjja&Vs^1leIUvpe{CJWxySAi!Dir;q7XKrdyLjSvJvhdQI?|{^=(IjflE*2xMq; zi^eTfIb<3Q##|ZXKIHA4M%6l(#D_Ck|-OClxI|G_==rFf5nOMtNfeTagBd$P-Uq&_?xw5*REg=sp=Y*OU2iP_9^~adOw_)MX>N zd#&dc+}6ZSr<2uude_jpzV^hskm2?7QgwcoSzEEud5qgOd4>5b2mX^&LHT6JRtE*S z<6xTT1tEUSZJO{St$a)JfSko0^$*ZVt5z8%|G#ieb0lw|Im8YTy3C2r3SiUVB_gy7 zqEuBU zjoguqVBB<_-T9!4VL7Q=>={QAPyE93<8HKUfo@75hF?URBHI^EM*!j(-u1=Wb~Ea| zD`Uj4JZa-Oxl=`vch!S0p!}B07W00^Ymnwe^aD(}Tt8x_%U=nyS+F*a7co`Ti^bQ<%Jd~pKfmed zD=8Ttb=9^7LJI%Py6dQvEm|`JaqeS|d_h;@SXwz+!Jv!6GTeQO=lybWQ&R%i%j(Q-=feHiW2oMcK_;5jF{mtkv= zh8a#lP{e~#w#eHO6y5R_Fkl)(uL&R~uCu{#7Fop<30}q4oBXG>XeJ~Mqc4|c(b_-Y z{mojfY`t%1YF%}dW zE*Di7=(sxX0`UWyT-r(;e7guU>Cnt$NRdjNL{lbTWFeF>kLrZ2ciC{$ZQ}DSWVlAz z+&ivTo=VJ@!!mp$HFkK1e&_Dn6-kJvNh5@k3{`J9P6Q==wCmQ6$>fxMZ5dbWLb5(cBJFuw1^2{5qDaB!A=LUr2< zf*QY|3o@&ZaRPeU!Y%^AC*Ch__IMTSy||Xs`+tX6PrHLi!aZmieu(oeW?a?9J@Z+T zvufrPUc4ard;YdY>6XQVI>-m`1d(h4zdqA!xki7SJ_(uwQHd#Z{LhjqR6!yj!nl+-8TL{A9EckJ)c z5oX`cZxe-@7yQ4>)T<6rsZWQSpj?vTmQ=C};icmSin!tzd1b!QL=wJ-{;y=^b*;*#8RdQ%ER24}j+Gsz z=J3F%x(^dkNwL6OLc3iy&T>gAbR5UVdM&H~1>52j^pKg8D|v#`Bnen{WR(#V!E8WY zTCqBF?7jVY$CoN0x3msWHz6=E3lAxcV)Sw9m`(rxszAxv6LSllOYM#Qa`yryKK?Y; zCb~X-76WZI*~&$ro*w3wrIVmw=S?FpebIocF+JqgV1c>y($r~Xn{2ULjldiJ*zk4& zrOA2b0PT%)epWhNQF>GES@G|ayYCILI*h4Zx$L)@b7z2IL;5hQGU9j?!2u0~jVva# zmo3BwYy0_Hm|KWh-)~uI_jm>MR9v8(`Y%YIbd?RgijyMm%Xx#j;g|S?1k$-bWUM*OlHS}D?iWQ&qdAR~XB!29 zY-i*kmwO>y1<%2B)$eAL`g(uI9o+k7Kto^A(!K@4S(0FUp=)FE%mOF&)l>Y5iQkKX zA7TQRo$H-3F}H9G#*ER2_B#-s{yj4Z@SAIz(fbRGsIXjsZzU9PJHH!Ybhj^Dnsg7< zG_=IU`1IkQr>uet-qbXtDbURLYwf9Cd#D%dOsrkaM&{zt9(9>@t8>#?yo@ShI`$T)?E@X4)YTTyG2lUD+cPXRu19!)qNmOWHP zo7Z2sy{86zPs%nmPoIUq?EtUW3GKtIJshQ+c`k^VZll}0T$h%XIcy!-o(^-XY^W5e zT(kA#?-PVT5WsA!=It`lmc7%PdQQ>8;o*=%J^>$@#z>TtqEccBE}a&)prxiOWH@7sTA!gmR0oAI1)mX<%aYtqhR;tt0({k8iWiQVj3r6kvve(+av%W-) zBIAq9XR!|!yw9v56GZ~M&Wga|0c~MM$MpKNSOoCUKDj&&=h*9bu};gJZUFv9c9?$= zt#pja6Dje)r<@t)03-?G{8MFsF_En-2I^@cT>4G4EQBNf1f+wJiNu;fm+uPv4ae+u$xNQLe{%o2xAR@LA;?3+Feb^PE&$@aa#iCv>X2~hQHU)xy+ zB3&D!C+>9OHDCSnVT*^oKABV68VO$1bprJD8sN72^123A<7`JBKI4G~ze#MvAzx9@ z7Ht|t>GX$7QdB9dVbhBpA0d#m(f=LuO{@h}&IVEB*H#@sUg2_`J337-Q{t;`q)|EI z2_pLCmA*!rd-+U}!tg9BD2e`k@DU^#7NEPKavlOH#1#}>xoQS=cw~G(((zFCHeuemy z88_;Hm{xDeF$QI~Jrd$(G}SrU!v~-I?BdJ)bY^qpjm|}oIG;cD7IPuEK@pZPX(0oT ztuLCtU%NJ0M0?+O>BPB^p`z?lzi3^ny)QnYQ(t3xe$p z{tZg~2Uz9ecK{e&4V9d;_Y-8U3j@;9V($VMZT_nLL+1A06x%V}-uWz1+^g!(zxg*Z z_V2E^_fI6jn(JGEKC_rxK@trH;`TGtb%uGEtMY{fvN#P~Um_+C>Un4sd`WPZ$e3am zW?X&T3u|$}U^hT)&V-_zbg(*m`330$-(V>M>fft;;u$R(eb`pF#7}~MV@*2+@;$|$ zCf!8SPbC|aq!k|XTW)>VFWUXQGrHgSpzb@2%?;w=AHKT6!f=>C0%TS2xL zF;I*X@67)hP7bM>Q2_IHR@KDi&DC!w*Q$(GF4==hMk4D{tV>yf{X=cT-A;!QBa)kn zy)EG4o&IKz)f#@}dC#*NfM#`;TIIlHBQ2PA&Z#&vK&3F^627D#d_= zZSu#=A5k-os_p$S1!PKbI%Q;!aEz&;32k*UpuM=R@Q&4nfwa!N`hP^Q{y#%c={c$J z0CD)0QW7PpsgfR`1OdNA>owx7c&X3=lN|Q$wseR`HGp^BtN${2Nh+tGrEFuFc@x(_ zmOR)MZ|&nDg%!3rIJzh^ zIGgAQRVbnu(}TX%4ura3->q`bGyna(>0D@ELL3CjGnB)6u!OSn)UUn|#j{0beE|9OP7#5x`i^^sQbJtPusIn+Uor ze)(Ga3^PN=E!hbcgUwT>hf?VsBkhvmE^9LCE3WmJB>Vy9zdlv<$m!0Nn&>9SZn#~W zL9vORreq6VOsQl4>hhHEMLDVK-hp+tkr4oY!~XkirCR$Kvo^Fm%UBuy`p))LW|B5- zXT%+(TY)^{-F}Mb~KA+J1i!qc3}v|9=T?F^_CWY3xN44^UgE2^I@))zu^_f4SjS%a^zbA%T{OeDM_B)q z+am$CD;=l&m7(0iMn=IN0b{otTK3kFRd6xI4S#-B`Z?{p$=$zeMrc6po%=te#s`f@ zvreev)$QNeh?flXI+TV@F>o@Z08;FC`~DwOzTN_0?ezO(dH%QCEytz4wIj9_^@8zp z*-ZU{3bDvGb-Q=^`ch`BK`!4pg_L|LfMU1`kyQ_H+pybm(^6=Lw9hz0Nhh&%18>==$c9d1Q= z!WUS6xqB#ijxOtENXzek6CmD}lt0UiZW=R7pE2sb4PtmIlH;wYvC~o~5S1|gQ-GM6 z^_$^qYpS@7!wPk>Cp(M*YKP^3r~`z*~204bmW~SDG>DD{{=muX$q_1)mgfYxHGJXtvV*> zjrs*={=Ec(TutoBO-WV;-;52*WI#ch$>K^P6>{e2^j3iNLjJWik((NuLF`w$^wp7` z4CsLRY9Y$h$%zy}Vc+QHD(Vgs$aoK%T&`Bg3>#fZfwQjGSVVANhSV@e{Ki8<)3-G3 zJtazX&`FTxIkzPOER?NoMIblQ*?w4MYhg$PC?A{CNwo6>%E<<>OX7jG$9wwiZPTAc z(8)pzEj29~m1K*?Uead!3;{moJEW`6zmMZ_=5(iPm}@#v04;ag4aCD5%86uy{yb$~ z=jbJl4sea-Bj$WKWIGt(gaC0@By2{W{Q-ZDwz)&P+Y!O8sS@$vuePzCs|=S}YHAr) zBtG13lWc0q6!u^Umk-v&(gE8zeD!7=o$?5Cy6xU5bGL_2C7??zu^NwJ8`sSB9XU&0 zo{kLH)(Kc@nP1YQW2nVyF3n|cB26b}Mb6d}gS z`4>aZ<@({Oxbr6FDQ;+SY4yN9w5R~)C}9Tar!PdlwB2zc;dHeDlXb-H_Ts&tlk1{r zP{tUrE9`;W?thYxKd*mB4vddape?Kf5aBgp@aL<`LwDav95rQaqoo#tUc&)n{lY_i zNQgW*#f`5vQ?jR(9#59vLpmtCd#ZnhY7e~kx#34k>{iEDAc@C-D5xCcPkbdBW;VH? zG_1;F3WN9PfzxFmo(9m+$7*1|(I9nR3YZr#oh)#N9EQG?PO|9i?)*GTp4E{Xx-MQG z>vli}1aR*mqV^?@2hu{BWqi1L5TlePVe!e|%ON5GT>dz-gY`p{KA)D9f?bC)rhrG= zsCeX=uTa<$8c;j=vW{FnzbJ=hCBi;pOlgn&t75Qo)>8ngPntV*>0y_SVy+DgdH`3N zc}1$JHO0`vUV9{-9I`ed;S)ywbM}W1KI`FRPPcQR9WZwb0vCP6O}TsH%Y|=Tke~eH z3<}~#(X%gzWMP`-oH8Ws?fy8#mPGiU>Br*Qu$gw!U@+jA$QT!qAW0vD!#uLKH1+RjW zggYkyJ=Dy!8+>9zM`aHfxZ^Kx>%vZ+!%G2^J=@07_tA<#{qaJL9vA}6|J}I$$Dr8y z7eyK@6cmo~^5Rsa^2V-(+BFI$no>Xx#s#?HKPO{t@ex1Y+BW~30x27E0wpB82ZPs8 z`#06+my`Yq&}Rr|fHC=#+ky<}og82gJrsZJ-`Wp)Qvv&4FY3!zf!b5sKy@Ur@F{>! zTRap6ifMpHgaDL1qKCZkH4MTcP~oiqMh8GVU{v5ZxjqKH*8hqG7x#Sed_pl%;G#5<-@YF?NYecG(R^8!Aaz57~EP%{Ezvq>^>S zFpNDh_I(U9jNdh??{m)c{C=w+|TuN)Y%X49)Lg~>>4+3 z=tCg8?IDm|d-t(|GlF{dw&1YKU0?k=q_CZT3ViqjsjRIGfxHW6+q7Zl!zd4SX!-1_SP&oq9C9lpPGzc1J7aR*Vif4LKgSVrIBIHonj800ihh%ZPO&o3g~BO0dsoMN zbIC_^m7p}yT@c6zneD&O;ISdLCv(8Z<1bRcMDP6dm=^+hn7R*49TI%{A7A7Iu#{`X zvNmvnF9gE_Sfs&G0sRN_pb~Ib$@Hdbh{AAycXj6M{Q%WudS~)voO?Z9sb>(u2xAmd zGGG_8#cNj6l2At7EyJ`iA1ls~0&lLR?Sl|k34ZHv6CF#RDLT!5al`*2`ug6YX}@8V zj(FX&=hmWC&FpP|<}Im|?%3Lb;ZW|l>478fkb_7*(sbfcy5sO0pQvqQ_=@Z<2y*Z; zOZm-(c2T@>pg8m9~*lDb;<&X3AELctU~qfWj@++sIcAG3~J8BA}qFo z6I#wrWEo#Nl{-XXP2P6cnrRvJi4k=6H@~+P5@VgpX-RBxnHW>I-u%GB;15h{cxKtP zvMg%3Aji+`f|zU|QkLH?comSRyy}RQpjZn+Wf(@#LT6)~lhQ!kzBWuZ&PLUHZY^Ac z2av^tx9)0^H;2oq=2XTjxv9Zgf1(3ph+J2cM|-DuoK}|9sj}rdb_VLc(G`KtkG0&W z7o3BIZzB`?8Q)GNAAvkET|c&2ls)VfMf)xhv#k#B}Ml zW}OeYZW?WLd~0ky#KaeQQ)PRZ1-Gahyt;1Y|7YB(w@>^<_X9e zm*t!mr47V7|Fy&k$JP8;C;Dq{7cY4h)NNyiwnwj?!IK>Q7Ov!b7ZB-a-N{a5q+B3F z7`i#+j+!e9mRjvYMz6P>!UZe@*@jO>q+^G9Iy;b!t8{J{iXNi0R?C;z6{H)OvD}$Q z3*=5FE|~dfy40;WKT(m=FyzRES44-^KCc9 zTkwjDB>C_mmi_wQHMoX*fM#9W}Giiqh0n%*#F-P|UT;I!?jzab~*5 z#*-5xhXQB9%L@>c^n#Fxq{$5d%BHj5)B|me&IWJFnYxhK(H>L#nFaQKDuz*eYHC1e zVH;!+ZOBi7oZ8O;ky&{qoTEYOJ24|2h$ank3QZ*>`Hu2+x7DwxGdC5vq?G*Z>M$Q|YO4Cvb{zo~y>*~)ZJv%Wya%Ky6 z;&sLL1n26qXkc;O!eq*;#rPA@`=Pms0uz2pAIX0}PP+Oli+x`hT15~O{jSsK;j10V zT}LlU_2SR23sSE8QBeG!B8NL-m8f>vW&B^%VylNA+n}!3scJCj@l$w9uxO zXohH8@|M-9fb~67NSCRtkj}~$ONHLodUzD$QdgxxY;-20I5w%nW$yCqG3sJ{bwoxz z*|OIX|H5TaGS)-qUFwx>aGH8L@GI4<`uc?8qO7*#PD!LWFA9C%}Qa&xJ=9urd)Z`d=%o5yFxsnvF z_2yW};IuCh+5x4$n=Tzkov1CWM%_jf1Qh;QLDVLN7Hm5Bsm*;`i=icwI;w|~sBD3p z@3<#e@x%J(t4c1{>PvLc<);f^^wW4QsPuAxKiSk}O45>cWNW^MNFjw=fHk}|B^?NN zsL>(LXpC-4&TZgM%*s-UUJwXLz*J9VZ)igJC@XD!>9A#h>VK zoc0F*|G*Z`i1Xp6@fIRe4olyilLB0noZp?BzT;J z{f);73W2l<&#jFw4;ho0#IkjpnzBLhB95t8D*F4@;$ZS*Wb)nhBj8%?MnOXSg)k_V znow?ORgbhPOM|B|(*K-1XdUO(bxFgwo=$mD&n|agK(53H&c*X2NU5&bR ztmQY|?T_?@ z%$8h3G6XVmP_8y5=E79?Dnb)Iqg#GleCGQ$V`aFf$Ym4X^F(RAmWCGOVQdnRABQTE zy--8|&>w`Co@XZuZoxP23}k9O8Litv-h*JyjbrO5=2k4;{GSm1FKm}nQFgkn>V12D zIe*sY&261#_uY_(W45+>rO0ysXT=f17wu)Qaw++rOBk=%193Is;UUbfJ~J@C4L_rK z;%qLZEQ1HB-@cw8vUEBOdzwR0vdV5isLz03Lt?#2sq-Uv3R%6sIfS1U}c z%w-YwZ;v`=@G`~|-M+Mmk@&2d>1~o+Ij>`Hs|-ylrI!-YJkv;|{Sb%_@5w}nn`N9WpPvG9#dvcjhv&-OfmChcgw})uyoft*I7gh| zC&fL2AY`z z1*{8gB%ei|{qgz~Gbaw(vXtA@<$sAkpmXTqx$&btgkrU*Qe0}|Q}?_E*Yxa)Qc+R6 zg+LisD-}<6QGvB!mWCLYPdWoyQVDZg3E|GyRgv#Ak@Fv%Kt=f?X@6OnynjjH+>*MX zENh-{IyqSM^2|5YT~^UI`}FA;{GyLLW$LBU#lD0e!=v%<;4yfchN4=cEKXlT^-t$!)drGAq%wXFsWHup;2G2UWxW2ZNoyvA6uzzi zcS3yjVzYVDxHcW+U#o;fPT$m@xm9TxwWxEsyC4rGn?Iyn$?_=C?KjmDA!gXf$(6}w z4Ys$?C%<}&5 zNPA97Or=D=T0xpCChja;1S3r=OQ_D~@s^x*YT+0NTa6c+((%Oh9f_Sogb4!f@A@&| z`&71i;4!7+-cy}-))%~o2c3n%3Vm3*gi#0h0MY&@KB($}ul@}jiIXWYpw`5N5yN^I z0-zW$H>TTyt_^P96URe%93aoWZapL@^(r<|G^ih0>8w#{y~VPgD!eRAlUJIwz7NRT z{d+dd_0{)Og@^qWkgxptLfrSXl3co5gIJlfmZd^rv0T=`vNXHen!0C#M%#r?czJuR z_y_04U*gN>uYsr`9e*!b|F>I97w=!X)9pbKSstcizJZ*&brX}X`>Py7P@AkDKks(P&%LCWtvL}hAj)YVzz=UG!Mg)= zHIRgUNl$;BXdhg_03Q9c0t-bh3XCI6i}=ucAMHOjI3oY7Oxz6!H)NPEl$q$|xfGV% z5>HFRP7c2)iO+VK6^M^RC$RI}7aVg0`-;sYX4%M@v|ujMbX%UBkC;RTG237b<8=US zY;80(@VCfD?xJAW{UVsw`^k1qZNJgaaR#YXc{fNiJTq$-yihj`$Dq;GXOGBxn~ShO zEmtu11~6s5!|7nznhU7HdKlxE> z*6xKKdA9kpQJXV^u);ym%ohYPnq^eWj z1-`MIm2V@NNEl2(*ulq1h53&{t@=`>dkhvAjD_p6gS(5G6_Zq7w0;Y1?aKS%qK2xy zi|;e)5~%aeyB%<57T$`e8piivmd7GR3^EORs)=Xt>N9|4zpgBdD$jN6b+5ws+i8b= zx~E!l6|CkfD`lr!Q#Q%dGxaBELO`}e-C7Vh2?}<6V6T&@#s&_y_L^1t!g)EnA)Z$V zCATn>Oj$=nT-SSd_iemBI7$jP4mt{k24D4lx6)xVpg7OH>Lwc`Ei5fY9h?4aub?M} zJ_rg;dwz;-zov=)M>|%w^Qmis**YS}x_O5dvl9j1q$z8>eY2m&K>8PE(#E(QtE;H~PXD>D3R3cjh$HO^2pN7EAFJzAKei?=#h(~SP+2?L?d4@U(WJ_5vFJyW zz^)M+x@U~JhV;t6WfKgj@T7iI^xIiuZRqqC$p;rlVq7}-V6QVhY4|obgTKK;W>pS= z;rn~XxgifrzvjS`>+PE+M0A7l_C=Q8@yu58Kv>?kBHKH{bL!lRom8!`(a%WMEY=}a zVtMD(aTdv6;s;325_&QC9?-l9_g zS%?@75XVefbn94YZfM5RRRd!m;m|Jh`_))dMVI%Ft-^HtH@CKR488)n3oGAgW%yDhHua=$EVB^D> z)-RHu7M{(ZRn^`0&P+2=;jOuJ?pGG|eX5SA%k}RKsKB^6A$mT1?ui8BAGH2SD~JcJ zO*&CH-KN#QGyF()H=m0hv3TPoYBz^5js|t*;e+1jT=Zo?zsDl9Ps``Gd-;`0gmY+3wn+d89Z!3$r-!lTarg?)7f6NsMw6Nt3_14O%zucKaFoHZ6h(&1jtC^q(w)@LxsYN7$d zhGaj#4Yh{~(U1A6#vjc;)E(gTXD8S;VGlPHVRK8~l$_+$9JW>rb~@qo`JE_95IPS; z5dh+sr~c`I!T1OgpGO27!tH-jXUF%l{^!-bmB1L`amr%7Z{5RP!2-C(|C22T&T2Sm zNVaDrELHXhfO|q-#XTw_ABQ>nn*0oy&M0TPAL^Ab)?Y0Ctd<`*IbvS*ZTT6B5 zMSo7agF+qV)`QzqiN4VuD#n4y_$v9_IF=2SxAl~>%nGOy2au7R$3!GynLP3qbBM?P z9S&X{3|teA#$ggaX7D2|y1x{6GHQyM@irIj+Tev1tjszqDqS%9!CbaI<3P8$P-iK+ zw<@cCy2jGQ0v;w}n(+E8d>J;n@xX5oSb!t9dAON+AfFaY)T$^>t?HKBH1>WH07bwH z=bCxn|MfEtD^`6zOMxeB5#6D>nXR6g`P$J97RB&!EeHFv7e%}DWo?zHVDo)$1hbT1 z&WsGe6z$!0Ut@-%DAW~R8((rePm26Ed_rn|V3kcUhf5ZW{o$xBi*&zXXT;(5G&3Sy zW`C2W;Mj}Zd6rF+c!4W{fNQSH{C$iNu~owBAhNzv`R?6*NqzsV#&Jar%MXe7NV5NY1^&gIJE+n))CT8!UbMx+81{+KSI# zly}9B?SAM5=!0QdV*HxlVhzjgHh30;q936DJ>FaA!S_Gs!7~&GveqVni9sX^{=az8 zp9I0Cr!VHy2FCloepv#)Q*UTZvBleO?AxQ4)jJR&vVI|?`cH8F@20QZL!?STQ4r-n z;JH$n{w;xjep0fP&37y|=`n@_mcxG`0h?l9-xClwffUr8=C zkje_b0;m1RARLS_70|C^Qjm5 zZs(%tZ@91ctaQge`nE$br{0LO0d*?yyCw$Ream}VL+D2fq9M*BoJ~>^E6eqtArZ8djVQCOk20&DP`ai$h{mA|y0~ne2m}=uWn8HWy5nJc-8YApRW#-qURda!1k7cc0@8W8D_!?SXG}vK)zF)+ECHZh3v(oCX<;86R*{zH)I!C z!DC5XmF&^b+7M^zOj+rTb$QFW3)JR4@V)BMC0=mPVOS>*W$mfZEb!B0S5O4U|3_Ly zdSC?yM{3lKCt}RVH5jz9#}mrWdTopE8YvH8r_RCgfTAlmoRHJbz*(8?aB}?RB8-}J zG#^`t@gS;<>>zRYWzCjWI;G@|ulwLUQ45E(lQ->!mflS zWKMV}A5a_DlfQ99NAeFQimXiz+bcXfVP~)K+Cx`9%tx7!HE`#?`1-8Fe3#XyQeS)aN->svo?cR)U8Q z>x3Zm4S<$TTNzlJDyH~bEhItna*bRJoRHXnNl##&NRv_0A@1Sc$BV~G*HPu8#jN7% zb1egDu^bRc*JG237uz~jr3@^MpYiQV{o2v&MmN1yo-n3-q`@RnU zMkBo|z^kyiFFu+KOXy9v5Z9`L4LT_zD=f<^o^N7tLA&ccLys^-#dhFpVO-4SS;f`} zsvO@nXS`;wg2c^}+bUrlwX1t7=~d?dd3p=j%4F8oF%G&Yz%!Y+m(xtPcJ0Vd`}h3) z9iHTv%0#(;yTP8UkK?I~!n^(b&Qyn=glXt)!rMj%`p|+mxWzdM$s86x4aHZkQI!;* z`O@=Bht!lp1~x!FN#IapW#R%HVbJ}o^Mv1Hlg`%KwIv0hoqH8qhBqD-vx3ODcju=| zHdi1N?Vv9)$Y0TN6lbL%k2v6$Xc86fDYsy=o9#u;gg{@9kn8IsogoQ3*&93?<`H0`aSL}UEb_(ceC(d>>kYl1sBrdu?YsAprr0-ER@X?N8sx>pVT;Eg*5oL?)Q!7*bW)xEp<*-FR z4DUDg_UgPJ*&pd;GXOk4I2ZzAKA ztC81L133*ED|3UOg>k|bu(aCm(Z_lSuMNDjql#|ErD2Kp%gEyUg1zR|G8`ppxWOLD zj6IGA3KBlN$apUfQ1x@L5}$)e>jjO7pPnQ9+uv?eR?--3^n!#U&(njyCG`@FV^)u7 z_CEJITr=Q-A;|D)XY5JI)HKO_H43}fO$<=hBre?WkW=jJr3}?QW>g2ANzLn+BELE$ z(=E!VXR}84WtnZu??W+6c6;`+?E~H7AS>lIzO{pU9y7DofrsG;lC$z|v}~CC)nEDh z+3!uOLDR6Ir>g!j;Xwb~di_s#!7x zHcpxMzFz7uyLCvQHbL*Qya=4!P%_~_u-ynKMurrFAeP8%0v}7i3nNfrH<2J0@k}wlB zWo~E<;0YgXMf8Uh6I+wI4Sd?R%AvDUFT}1-`e^$ZPTg=g&Zc4wa@^Xez1A>&Uf?vK zN8V~I<*m`9J*nC(^(mg~rIDIw&7kRxm{XMj)E`Fa&1xabF-TKGaa&kG+fXKSPc!Dk zhb-Jm7v~RFC_K*8E%9qj8IvC$gb+2wQF6=<1!v89uxU}(63b_59zkXS_|FQ?mt?!UE+q|F8Z43d5@vy!1pnbhy)I03tf)H$W zGmVJjuduipy=ma61*+7;C;!C~)<|;TEsl{@CKa%57SnY|QOK3&){O6T3S>*0SmN2f zXW>P=Ag%#Z(;PTUq;R}8R%57s5!&4nFc6<<1X(611Lv$hfVkwDyU<@9s~`^)nG2m^4Gdd@x1 z>C`nQWa;#S&Ihld+(8xV=FE`poZ3Iz+2!x!Ebi@n>*57~a~*X2AmO+36eXG6nu#rV z(k_>1o02OSCslK$zoMW2yNl&a{@2v4<^h4R>PC?L!a z8*`YU@$g*fPHY_d=esEXYGnQVVwzBs)X*LsFa9A6_ckBVm%cQd*<%E=VtS|GaXy^6 zl&=o@U4b(>i?D=e$%NZNNDa$vegTrHknAb zNo}wwjUT?I^f22nHi5cf!dU((C(|US!Q>UayTq5PBlli}nzV;CwMTzkJ}IRZUcN>H z*O=+IzgpuM(wB4)RObWZ+u8W&y#+j}(Egswg6W*J5-mjUR1LeBmigV%6M=nn_;xLOS2}a&7u&ranQb*n@PMN0F;e6J-wR)dwR$U zG$x1XY6de*NWW5K;#MVFb{}MONykaECSRkUwbf0V$m1-V$rR(sJ7S!0y@hA52f+z! zbau=e<$|V}(aw?A*wa$XQo41B=+wKEa%G%GWK(LakQsST0@vxBX?Q}~fgSs{-ZI>H z8zK_0AoaO0riMG%(nl7(_Nw_!1=EBv3C1n<1U_nv)eypL6}4adf4%JVuK)uq<({)Nb;v`jIY>SOghPS=Q?w!?W)cwPhh}lU zrnK+*U%?AgBl(vdk-J^kge%+TV!<%&BBdyTL~L|NR?mJr@Hu$rrKw-Wql9Qqw_r}H zm3h-A5bcn5L7)%s>5NxJxjN^@b$^KxEdkvwNCGstfVOJ$BGm10y>2yzD=Vs~jOi-4 zl7Pbmes+h{aULA5|1V9J|8(bD1|nuI(vlMu}6(fK7ct#u741TY}1s-~$aqyIuo6 z1CLddX_uX}>B*V}=p)eN=`1poYfIK_&Z6B_7qUYHVX9)_Y~QR5K+Hup0P~xP8yF{V zeaWQ^F3|h+HEAN%d|Aoc`xls`j4|l%<+tXV#U5@KyZ7;lb@MS}3h0h8*D5|EC{Cji zc!Q&U1m~OHX?Z&v%KEEVNEGgPE`tBuUlNg@sZ