From 20e585cb96741b65b08133a9e062e7352b822825 Mon Sep 17 00:00:00 2001 From: SatoshiShibanuma Date: Fri, 9 May 2025 22:47:46 +0000 Subject: [PATCH] Create Prometheus-generated README file --- .kno/chunk_review.txt | 164 +++++++++++++ .../data_level0.bin | Bin 0 -> 3212000 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 4000 bytes .../link_lists.bin | 0 .../chroma.sqlite3 | Bin 0 -> 262144 bytes SECURITY_AUDIT_Prometheus-beta.md | 215 ++++++++++++++++++ 7 files changed, 379 insertions(+) create mode 100644 .kno/chunk_review.txt create mode 100644 .kno/embedding_SBERTEmbedding_1746830717243_4182c50/122dfe64-6770-478f-a3f6-f4dce5d95537/data_level0.bin create mode 100644 .kno/embedding_SBERTEmbedding_1746830717243_4182c50/122dfe64-6770-478f-a3f6-f4dce5d95537/header.bin create mode 100644 .kno/embedding_SBERTEmbedding_1746830717243_4182c50/122dfe64-6770-478f-a3f6-f4dce5d95537/length.bin create mode 100644 .kno/embedding_SBERTEmbedding_1746830717243_4182c50/122dfe64-6770-478f-a3f6-f4dce5d95537/link_lists.bin create mode 100644 .kno/embedding_SBERTEmbedding_1746830717243_4182c50/chroma.sqlite3 create mode 100644 SECURITY_AUDIT_Prometheus-beta.md diff --git a/.kno/chunk_review.txt b/.kno/chunk_review.txt new file mode 100644 index 0000000..c160f7f --- /dev/null +++ b/.kno/chunk_review.txt @@ -0,0 +1,164 @@ + +=== File: INSTALLATION.md === + +-- Chunk 1 -- +// /app/repos/repo_7/repos/repo_0/INSTALLATION.md:1-37 +# Installation Guide for Cursor Auto Resume + +This guide provides step-by-step instructions for setting up the Cursor Auto Resume tool. + +## Installation Steps + +1. Open Cursor IDE +2. Click "Help" in the menu bar +3. Select "Toggle Developer Tools" +4. Click the "Console" tab at the top +5. Copy the entire code from [cursor-auto-resume.js](cursor-auto-resume.js) +6. Paste it into the console +7. Press Enter to run it +8. Close DevTools by clicking the X in the corner (optional) +9. A small button will appear in the bottom-right corner showing the tool is active + +## Troubleshooting + +### Nothing happens when I run the script +- Check if there are any errors in the Console tab +- Make sure you're running it in Cursor IDE, not another window +- Try refreshing Cursor and running the script again + +### The indicator appears but doesn't click the "resume" link +- The script looks for specific text patterns. If Cursor changes these patterns, the script may need updating +- Check if the rate limit message contains "stop the agent after 25 tool calls" or similar text + +### The indicator disappears after a while +- The indicator is attached to the current page. If Cursor refreshes or navigates, you'll need to run the script again + +## Uninstalling + +Close and reopen Cursor IDE. + +## Next Steps + +For more advanced usage and customization options, check the [README.md](README.md) file. + +=== File: README.md === + +-- Chunk 1 -- +// /app/repos/repo_7/repos/repo_0/README.md:1-79 +# Cursor Auto Resume + +![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg) +![Version](https://img.shields.io/badge/Version-1.0.0-green.svg) + +A simple tool that automatically clicks the "resume the conversation" link when Cursor IDE hits its API rate limits. + +## Important Note on Usage + +This tool is created with the intention of helping developers maintain their workflow efficiency while using Cursor IDE. It is designed to automate a manual action that Cursor explicitly allows (clicking the "resume conversation" link) and does not attempt to bypass or circumvent any actual rate limits or security measures. + +We respect Cursor's services and their need for rate limiting. This tool: +- Only automates an action that users are explicitly allowed to perform +- Maintains the same cooldown periods as manual clicking +- Does not attempt to bypass actual API limits or quotas +- Simply reduces the manual interruption of having to click the resume link + +The goal is to enhance developer productivity while working within Cursor's intended usage patterns. + +## Why This Tool Exists + +When using Cursor's AI features extensively during development, you often hit rate limits after about 25 tool calls. Normally, you'd see a message like this: + +``` +Note: we default stop the agent after 25 tool calls. You can resume the conversation. +``` + +This tool automatically detects this message and clicks the "resume the conversation" link for you, allowing you to maintain focus on your development tasks without manual interruption. + +## Features + +- **Auto-click**: Automatically clicks the "resume the conversation" link when rate limits appear +- **Anti-spam**: 3-second cooldown between clicks to prevent issues + +## How to Use + +1. In Cursor, click "Help" in the menu bar and select "Toggle Developer Tools" +2. Click the "Console" tab +3. Copy the entire code from [cursor-auto-resume.js](cursor-auto-resume.js) +4. Paste it into the console and press Enter +5. Close DevTools by clicking the X in the corner (optional) + +The script will now automatically click the "resume the conversation" link whenever it appears. + +## How It Works + +The script: + +1. Monitors the page for specific rate limit messages +2. When found, looks for the exact "resume the conversation" link +3. Clicks the link automatically (with a 3-second cooldown) + +## FAQ + +### Is this safe to use? +Yes, the script only runs in your Cursor IDE and only clicks the specific "resume the conversation" link when rate limits are hit. It doesn't modify any core functionality or bypass any security measures. + +### Will this work with future versions of Cursor? +As long as Cursor continues to use similar rate limit messages and "resume the conversation" links, the script should continue to work. If Cursor's interface changes, we'll update the tool to maintain compatibility while respecting their service. + +### How do I disable it? +Close and reopen Cursor IDE, or refresh the window. + +### Does this bypass Cursor's rate limits? +No. This tool only automates clicking the "resume the conversation" link that Cursor explicitly provides. It respects all cooldown periods and doesn't bypass any actual API limits. It simply automates an action that users are already permitted to perform manually. + +## License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## Contributing + +Contributions are welcome! Please feel free to submit a pull request. When contributing, please maintain the tool's core principle of respecting Cursor's service while helping developers be more productive. + +1. Fork the repository +2. Create your feature branch (`git checkout -b feature/amazing-feature`) +3. Commit your changes (`git commit -m 'Add some amazing feature'`) +4. Push to the branch (`git push origin feature/amazing-feature`) +5. Open a Pull Request + +=== File: cursor-auto-resume.min.js === + +-- Chunk 1 -- +// cursor-auto-resume.min.js:1-1 +function e(){const e=Date.now();if(e-t<3e3)return;const n=document.querySelectorAll("body *");for(const o of n)if(o&&o.textContent&&(o.textContent.includes("stop the agent after 25 tool calls")||o.textContent.includes("Note: we default stop"))){const n=o.querySelectorAll('a, span.markdown-link, [role="link"], [data-link]');for(const o of n)if("resume the conversation"===o.textContent.trim())return console.log('Clicking "resume the conversation" link'),o.click(),void(t=e)}} + +=== File: cursor-auto-resume.js === + +-- Chunk 1 -- +// cursor-auto-resume.js:9-35 +function clickResumeLink() { + // Prevent clicking too frequently (3 second cooldown) + const now = Date.now(); + if (now - lastClickTime < 3000) return; + + // Find elements with rate limit text + const elements = document.querySelectorAll('body *'); + for (const el of elements) { + if (!el || !el.textContent) continue; + + // Check if element contains rate limit text + if (el.textContent.includes('stop the agent after 25 tool calls') || + el.textContent.includes('Note: we default stop')) { + + // Find the resume link inside this element + const links = el.querySelectorAll('a, span.markdown-link, [role="link"], [data-link]'); + for (const link of links) { + if (link.textContent.trim() === 'resume the conversation') { + console.log('Clicking "resume the conversation" link'); + link.click(); + lastClickTime = now; + return; + } + } + } + } + } diff --git a/.kno/embedding_SBERTEmbedding_1746830717243_4182c50/122dfe64-6770-478f-a3f6-f4dce5d95537/data_level0.bin b/.kno/embedding_SBERTEmbedding_1746830717243_4182c50/122dfe64-6770-478f-a3f6-f4dce5d95537/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..060c99b5e588b423319a33f196c3865ba5806eeb GIT binary patch literal 3212000 zcmeI!v8`oQ6hy&m5E4GAOa_F&1VJDZA`&LFvE8FpNC+WaG$imAAkP-*Z2MU ze*FFKfB*CU-}mzm|H^;?1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#q8~FT_O+Y7hC*&d*1{f$9$c~@Gzk+W!ddC@HfPrnm40aRHiQNgg$b|t03I@9C z=kkJYH+shzV1R*bzzTK~(23m%xyXe91_}nc>*w-3AxCH z0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htK zg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EON zfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>N zy6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-< zZ#R0!8DM~cZNLh46VQp>3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW% z2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GF zb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6fli zf^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w- z3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv z-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^ z#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH z0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htK zg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EON zfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>N zy6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-< zZ#R0!8DM~cZNLh46VQp>3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW% z2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GF zb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6fli zf^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w- z3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv z-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^ z#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH z0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htK zg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EON zfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>N zy6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-< zZ#R0!8DM~cZNLh46VQp>3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW% z2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GF zb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6fli zf^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w- z3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv z-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^ z#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH z0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htK zg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EON zfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>N zy6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-< zZ#R0!8DM~cZNLh46VQp>3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW% z2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GF zb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6fli zf^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w- z3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv z-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^ z#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH z0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htK zg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EON zfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>N zy6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-< zZ#R0!8DM~cZNLh46VQp>3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW% z2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GF zb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6fli zf^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w- z3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EONfo;GFb`#Kv-3htKg#iW%2D*w-3AxCH0R{>Ny6flif^Ro^#~EON0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1}+9Z|42Xr5|F?-fy=w<8~gi$firp^NrvA-`ExU2W2 z1SB8<3B2&G`y2iKxERo82}nQ!61XRDc~^a7e_t?gSMN&+NI(J-c;Q|5H~Rf?F`&&7 zkbndva8Ka!uKLFQzF^?4-j@=PfCMD)!n^Ko^!wvtK$|5X0SQRpp1|c@^^N^~!N6U; zFC`!W2}t0DcirFU_s7M6HcLPP5|F?>fy=w<8~gi$fxCKNNU}8z2}nQ!FTCsiM!!EU2DDiM5|Drd?g?DpRo~d(7Yy9h`%(fDkbneUc-Q@net%pH zXtM+)AOQ*76S%yqzOlbA7`UtVr354(0SUbDuKOGP{W(i0@0us0Bz-XxSe<%=u@)e*ojQ_7mJJntEx_t^%8~|9r4z~aR literal 0 HcmV?d00001 diff --git a/.kno/embedding_SBERTEmbedding_1746830717243_4182c50/122dfe64-6770-478f-a3f6-f4dce5d95537/length.bin b/.kno/embedding_SBERTEmbedding_1746830717243_4182c50/122dfe64-6770-478f-a3f6-f4dce5d95537/length.bin new file mode 100644 index 0000000000000000000000000000000000000000..ff95364698ed76467aa8f526be8a0128f4c3915d GIT binary patch literal 4000 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
Ks|(_$(zYgr#5iN^~`yoDql z_9R|H689I9cnV3}?MXapdipjOy^zA)&(pV#uRQ_({=Z24r5pK2Ka>C^KnYL+lmI0_ z2~Yx*03|>PPy&PPy&A+!%4p^c9fWGUUKRxUDG>F(D=Y+^_Rp(3N9FNvy{ zn{U#n^YaG^fy#_(5>lvq5GR+U#Gx-E#51xAiS3&&1ubJ-0y)`}2;sl@@QrOqBt8=P zF(E!9A-+wbJ-C)L3|VPzVGJ)tC|_=(Gd>&%aHe(?&E%1AcS2|*lhGcoP6(W2kBZ0S z8v2oNN_+->p%SroV0=B18;L;44zT+}&QTXxO~P*y>xl$rvRZOvj*Y6>ReS>L)e{wq z1)isw%x0PxjCZo@v3BR<~NPxRzWO3dj>86$I8d7 zvqyO&z4_w*nI8RL5;W1*JMdlkt2C%AWSWZ-Rj|`rrNKS8y$(TbzB?>0mFLZ>|Lof-WYE&rNi^X}qR+v(gAVfxd zwIqBH(f?}5$+F0B&iwha=XiUAuy)>eAcKn@zH~Y zEbP0S4)Gnxq?Ha$T6BY3BW~~O3kqirE+a4owMLvOz8;eHQ5jd9}Dcf={$F^+0 zgDM{&^u>?PU~k8AvGZO`WdBXVv08{!&LEg?aE9KHPsX>G26F*sMP-oTu_EpjB_-o; z-kYW^XS7L$!x%?ZLMxOclsAn1JmAUcVrZ#gp~vDMxtYF)aaaMyA>EbGYsp&39Q`f2 zaokUpoqrT1SYx>K$A6->$!YPK@`%Af_O}RvS~5W-ENGjQ#P9-LP#6>R!W#$t@fIzZ z79>n<3o~12vIu{3qFsMTTa@O|QYMLx%{De+5{k?glbMMpa|kA#gxf7(vyIut#_uJQ z0M|wf+mcC1%Ip!6XSEhuTDE9mC?F9Z^9*dh&Ju1gwa}<_xoitZQVB^Z(U73l;g){6 zp?n@)>`nX^r#n(fWZ}|qsU+9TvPMS^*~WOrVkjug=VR@f@<}L2e$GTBEg%X_qA`$A zkXjOxw-1RANuup$2l3&8iF)uqh;iXtMNs_gAST~nBteGxsFaTSCbdaq@(flB!~Y-O zDTyI{geA!e$nS8TK$9j+QUM>Rm`tdcR1-N!bT!MO&K39w@ka%jNK8sc#9DhSVZLx7 z+$G=T_(+y{Ym*g$nVMOXD}It$gHE5~yZIQEN;^RwhDWHx9f#u!NJYYA)a{gK&DVj;NB*GgyltdcL6#ZyyX6qAl6RUcGu{ z8~MK7lIhQ*(W^;P0DC>n%-X)@GiFP@l^G)U2bHW{Y^UdH;Pp4Ko z?3RwT5{>5@nH(oUX9ekmxaI$XLF2mvfkfh?^L?7<$0H*hv(&)o$$M}7%91}|b~Zjw zmqgUH5WC5@G!L-?JtK7xtYBM5bMZeVOtWVENFfmvzFD)D!npBoSYuZUK}IfCZFUr5 zv>GIqLUjROhMdHOCUp6j?v5U)VXghiFi~p#O+=fCc_q~{SS&@Xpnb%EwyWPq?6W6~1FB1WSox4wFPMo0 zUnWBH-O@sgwY|=Q;UN0j%~@v>ve`&_Q;110FY0_!mfd_5|Fvb$eUby zm$lnqhM%tRDk)qe63E+mlwx?Z$xpfNMzoRGRbfiO5AMcbVg|@cLr(@!GK3SYAf$_o z!dya~&kquWpJT-56I48!HzC#T$}5au*!Tg(J}uH0@iyN%Qzj-!?-*VPg?I~TA!5A9 zcq$2uRP5cCZ*((Drj1U^#j8RX-xOw6Pjb!^)Q8x9GBYX7 zP?&-U4d7@mJ62MuGJY0PM5@VU{$$s!vbmF>Wlm%9SA2;SWNPkcJ(tN9nPl`cklCuB zWeyNz_$CxfZF%WziqzDphc0UN(ws@iN>~-V(M(UBPZsyOf&8S6%r1u{4ot!9I!h}R8%SJ`i3)`fX$e>R_}6x*2Tluzc& zBomg+C&LGs(~w$NiZrB3WZqv`M1Y!Ea_z=K`mnzeQUG%k7ZyYM?m?u`Sq|uPvd5cjxt7L^r68qhjw*h>C!m5-vP9zN4R84Xs&5>?z4kl=5Wv{(%wM8Xv;xEK=tFTqVD?g~5Q<(|S1<3sy_+9n<)OVe) z!q?3&*|V;P!TqRvh^VAe7oX+czllot|NcvtRq06;5h$+T+$S(4MO56p{H4VlJ!vp2 zS&iga$OKfI_u}QxR~!#5cX=$h^vdKbk_U(MVO%a9k*h|bOxL8$_Gwv}OnO?^q&CG& zGoQe;G*NMjzYvc&v#=Njv9B)Bks#zv1$3kj4k4E$ofk37iE0@nT#yVct`}+-@twaA zkvBhN#`|g!9SMTpR77X`SBj{Wh8Bm1_yo3VCn|pLFQhZ*2E1A_ac->&1z@(%%XmN6T^wkpcH%H%jQ<3?^uWo1!iE`S< z-qs_0>iY!BWTKJwJG5oRJFh;!yr*tCAznWI@=XDk8!4s9h5IP>3*E227e@wx|K{6q zWp_(_?}#K7*%P|20s_VIaG$`AGEp%MH~5-3bSNpcO=36Z z<>Tc}=kLG2oP-G>dJ{&jAZMCc1 z%OwW=mC!C{zgA|KbWV|7c9oMjILs$7kx0zGN@8-6;8pTA{wsM)&wZ`5rKy~uCiC%OMAKHb7U{?t4F#;_X@hk->|E=PE(&im8w#4!s~~) zGNE3W+c=ux^$rzQZrc@NvZ7^z15-!aqUiIv@`W#jbsvnf=MqU zHy8_oL*?~e*UqI9k=u}E+W{kL)D;?fWZ&`?vXrIqFW1mz`(GYSDrn>KN|2i7dS|vY zt5PK?f4m|Mv5!lRJ3cvN&6}B&l9-VhpVFyRiO3T{ZR4|&Gns^}^z_8k%$(9B_LH5D z(3Cx>66VqZ!hUakxG<)I}do0QJ3+(>=2p5g_hFt3q^t6ft{PbsB%jV>pa(N>`tW4PspW<3?`2;p^E-EGy8*=gFg~KoW^ezYDg@XbO`xMx92FJIW z)j+P%Th#@H{QS67cK!%|M^CuRSRRL8sG^p4U{aG;RjZ7KB`3n=$6Jb;Z+e={<+NHO zB5L>qHfbUnWnbI49CF#LS+4d$E=OLc2`&%I{fp1lIiK1SbVf%IlDj=+cl_`<5}*Vq0ZM=ppalN01nBzzAKNrk zFiL{~ZzI63|10^da;yBn|E|v}-yPyBl`s0v_CNl& z6+knh1SkPYfD)htD1rYvfs%Ny=F`|0L-`V?I@*ff)NdIpkt_V1Z%EtUtxp#m&?FNV z93i31VBxVx-rEq#qLafvLD^fiCKLZ6CwXVn$a`f8k@GK9yE-{2^Cm=gTdcwx_=ssk zUOf&cFXM-V#+7Do&@&S!5zA|rY=&>%a|pwKwN(Sgy#Q#6K>>`YCY znp{COZ5mSUcQ|>wH@}Fyh8+_0*Un9XLWc}_)!7yLN(l-Lb=K2}Ocf}Dn!Jlss5XWd zsLg$N2RahomqHlxo|$;AKtcSEpdREW|HQ0ts0Y!TimLf4|4u;&k#b!WC7isIP!JO8 zz$+*&DJq;iJ{}S*bPw|W5%bF2$gAGQKEa`3rf{LNhJ=RoGZ}OtR>X!59qRqIXC2k6 zwZ^UnUJF}$HMiwfpgI4NdoI6q)=4TP{DpS3BkM z^DFbTL*CZ^pL5AYEQze9XPrh4ohWs%<}tpRSM!Y(S3xpJb{0QB@|wT!?z`he;-bQ@)H9CY zVdo_WJAUM~efx;Pyu!UskRN#|U+ArZ_W-AF9l^B@LtebG`!Fc<<2~K{O-^?FqF&=; z$1j>3B)$d%Rkatw*18$EBus}xhO~j3 zi?5=6V;AA~9^67B_T5Eo#(j*J^*PT4CvE5E=#SY{o#taxV=eloM_tv1>Aym+c57lyRqm6N6xS4(0*?NAu6HZMUgVyEc<7$DEk*?Q1{LJGM z@LHJ1?Valb=N@lH)3d^$+k4lQV=PzE{h)OSRl5VHhTTQmhb%-BddyLNJ*EgJjd>ex zq>b8D_ZKslAJhQeKDz)?d&lEbnFXpw6Q{#xcix8)vP0-x`{uBB&V4k1yM#S*8KrGU zFf>+dMjt;qgtGK);G2n4ZQ}I`Zjx>oJ~=#YS4xX{;J?BXb!d1T4LrZmW^S_@X4ac$ z%N;rhZs3*Nl;K;jB+5f|^y{stVChA;bFl&7tMxfu-Xu7tT>$~%Un3(|0;e9XL<_d; z!!`c&-@Rx<9n9UE50`(Q0zWDeAoRdJysgHM==)*&VP!oL=nu^XiIRbmV{dU6wvK`H z_#@ojTGQ~9_YUK`9j+t)x6k5$Q4zbtuH3M7*9<|qiFa+`xyxbid~fvOQk!kqH`r$F zG69}W^@T<^pW923=W^SB{uP<)PDCAY zZFud2NnqPs8L#%!!56uw@Pq3Ckk@^nZP~;o*h4vf=c=By;M}~YXi4|gXyLCiSl3&j zT%RG~hDgS7$D7^6aS;Jn_FD^B+HDK?XU#(A#wEhJEk&_Ys?-OS=PdXxtSwxf+Lap; zwAbc#BoLj}G=OO>x5Ao7HA#ytbS>pcVVa5TEsl7WU#0#u{Fve|mKY03TA%^h9&>@x25Q5#g~y$d~!odnWK z3t_~?*|7hMw_xFnEih=@d3@{cPW*6JOFSoLCO5S0M=(R*7eb3iqna=m+7DTTtep$c z*A3&L-{!ff;1mPZY+Yc;h+BBi``2vWSrd0lHXcX6b@&PEh9n`eX9Gy;xd_@d6~o6p ze3A0R1H4ruLnCEV;aK0}ySh#M4z_x>fq=KZ#J)FRUH#nAE3u%l(PmJX9-eA)d#PlUfhE0k@)dAGybSp%o%;E#GTn&ohwmHg#Ld% zN4<_e08^|Lt@!#R?w_)Wt32|a?fMpf@Grug{|1b1U7iJ##{P*5GJI8GsXe(rt6fAN zZ};PR|@lJfPrCJbsF5-~v3}=Ll-v=517??wq(*vs&(&^L97%RUavrzHR#dNHItsl%34Y8Pg_=x% zcTej4bX0%Z`zYs|Dyoxik9LNHZL!51t_L&s{iO67xdhqPzr%g9c((G~1P}P$e-o~M z*&UjfNKmu>^|WJ~dQ>QkN<+3i8#rv7*Av&+V1$o`WkS~`+qwCp2PqewtjxVLYYyxl zcpjE6ZvbaDx5n-KlXvecoQlGNN5D5Z8K`mAN%UivDwqw?aqWpdP3r$8>h}B~RN66% z+a4c>^d7(2+WP{mc|UN6$GYL5xcV+U>r@-1H9riG9UP|g-Dy9X-sp4gqu*MC>PX90)lVux;k$5GJ?SiP-`E%heLNRhM*Dz=@)VxmX);W5 zAB$2Gyj1AxbGX5Y)A;j-Be@}Y8}ZEt{)sR=pO?UO65uiX$)ljJVV*9Ip(_e$cAy>w?>!0ScAup{2a#q+yV``QG`C3Iulxl zeS``}k3uM`x$65`VNj$0_vpd#32=7)`naw;`oa*)qPQ=$UqRrq3EZ@R)+*b|3%2(0 zH__hrA1UkB^n^A8ukK3SR?Mwzo&g=c4TWFEjfOkFFG0gR+*JpM4MR1S&EcN3+F{%4 z(*@36429TcpTsWe;*Ya&I=9Cd!d)KQ1B=gIQT{P89p*`Wxwx!JIHlo3eDAGKpy#&H zQ0tHPp|H*`X!-M@sF!q>vcMK->(-$dGtVEOM(*#St|=$6d9Mw8bw_ZWgpatf>9=?F zYbyoL+5oR^`zMZ`Fcm^iAHv#>_t0h($~B*L6K@*c2zksu-!i$g3^pYCa?^gF2M5z8 zV6T)$$mfnHQe`cL^V=sW_o!rG9uk-O>Zk zz4ku7R}uuFqrQdUreC4pJN>v->sP|?hliC5p9A`_RyEa-JKrGVlqa~?7qwu(j2d|M zFaF%`je@w@l15yO`-eqk+PyEnrpEOu&4g=$Y>2P4;SYSW**uC+3 z2JXG=3>J5v0GC#O0eyGPMc?;(2b+$ULUEAr(0!W8kp?9cgye1ydU@74K@ zR|}=C&i*^r3l2AD<%AJd4E%wY*9!wY^nT^0{^Kbe2i z>LJ_sy5&Q*@m1@GY-7y7<*YL{oFS`m-svqvT*+C<3)X_iPP?N`r;|^Oi5w}A5MK>> z#Iu^+<0o;0C^(IEdV}NL+!1$s#38Sv;WEvpBJxT-NoR7psN?-RlB+<(J#a1wT0%Uw zk`<)jSDSdyCaWPnE4%wn-j8ePg*dXC_=e*hFY}%wi7R8?pQpp+D!I5PxG*Je@AK!R zsELPO-a9n!&MlaHk!+28X~e-BIiqZaNkXcacyH507~+r5?g5d{Ak)mdP!@b6@~1gY z5d0`Qaw-#&QRkBDg7(@rAwG1sK?~Fa8NvUx;ChnO>P5J&*KD26g!yZw z!bQ*QH@N6Ws=;3daCq6|Wvv(r@1as~(_89;+3ph1S^qM8ye?U-YU0FC@VLk`*A|)0 zv4!AM+N=aP%u#N8&Z07R*Unmbn86*nD|MKnaXJR-1pt?x|1 zEg`SOe0!7{qqd}E!GEDz*N=BK;dFJ)s}1p>OuCL?kp0q&-AgW!j?~QI_xHWhi#|O< zN;mCZAH#|NKQHkOH(&7z{xU!-@e}dy;{D=_;?v^e;+^7+_TBs;`k@3U0ZM=ppaduZ zN`Mle1SkPYfD)htD1rYG0;(y)$wx%WLKB=@v19oyPqHs+6u;$8wqk^R9%L(8*y8uK z6t?(ty~zJ=QXw(_vxOi3{J*bwvzz!aS^NJgz92p&J|;dO=EyGkp#&%aN`Mle1SkPY zfD)htC;>`<5}*Vqf&V=Mex9P5B2Oua&+F;!DGCsIx(i<(?!KO)>LPckd0-{SR-aIB z$Cie%r*(I)oB+XZQdU^T=h}`)L0`B7bd~KBE{=cyCzgIO{G9^F>Py&W?mlTYvd3wck;EcxtEB1jjzE!|1T2%;YR+^4<$ee zPy&c^TbB*KCxfB)ZIRNJj`U-E~3N(pRF zbq{cpi;Bfr8w2X?t`;GUP)MZYUn~<5(K1reQWoQ0$Ri{nD~#5bEn4VUy}BshTKXNK zm+Q4swOSGx9ix*(Dx@+=Y?NFfQAa5hn&=o=tS(X$DO1R_QChVmCPFTiL`FuD!wOBT zM5m3_$ReezS|iiI_bT{yazj*TOHoefK0`V8w+5=m)t_^z&kmrhIs0te+aFWjxLZm2$?(A4U+tL;0}bEpimF`9ZGsH$#I?S#rQ{4+ zae64;oW2Mj-+l^D*^mdu+8X$**(3-^4@4KPm$dx($XihR<_hRLq8i-!ybH8apF=ei zaWH4222be{3(IdAq4t8k@P5n;h)M|IdUJJbCqEwni`{0R+zmfFjTwcw}g)wuWOdaCTw$)GaaFh3@!j+ptVd>`s@V2ANxr>cXqHcqKMQgUcjfX@mfQYnZ z_)++zJ(?SO`1IBhrQE+OY%yQL6MugWwgn6DK;I8g<%dJyNWzj`+@U@&seU@{r2Y+e zYTS_Pd#xDVUOde9R`pi4KfcUE(!gcl_j_yf@Q)U|_wQ_hIu8009V%YO9SO)*uHJAI zXMWub{DX^Zy^buw)jw#*?Y|eyU0PmgF*2D4#Kf?L@6S%sQyp$WOkAbZpiEPJ?F5>FvE`k=8 z2xL1bhDmKNbF+&AA?W_6&^D+kga>U!s#$Ykz)u(O>b-xUV^6%e=Hb;LXyS3)c3LXz z@7EjucBrv(aos7PRJ4W}S61S09{hrO^_;k4_`KTO6y*V~b@D_GMFwzB4vj=tqFSO$ zTZl{Vc3UCqW-glXR0<=vO@+GB=kW2S!CZ%dVK69aFS1#-+B_D00JoRPxqbtW*xp)D zsPw%29#`p?v-rfg-rV`x*Wz}3*$tho{2N|pm<(^X-lwc`<0Ed=peQ`dV?FF>G7sr~ zY0UL*(i9#w8Kv~pP6fB~25z}eJiPt88+=qJ7*5w4gd%nm*Y3Z3g{BPq6Xtol!_T9O zVDYJ8yV`$#5MS)O6xx68i^kmx<4$Ggp{5x(k-km@*OYxvHS~iZ2>)Xju!%9~$gNs% zXVnHYZSQ#8N^<}&yb%a84+Z+{kJS)#IUeTs?2E3nOyS!2er99xPT=L%MeyFXU2&T| zCZfRg7QB4&N>J{)jz<)hz>u(IobSk4`13K}!e_;G;g1dbVDsS#aBah{_=KzghOJ!; zP2Tl^R&~cin@Be})feL~?Y`og46lyU&#i(#9~FRnb$eKGCJHNlXp9zqbp+g^gCJzdKR8Wqc&v|wqhn~3~w2ivC9DQ`lAK!Q;-aT&lcJ%T6&B`g}TloHx z5wPNJ5*qzc71U;1U3~J;r*OHRKXGIK9d0yj1xk>(q2zff=+w_*SmeJGyH)!I)i}4_ zHg18K)9k4PHJ^%7D4(SRiJC%Y;L=GsPdN~7i^V29)PMFG*Io#Hnd{u7IZQB5MIA^Eo`3^jkinR z;tJR7N1q()2=jFZcD7mGfNL|okxgH(J$G!e5A6NqHp-HK?YeIwG#ECSi#xmx*Sk;` z9Wi9!Zui|)6LuR^13EuOwr=-PrS|>s^{h3(^$vuVq;{1f#P2IiFS2ZJEcH;ZYlhaP!X21-4KO z&+in*O{(4l={NI%pR>Li@Rhvz&;k)7Rb zvj{q6>oHhBWn&j~})&eveSLW-K@WWrl)W%RJ|Q#||GO?+a= zMQj|Twk5tNmuui^hbw4`ti>Mb_KwQp?cr#(zo%+q(HcB>>Tuj!S{c5$S{b$kEJsJa@W7YN z-SGE|cA+f`XW^k=d7`zOYvY{(si<(d4hM=lb00m`z=x)9Z1=xj#C`I(t?gFfyWCyF zX*7I9XH~BsrYP?W-G=>#YQQZ4xE+Q;s87m4w6(@6+;QYLcz&aE=z)(Bba8TM{Ksgn z+p+Ai39t^h>K zdvSA@CqclGvvDY4B5J^}%6rLkVSdU~)XZZRI`VJ{s{Ut3E;w)sN_p@D-Z5bZ@(%NZ zknBLXw`e>1rP+1m1>YOW$Yx)0kAmW{e@+Qh{zR{wEm{LrV>|EiUbd90dn^?lvm8Jf zs*QNW2_My=X0^EX12&>5+oUL4D@Mb8XLCi3%@5;PYQc!!&?aKKyhf*2qbSgd=OX>*uP$_J#=% zS8XHe*}@N^e%KE^=QLO4-yCUc|G`Dot>NJi(sUq7KD8cB#kaRL)T(gA@B^qv1_$jA z_@iIHoQS$rx@$Z8iIv-2Bu01o6{9cxO2W}U$P|ps3!u`YZ;KDkHo7?EKI8_@9F5L4g8XEK&pzL6X?y>}(s4-Fb z?fX~p!G%^>J#aafIe8-v@)(9bc{UDx&~zDkn)eWeq#s4U)*Pvf{%9nOYVa=C>zo`u zeLNa%2x*RPFI^S)hw(Zdo$3ZFgJU4r{5DQ~k^oz3{<>@C$C!I~Tm@^S6VU#j!}0j1 zPhd}+IQCMf7%&c54|O}P#y@y(Lh9O;RJ+G^f!ob)qOriW_U zCm*42!zXiDl>+dV<6WTsvc522tQpnQF2@u68gc6MA5n1Ibl9GB4sZFR zo-$yGH#g$L^)PV8hpb;qSB~S>&Mdb5wl+rT zzkL+kmiEED#&(B~k2JQ4Dh~l>*{ogKYO_F@TmvP1JQ-H>tD)>v#ZUFqxnxxG;4J8y zPQ^35#j2UzGj}J8HsHEjN^k&fgFI$*hHp2FN5_}xI9x>vl^gE2`ReZCnw=Y{x;J)1 z7cqyoep3l@KkbbNxW{opS5mkkiQ93__}aTirDwzQT90u4wu7kp;8n^I=Q_bYvbt#W z5qV|1bYU@T=zq(?LKiKS#opHS?&`NyVb42&Y;z@Ub^*dc2Rm_BjZ`9bjeuW$5VnySCKa_T11fm*FK-PNA&*?|`-X ze5kh9gFCRJghMyFLGPnupi%el(LJUcgms#P9!wkot!I9K?s_aiCy$MQ`^OIgS8W`0 zZ!(?V z_GPf@*?`kHB;*Iw;?i3vP#?gJA+de3+f+fpv#N88laJ#yJ`+&;8k5mazmCG2KB)xC z)6+rQVw3Xs&H=l3J@B$szBLq|lJ4d<)(DR?-*}%){^o;6$yi&Raij6cx>?-%;cnd2 zR0Z5r-nZ>-mVe1_Z?NiwKK?Oo6Xg_bP(SgyIA?a!;4Glu#1z`{M{Bmd=jj?I}l%+8Uum* z0${pF5I(k|d!ex&^yohQ|ziNDYuTt~FdbeG^@)6|#H0;x{~R24Z@8R2f=O`cV)xqhAKJfYT61bDp1d2~8xSzX@;ToiOyq=eD0IE>h~6|>*~|o zfOe6vK~kGjoRr{AtIon~Q$wuYIC{@$#g}kD`w^_~_9-MpjpPFNHc(ApI~a}lqAz@L z*Ozm<_ANG#@Q2MLv{-dCg*&zlh%E33P3a1PF49;&1<-&h`pQ}}6B4{g}BcZAm<1v>upjE};ICGs^G0zXx3LXRmlO_PClPUhN9j_xceZ`(hm2xgVjN{#jox+)@LA5BtJ9 zKkvqeERAeuA{N8B+~u}UPYvV_KA(@T|8f#PtG*Mo{bnNX`X9#@7bauT(gV;ZrVTXz zVlo!DLZ#p0g0cZ)?3^y?a!d9Vw34$cDaV@J3a zXTHa)e7A64T#!NQ!0}L7-U^{dcj9`I5Sx!4ueBNKEr1mrH*r%k9^&y|J^>%^5cncw zIb3u97OJe6c$Kk2$I%qK{feQ;RMx&qi<|@~%hJy8-IaF|s zyY@@i?w`hw$0gTCbJy>a>qN^MpmlSV+_WdZ+T^LjVcGtN%7z2p!L4prL82Q&V8jHB z?ytLrZWa83({2ohTjme2Ckcmm>TMZZnYlZklHV_UJcg155P3KOhje;8q?-1R;0AJ76z|!^; zApJlUZsWrv;J>LBH$J>KjGvni+=33!+w;7#>x|X5)4xP=dHY9keNX(3!qd&LY{_qU z{)~^|!|zscGk5=p8`Sw2udOi;7xi0ZTYK%E>W@)!P(2_a1lxa&zu#M5^?1}~68_=lvjGPFIu+*6?u^zgyAAXFXW1ef z&cOR_d&R85Yq;N;Vwn5M38*>03YY(FxN_R$eQ2rMTdK4r=^zz*sS=U{(6{$az&l^g zMR_Y4bD!?swY%P@ie00=sms+M>#?ZYg|K`FhQ=jvc;3uV`0$nmf6y!pS}xoK6Q6kD zwppR78_Uk&gGbNc=2LsZvUP4SqUj|#J9`yAX=(#05A?9WYZ^52o(E^T*5xkL-ii<1 z9E@_$MD0Ad7P=$I@l3e1FD%eE9JlVs)`@Y zRK6emE;qX4PzZ_a!;M}W3kyCQ&Gqkl-}Y1Uca*<-*N4K}&G4|2L$Kbh4wAGD=0=x=!L-q$dxgXk}M1T71N9geee7s$<>gMe|+@)_YDkzzxoPK43E%kCF_Rgur z`3-u8{*Zg%dX~2MLyus1C+-kB6Jv?pSKSAGKUp2!e(wN|=azwfV1GFO(K@I<(F+Z0 za60bpXFDNd?|2xW`4naDVd0O+#;9cIJzKRKCjqr6#=#@RduES*id45daVsBOgRds6 z!J&t%aaEcRfr5Ff&|H%@OuN<^hvNjib3;FfYG&kq2)d0r)&CkVF#m?H_*KQ*^VW0O zxy#VK-Xpo%3%=#fl#Jl+Z9Tv(Sb6~+o%S>IZJLG`8^XDD4|>6pylGtJua@GHDn8Ks z+~+vhW0Z2+SM{Lk@zHQ)(`od6!_T-!gJQ6D$1|=l;5zDl_ab~*`wR-|JPo0SW4WV4 z<=ltcRZ8xoI0*dYQxXa{4)D?)oOn_d81~0RbpA#cn7*+Imo4vQD_*qI=FLt9{8JRS zM)3~kcc(7I9_|x2(Q^W<{dOT3FV5w%$60W8ybc~U_EUWkI@#8xyA8f$YH&xpH3r|z zU{Iu=;^Hn!xUi!o+@ue3(f7+2bF!OVRpZyx!WqUi7&7NH@@##I(|z3|uEUMGu;;BM z$~zz4RZi%51ts`|%&MYpI5%Vq4LI(WpvC6)YbwX?ZDWBsXQ8 zhw6rxwAIxh8S06T;(BLVfuvJCIQd%_NLh!t{Tt8YHRqPVS`x1L&l(5dc|8U9t#%Bz zZ|}QY&EHm{kA26&Sp9Y|O%CQB)~*iKV$yJ<)GH8kZ4>^$Z2{z-i{h%D-i{t8ZG_1w z%b>3MHeUDMA((XH9(pn_3aVx&LEDpWLCxYPWZhdsb$v9sUORJXT&!o+Ru`s@gOKID zm3i(Ss&`v;gh^-TpqNEsuFvP0(7w|1xb1^xDSJE}#9dBUiV14cjm-I(a?xASg z_QONa=R<=*Z_Yry`}_#g-;O|GN7tiB{{Xn*U5m>K9f#_zUdBBrNyInFG=6^v|6K*& z%3(^4DcskZ54hrm+u>ev34VNeExO+BW61S?jMFds!}Ob7VEx9$7$-NhC@@jfySO+$Bw4~N0xDc~>nguR*5?1;;eygaCYWwuTaA0jTvGKW;&R3T-g*hmjxNOK>aON| z+HL0Mb~&$1Towv<&XM~wzy7{U|Kl2nz2BI->U#$=Qg6Y-ZMDFA`WA>UnuRAtKS6Un z{BUN-5>7Pv3Ix=e1d9euWq#{tF88EYftOAjN{U_j<(C_?|W_)NqW_p&+q^7 z|Nl>6?1Fml-Fxo2XTRs2lkzL;I~yOdPA=S{oxD^f<+Y4Oy!SF`o+(3HH}Xko?o}=F zldsH@zMT8`&BsoCQTneRcT2-vZBL!Oa!3jdKO||-9g>pWi=_p5Pc{4|FVXg;^-tc~ z{_%g%e)oxYX?|r)ibxBjhnhYc=}-AVWZnyj($AL|v|;r(*4>?g?U${4tnc~v`?Qxn z-)x=m8m#Mn^qI)YX1&&P=nP_WxwnGGMCsv2ejb_qkB6kp?jJ|)?R!k>dF%()m;O<- zwSMTDbfD`oZQ$AWThHxIjfC%0q;FNe*ZSnws-zzkd{0XFk6+yk|L9MV@Bf#)YTcG? zt9RGdoXC%MbI-50n?8abol6e7x&~e7 zw1{4fj*`+7Xw~QSSsd22=zCY`au1i3u5xyjI4XP%wT{|SkHa_UajlBpjD*BwR-f~N;$KB_! z9?Yk|4(1=i7oB#WonJgu{Kku&ZqUdV0Zhgsn6NbOMN8YVmu3hRa{!`uH^k8OG?X!+|JGtpVd)%>Qw$Ia(UYgE2Ne` zJS?qEdtc=36%Sd<{`0%i^@qo#KfHg17h-{y8(^@+sOM zznOk3^z-Y|#K%7q*|M}l`trQ+p7FR&GvkW&D1r+_TitW+5Dz+Qcv{>>Akxa zNzZ?xT@u$Wlgh5WU;3&rB#9|H>%gxUOCR_u>|w*ZwbDnPz4?6M*CX%R^RdWdzcbms z{Eoxg?!=#IKiT{CNXFM6l73ry#X8zDsQsdMzc%^Di;Z9@0D&n|Ibp^uLF|r zOS5d1i@efMlTP}>^0V5v*Zf5KWRmgb*FUgFvb<-u^wC#7V14qNg6)AWeQ&y1a?f_y6;Xw&ML?(f<6(Zz7HV^+eDf8M_|1po18(qq0xsruO-=|E$r*5awrKJoe4kt?50)8&6=@;9=H_b;s zY~6X^Q_|IxcW7Vu@Y}Ty{-HYZ+lNj`#&>kxd}>|T_Qm2FDR+Fa^iP*dwe9^LZD)SE z_UP`z(!LL;+FpF>Y3oP!9gidiPfI`9_G@d=d-gBtjH9+dLl_DkzGi#^t_AKWW_ z=(|O>pY9ozp8JMh`tt9lw9yl1w1iIO);m^ZXdm-!k?xD6Yqt(OE1ko6OjG?_?I+(E z(mV$r)Y45?BUjsgAT2jP5;^dzIks=#8kWBE)lX=}8z!X3|NI-PuNZ#7k6R^aY1Pfj zulzy!Mb)TOnD{5DbNh#He&{s}*YB)ZV_Y z&vxuTOwt4Ao{~Q6+NkLtUt={kA);gRS>N@Gg^|CU8_~4Hk3>!%8Iituz2?@IFPB++ z8XwmlKI50J7iDSBul})h^t)e_4*uIw?fu=~)3#mPCS7{=R}KI6zz4N;pZk+F5*U+q z?*9+#2hG*C)Wwf#_a6Qa>pi(clG_l`mX17O^^YEpeDNPYBsu@fsLh-g(7s#xazo8? zZk*?qSlb65kLa=u+ROj`@7CqJX4}Lak4P69FGvgO3N-uIossWlBuWFiw?Fm!-&RD1 zZj?yJSI^SQn$1#Mr&#~9|9nzAc|m=8VC0=oom`>2c~L5oJ`=jAU7od6`{b!lMmj?u zjLd)eK}m0)w0>iJQv2NQ3eXF{88!oouk?~ z`+#&^dQNKp_7dq^E&rmuck;*9P~w>O#Glt|-~GZZYx%S3(z8ip(tR(!?bh1IDy5MZ z-`mi7WU2JtZ}dEM?WO%%YU9_WW4*0fM$-Ps*EY|veXVh}COp@mxmGXHCXA=0yfcfW zkN)#4+sW1Eq@$}Ut(`ylfmC{7So-L*ztH~hrRN*oX@5$4=7FU)Pnq0sx?oWHRQO!v z*PketeiXVc6)PXpzP2;0ZU5MRMxK9oN*b8EEpp#|PTNaAJzyQ*8; zGrzaKvgzZ}zT{NtGvX{;!EY}{KKG~fx1LOSQ8Fb;wx@4?u72sie^q+&YKFC?V@&$= zw_mw=wOl*&gNxF(qZ_4nT9TzF$1Z5) z4Ih{Ce>@c_(!I@^K3pYzbjy?4qq6bV(|?g~UjA8dB!`A1PY?2=S!+!1ShyGJ~r0v@89Rc+p@DUlIKX5b~`N6GoODz`@=OMQt;E?NA|dyq(3w+mVWVQwk`MT z>dgg*X5q-}$;hUu=OUl|%Fnf?F3lR+^{Dhf_xR1Cz@(J!JS~0ZrL)>A=Wj(eeDF)s zjMEP7GaGuOV>6aY9mgKk9(%f1+p>I2`!9WiR+;&@^yNjDtUsKwNozcn)NuJ%&oq4X z%T>0uPk*{${)X>F&izw{ZOci$cKvE|gE4qjdOO=BRemP<=F@AgOYh9jvnGFeIC5go zi`ML|UyQu`=o1a|o!_$_ee@;ig`TIiEobK1o_24k>qBg@;5%yM#Yu~`^c&++*PlXK z?%URA=||?#3Y9=~Ts|+Vh(~qWwPoBhqg!jotiB z+b!#+1s~S*AN#oU?uxAu=qYQ1o)(;3q7sUs2lpFS-Wl^&Gt-I4;I^sCaP7rz%d z@zpC*|JU!A%9_TdjNF^jikJ6FSD(>Y>wY!YHt)%Qv}P4QA-!DsOhalyitV8);pv5L z^R2I+IU-H2f7bf&`zECyz49)}_{gWFLeOZ^Q>(Qb?srQ!%Qsm~OEYgxJeg@N%U_Pz z-}6%OHm1!!^>*u4C9M7U=ZdyR^+ftEU$M46k#wu!^?MvAGTO6cX?5FZg6&4O6YQhrO)p5ajSl}v)^H9u+&yp zSC^s(Id`(|JaFeXz_t#3%`J{T2l-v-cklG|+}&|K+Ae*1DN#^v-)u$m_&0OdilhD- zJeWJP!Ev+1JU2%lxo*=Vy$WA687*lc?m2nVf{(i$no{y%d`{P(r$$^YH$8UApt60-Y{QMSozm8?^p7GS{(fgXO?)o$KYs^=FizDj)(ItNVpPHV4 zfAOC<2I3fqV<3)!I0oVvh+`m*fj9=@7>Hvaj)DJ07%9%;OOI$LKlXt2m99$L7mUBx=6+Ju zUdcSHbuG-XJ-;EGNQUe1%2KL2@ZzIoHr$H#i4Ps~0o zy|m*K(x;G{cUE^sTDP~+TBCkC^2%_jbn=l$wLedOUfYyDQvz9+6KPjkn)=*chh?o} zXg8vlUQ7GPU4c%7XZ9f)6-!m{xR7d5;vS&%5PM&#sjkwp+T!g;&V{9Y(C0(W$gmT? z+Xn_5cF*)1Jx9bBw2j+c097x-s`Y<2XW_!dk~>18q`H|A;gHqH}M=B%f_|MQjE?!;OKC6IXie@)G}cAAveb5t+Z_H znqEXlkKNVn@Y0aj^yxdw`4lk#`|TqZm&4I%85}?^3*rCONWDA2-0$#uk%x09IQuuG z=j2-mQp9ijKqM5weIsOaI=$2Qh-UcMvEj}>M{MPHutt>Q^VvIk0I<&;CDcKWhvM}E zfb8zI$F>No2LLYnkh2?+WN$g&bdW7yGlqCIMcvsi%O22#*9U6nG#OucL6G_sH2y! zr*&uZ>a|;&EBiYSmE8Wd)Y1iXR9dK$NBk#_fj9=@7>Hvaj)6D^;uwfyAdZ1J2I3g_ zYZypL`(=Wd_N9chAJcyl(tert++TYnem#zXI0oVvh+`m*fj9=@7>Hvaj)6D^;uwfy zAdZ1J2L7HH$TsN`mJ`KonQdXM-rNq|ZH~ScgwFLlisuFn5|LcDeD1>%JaAbO<`s%E0sWI-v){ zdv$_G&<9TI1h1eEEh0ema;7Mj;2G5*idA+&)B}`dxVlOdTj|jO{>u%*ls5!+ z>4ZT+zYhyoj@?Gpl^-pJb9~57{U6wu`XN=H4*%&{$kluClBg`J|Ug;H?y)# z#Z1p-%J*b!Z&}Ao@=kg_cgNmUYF-VS!}@3S)Qe)L12g8awK~Cxq5Anufj&`mxP(Oc za8DF437Es>v2?m@+`1uv-2|@WUQz4@pz9ZjVh zzL8-8E@6Isi>;2;Zm(l=YTM*4L~+0_q$>I9 z%tF>iOGq4$cZi~gu!y-FLh7Nts!LgPfH0M=w6INkH!I6U(c1x{oX-k(?~rHGZHa8o zF-|n<<|y8fDP@vsA^|1rqXLT}N1rC=R+nTLLE@wji*Z z6YOYAGxi#ou}&=}y5|J-RDJ&{bKg1QEnp z1(}E+`+y+M04KQw5v+h!8c2R=ui;{cUYs3%DV;Ka=M~e1l%%8jD&881RuP=8m%DrrqsyBiZoo%@ z4N47X)=*9ko53s`Rp!7Zwx6|%VlSw~e-I+16!U=w`-IGr9F{EaRx20=a1o7w&O5RB zOSlN`2AOQ&yA?2TYVm{a2L^=nM77Ay4#-d+9snyF30R|AsTR}ZdOxHYBv-&eHxOkg zg;Cm-F*^1vl*~30F{CfX?16F_bm_*N2f4@t=>=;G*?RCYe%-&9Z3RILfg!`&!K=VY z@Q9#88XBg75+EXzaj%_ZE@W&UrdL6HZp^B#(L;2iFn6>HZRVFDqcXfle?~uo$ScKmr|YmPgn&s1K+X0I0aQ zbWUZiX4VkZFh*s6pbpSrNEs3j>P>DqA?K35fixtBgP>IfY@-M0@LQsCG=?llL@*3X zQSQMyJi`2)dsnf{9N8PwP*K^oU(g{Z3J~+LjDcDO^MEA63n3Pv6N3XXWNaz$HU^`i zeu*GLN**e~pWrGxAps)HflXw<4K{J}B6dnAltWC2IsqoaXerGj4iUW><#}u^aL@r< z?T_gveF&@Whuj}Moq~k|{Q+o7P;y{4whg;8x?a#BPffXjAJakjM;U<5r{4wf;xtG(QG3a7LU~QCeAShZcWW~}twm~ij@em_JXTjJBE-&P=%WnfaTLjZ^;2y#zh$IX# zh5LfrNoSkYqim_ND5_-Kd}w8jiaQ2{)WgKbN^~?AQ;#hh{M;o_5yDamMCj^T2n3jU-9|UKmES0|XGt zC36@o5njrd7=p3})`OcMdI6T44UvJ{)zz`>!XgJT!G=YG4q2qQaXsHSKh!mbTgnRW z7&z5r-|V-4JaO)7u?2906n-K2E)SA@aq_M z3oMI0bps?cB%^GEFT`%TJq7|hV=Cs%XZLBj&HL%m% zE+L~LXKSOpIe88~kC501A=CVr9Kr^5ae>n+o;<#n%I^`7KR=pqQ8q5>D zf_X5rJ~&U%^>I@OWJi(=V}b}nYdH0(t$a_zB%%S7njV!b%&MPdFc=aIGgFOsehf+Y z&R{ecjRq4wlg&x^#z_A+r=(@zEBuCkMqJ5EGMNk}{9#HmC8Zc~L#mM;PQsT9(_u5= z6W8cFKE5d_*^rT(WQ0hdA!wpxOu{EfHYVdMLz0Q^HsN-9Jc;Zsd`TbtD#1nfo6KgT zG0g~Q45@Sh|-*ld{F)Wl5)XHmcZg=M zms%+8nNr-N>Ga4_?;k)h4>#UD7_fVJdUl7?gW4p#>HA(7>w9@64dlU316u4wbr#Q%vjfx7ynxM#^lwUVrj`0goHA z;N=b437({H8FqVkX-cX`bNdAfYy?g2>b#x(KK=SZG+%yi&qx&g^d5?(`54+OB6EH( zz2-6KB^aacRbZIa8!cT9JIdlG&XjBr1C--BSxX03iw>j?Y zHZaaBhuYiSc;Dhx^+PN1u8D`X8_)>?;=B-h*`d#g*F~r{OTEd|*4Acv!x}Ig zk#Aa}w9>NQJ&0qZ5M4+)jOFQ0UA>4aWss~~xf4954yN|z772^>8VpYBgzIziNgLWi8_6kxye+LO( ze3N@%gcA+O)(N4~;YJ0ZE|0t40{8oMMShQX;e)@?*QF*z0JfuC4PGsxx0kS%7y(e} z91bT|4I$f1g21$lVEUiF|HWlP?5!dG<`>nmipk5nHd;pf%wLERygX)f{7HgKWRb(hF&PKlu&QL`~04zXkR;p#0Sm5o8A` z$xVXkH_-asoz5<3K`3Foya)8g%0t`xNZdn##&kB_@J9NWmbsVS3gn`S6hpL1S=S)R zZwsLoZxceyOuwRLGp+VwQy`C^5@RccWaLG|fG&=t+pmwk!TxfTy!FaojbFTGIM_$E z+oE&O6a?m7Z;r(@m#51P#TR>nt{f$#5zdUhBuDBX_9i2qzAZpI-2G5-&UPoqRa7;C z_sBTmI+t4_G2?_2dsO^%y768ky#R-IAi)kc(_6f1R!&Ng z#$68-Ako8Z3lOiY!n`EmaN87gV1ba%cU4?D>ZSY*-uE|BTc{B8XLmRuT=C~idT0+ zHv^BB*bvi07Gn%jmV@3NVtPW$tDqR53vRr)3==js>l;7;4Z4k9|FmNuY{X6~3yF%4 zdUCGfKXDBFzZe5_{;xCTCZv7eREv-JPaFer48$=I$3PqdaSX&U5XZp(S`5t58HAh# zSiTr-HFmq~%viZ-Oj>+t1uk{;AUJ8SpDrSgTIN*<+*NT`kN@}Zio5@)uG-kLYxn9c zTUPJhxUB`nY>-`4i&P|pSb0&MX!)DIGo zKt=mV1$`pk>GgT&FoIlY8pZ4I@mR}Xv}f4s2ZiV7?u)wPuL2}ixCc%w_wHg3BII@_ zjQhr+U~)^Nz0ck}5)7~NO(MY-1W=;>`2dg2{@)4;Bl+u1gTkg2xCp;L78534m}($7 zeI}%Y{m-Mr@#R|EeUIQ{4E{!=^y zO2-B;bWvzKUVpw7?QQwCX1!5Ze6t(3ivMjbbX%1{|E#Ek{&~GlFqsy%#=^Sw6yrTq z(&O_Dc-1JS-Bs=O&TdCl?A8k0S<&7%=&1A#b(dm@d!lC>f92`e zT@_0zt1GK3x)I%VMF%jUwju?%rwS zaC>}ql+dH2Z8`zoL)GeH`j-?Y#lt&z6t^>aoI^T`pYHS4p_Etf`Y7?;0cfOP&>>3~ z5=ShKE|e^EI$Ryo=>vBk_tPmC5B6imc#aAJ;CCI>#B)@l)iC*~a6CsPo}+SC=1)9F zC7z=~HHz=b7=fn30bM*tC7MDO&r!LZGaAoPiRY+H$CKhYDwJFr&rxamUy!51-~Tst zCg5NECys$Q2I3fqV<3)!I0oVvh+`m*f&VKQ7|TJ~s7ov2*#XfP#p2lk@!nza-eG9| zh1W*oy~EHT?(dl$5Uv0B#e@X>`~UjS+m?v>gqz)eUC+eN|MA*r{QRG1*-gJDiudJS z^Nw%4Mn$|v1@F)puTc@NQ4u{bz3UD8X}LjJPp_99(blwgWmUxr8pLZe9oO3mxbz2G(Tc#R6A=*MeR+^PEzuTc@NQ4y{27Ozp^_}gn# zaQ|OFD*^xB`X}vQ-uim{Y8(S`4E+BA1D74V)dyl}A8tuVFuh-2-A9$kLp!N1tg#H` z%~2H=MQ@dQ{}!q@Ym{>p6cNrxWm?p5~s}G@$IF$A9ZP|crOZCqXc%)iDJO0hdYLH z*7bsjy2q%BJBD)nSen>Q>(WyL3(OGI)2hshm=o;5&8UMbqbf007DBaQDpDLmrDzmM z4xu>kaa7v97XV}0(ba;^Ma7x}TNIQhN0nwXyEob)qgxPB7aY}gl^s;-8><@y^cazC zqmeS$NmLPbR;wthO;wHyM6np-2T*;#vR@FZupC+k3S^^Pes~*79;49jC`vY?;imo@!LLLeHfz$GO;WaFb?*!Azo-%)nk5?10P+2ddDUdxjv?dRF>F+x#yu$@p2R@ zjuye*$SePv{O-*PiY@n|o^KHSSX?N6?00R(LQ!VgpTLZ$QjbkAvzf|iC7Y^f8-oWF z^hp3U1Xt1uO|pa<@w7VgB2+vMt>KlM6GOEqh)orYQ4Si5P*6@9Wte5u9tYS;1*%PB zA7l^-70LIb*8$#370d_s%JT!LISg`Cs{9}TY;&S~62++xR|_I)iKD;6ETDsmCHG+I zz-#~&-MdlxU!H?i;O}4_Cp@EiKtauRfXPrw89hbhMh+%OOfF?0oPL@gwfs>jnTjm~ zxKR{CMv?N=W;7YNCxGp%6vRrt2o==f1qRbu6$bHRNkkPWz3rxQ&vS|T(%C9EvmT>4 zaZN>;`T?L+Mty0_6Ds8(u-1*ilYDV%QlO0!tGtibGB4Vev^tyGxzsclGE@HIinLaY zT7k6>fvAZHP=Oh>%~c{VEYc4wd#eO}3fK+Xue1`=@O~Qxs&8%d3k)D*P3mA29$X$Q z#`j&yaI~;9ikqWNf#^lE5x^M$iO}6Gf)1}H1MZ!mYka|GaB$f|DkhD(@_Kd*d(tk5 zr=p!DP#xS3+=pv8R7wHeofxb^1BFiPeGsEN>>$E&swmGzM-YY2T_C4}$`WcW18$-& zG48{HJ_Ad^%FJoN96C*49q8hsE}m}OKs3}y#3O=PykI`Io9e(*acn=P1&IclqlNLo zeX1#dD(ysBGCB@;Ottt06}K&DB%mhpdj28EHFS{KyVpOXhHBJz2#MPRU?CJR5A_i) zGMPi(!geaz3^EUbZPdmEM0hI)It)-y;+thD%jE;CoR)2t7qMb0YERt+P#L?zj@=su z<=Tl>z*;Dyo*{S2I}^*3)Ppp8;^+x%QWxaNf><5;a79#RaEXY@)6tUmS@%*o`bxQ@ zje18ofo~PSps$60;dJ$I7mCQMI!+sj!4*Ki8z9U599BPMH>&HaSk{mrdUy$XeHbu< z5&fuxPVDV(VvA^p+(O>&yZSbq29FJ*{&%!3OuDjdx{nT_HjpRiP_z>}v4?g7Z4vaL zLRyzey;q%!J!uDFb}2eezY5q1D`gqfaR^cpYy$G~M`dJq6Jb+4#z{4}g`?1q{tx-Y zL5rgtv>{q^T$#ta8kmEv>@-6Sd+KHq1aYIyi9QviL%kxDL?FEzCGfMU1U?!HgrKN8 zJiyn2X?$TX%*sJ!SOx%)xH5pkF42J0Cnp>gRspQW4ZLnC0oF;kwLofstX16RDh2{D zth*1A#l|IzN66dr8r%(FupoAWtFb07NLBvtrXB2_Ajk}D4noE9 za=vQ}^g7rtq_#y{5kz;gP0;y(aeZh%ms@@SxDx9{rw_uuj3GeN0b?T@Ank*`1ZtBE z)&x-p&@O<~QW^D}!is~C4a$q^-1!epT!2nUD(mg`8m9Y^pP=G!4`Am*0X{;odmLT z*VVkHR}%D3mkP;>s`O?yS2?7JgqMu+>ALwG5pp}%kZLYBA7m;IZIRpq%6)IFv}k0vc!5G*2p*}Hs7(C$>@^-z3+Pr{s zl-n8l(E~AcaD?DA9iZv>#;UNPhU`GcC>V+wsi>V%4nS)P04Vx6?!r6pIO%D-pc|%M z0s&AhafTn3AC?~$a5pWFOLL>TjiGT>(%8AGPk2P}`ph_oK!=)$=zP z6X|OO~#a@Bts%~5ulC(cq}E69-*50 zm?VckOFaUp0zXYex8O_E^yjtt&BjC%8Vu0aW}_huBc@RO|1^3cDIJ3oRH)Q%o`t3X z$>>>NNCJrXhcQs;ACsn1cK}}7KY13F{s(MW7ru-3M~KdxY%-Y*Nd-p0kG=%BoWlDV z;C`AJ|C`1i&?58e}^&VO(RZdIf6--x~% z1vy3ib@XbncZ&J}=s1t4pU5RX$JdYmK2bjo%fs0x>MxcKxGAAu! zYOphqzm8f8mWlea8$tbIx>_V}2y;)zjS<~6X%_Q@>(Jv(UB_ktFHW(Vx#i{ZhU3b5 zmY?IUTgOVavIA@ubxGp72H7b!~mp}n0l#JZI%}T!!EHwPL!7h$`7%+HEjL> zOJ|j9SQ4|@O66L4Z91g4TTBnM1p57n0SKW14ADlgo6iZVF1UxZyJ(dAui#6kn0hY9 z$BxJllRk@>?ym}sD9s_5T~2Yna#}XYxnnMQt$eS%4)z2vH#T!zqTMvBr{&BkXt%+B z;N&O`FD+xeY>C8D7bwXa)e)x8QBJTt+iWJXoK;=QW_n&f2CJ7gSdj#@dBTp~4?)!- zrjHfMv;B!=<8+EfwdEq#2|Dw`HURtFYRzeC6=P4w}+9mNK~t3P#LRW~ry)HtmyZS@qea@H0R< z9+*r{JbPh;ulbUjBszpYsUkoCf$IQmZ^zW9u=y(q+|0mE+AkFtBwIi<1`eK2;@}*? zV1pf^DY(4nVhV>P40D)pcx8=1ji|)bb#l(w?6VMzKxiI2Ca(^ED#qvy}fxWt7IG5$sIBn zr&CN1rN~)oI;*A?m;*VX?eZDIQpSW=UMAZE)+Xo%Q6D@G4+E$zo@yj>&xv18o?TAB z^oeD#^SAGjv)O?)N)p-b&1i}PRQ8J*K`F5JtiY;3mtX*S_Z4W80WmeSBeZk04kn)m z^jRV|P2B4TvxA`m>%%)hyYUL3F2*h3;Ax{QugFa=&ZJ-s9A;~icu2Q-T zxki+A86kiQI7w(KSZRU;xtGWl-z)c^dzP3uX@)+<)abQ{9DAhUqc@mgvTg`54AXb(9jR3htGHOVco zjX!e|Pk}MAWX~Y$KO`@l(px#&g3CCgn8K&dl{h(P_+dZ*9oO_Ei;QgTSv{I5*}*E< zYf!yH)+w+9C))|3qm;@8Q)Y6w@yHCKG5uAn9URsJ(7`Pe;4rtCtz=Cz(l|`F0X%3P zJu{)>8xw}<(LVsea8O3~C6`4kl;;N8)+<{Z)g;-dtWfi1>>zlTVUIC^(!eJOfi5t? zIhaH}U}ytjEwiN}RB&!rR2BFj`9tB;*zNT~JRU z>S-q$gPX{^^NI~Dtz<9DV1;bIx+g}r;I^zDIE?wSg9yazZ1?Xf;4%*dmaX`kH4?BJ} zir_K$Mv%DUP1JS@D9w!SB-?whTsyXeM$}KXp(PrgnCjxdgrE|!#cDcfQGP>sjzE3V zMB~LaHk;r!LOir^O1cKwX~(W!0x=u~hd`5HlSY9QGCIyfFWbeeFk0lDE8^78H~pFp zL`lnD0W$0WHLV;!A%h)2xL2*9MyM49Eat|zV;-6&*T1X7Ki_{~WpKpJK%kgnYDZL8 zUY@7GPsS4ygIG6|XSgA|7g8BJdJ%ZX@-A+RisTC?1ZvWTIRF(TFZq8KEc+sKI03QQ zzv4V*>%^}!13BkGZeW-j8)=M8wMRv(oMi!fojW zHYT7Low#-bLK|Cuy{EZ3YPL;OfYrc0N(az{H3T8&U^(a+)D8-@6F3}uHnh?pn!YbJzxlA^l&t*`kkbl9wd>4lS0 zVutqDtRzPThfB$-r7J~17Q{JJORQFMX$62V@tSR~sOBjiDO zPkwMM>y=NG$eGcllm>H0OMnIN|Jm8(`VWid@or_7AKUB0_U{MkNh62a1@xkWXuAZU zfRQi<$QaC?!u~@h$}kWruvO!bV(lQ#OLatN#;g0t?(KlqpQ<4mwF6B(Vav2#>k#v{ zRH&P#7AR>Xw%8V0aH>*wD9Sv&uq2PZu_XzK4od@3rzMk(s*Y6x*VysyC^1l@$}RwX zKM0bvMKw(gEqDQ@aW{aw0qX_0QD7SO0&k-bdwn2-`=OOFsM19EgWLo0(n_Gh`$Xe8 ziwauatYZNE0wecJ6pxlT>G|{$@OX`@r-P5UA1te8S=ju zHpXmusZt5AfSUrd*>ZMLKEUA$tfn0;lus8b3z+$gQo2&f3T&?SLsbuoiT5W!`?|p| z{Qw(=Xy5?JZCzglSv%#))k!4G)BFKSklkYFNA<&41|_X0s>i5c>Cc^2(hV5>4hn*|WAV7Eua z41cy_9y^*N&*1{!7@l_lL;)%YSp*&0W#B$oP~K9AeQ2XY_(-LOgOE)@$c9?TY>KqP z_@9`;mw7&qbITaSJtRcX5$J;HdW1S`4~rS{96dR-+?h3^MP6ExAp>3V;O<8I`X#5p zJ5HaE-g^ZphGaCq%S4B}LioBV+{-1;o*srzji00>@~92Qv@{cW>#3Or!|bH_Dai-| zBKPdA`EGmevToP#{vi^hP1!g|JTL*fA{EsazGwDuCMMTLs-QDQCS(BUNAc;qWj_K zkV+nfxz`1LP^!6V$yAHw4Qy?2O(>1aQ2lj?P1rN~DTK0MK{0Q*u6wszO{=3odO60~ z#9K^4NS{#VD!miXu^nP+pj$rem`LM1M9u3VU$4QQg(#GJ)WZ#GJ{MQ#@BvMIxtj#8 z*)LwoBU1+Yh#ffJMJ;-v*Dt|vF9u&-gMNo@)t^g;5sptkLUDG8>HB9w8e@>FQ1|33 z-j5IhxzszRU1~h*By9^r40fYO?G6~&oS?2o*~$uwbplZ~7|t#xUOfdt0)Ci)FApnZ z?dFP;@}gPnWXtQl{sy)pYLvoYA2pHHSSGJ}wbX>8M11JNmCQF3aM0fu(`ATx7~9$B z7OL~vez{TJOc;O}tLDim{$<48iQ#SsF>)U34H;Q(RMAk3+zo+$5xB+Tr}mL}&Q|8! zZI;6Yo;(nQoj(i(RMSu6LG;mj0Wp+_l5!;>Y9(BexRldRVj{W@(Nrm#!aa_2B9~%% zQmBJuPUyJqtYLj}B|BV=XvR_27lmkdfx2TGjCYVk7)lC4?Fz!%=%@(83RaM%7)lEG zfNMJekC4o4gp`ON#}{KGolsKql?DFl(Iyh_pvN!-uuIHPhGbWpdT@LV(M2J1$Ywds zpA?4ZULI4@*71KvWSY;&&v}!jN)ZPff0BHAvu6<&|?sB&J4fedT zg$c3&4i(~Oi8top7YYnr80Hi|mBnp~>+q2VNM~S&A=KGU|KTa90PLi^fyOqfhsb$? zfsPKkIGu)BY7Xcw6sjk5LOW2#2{l{J3oP)@ToP(%C4Pc8GdAG2pRMAKMA$~d8I?q` z%i)a$_K!?G!4V6Jd2HA9ARBkv6?B3d(!jRaFf@~aEwnex)0 zA*!6C_ya!z!V6yYRFosnuZ5w6H+mTGPrmhNKZD{1+p%>bcaK>nc9;x~R2B5pfklNt zel1_HhFe0E0YHg%d-)1gP;I?O~GMZ~ReDtg8;*p``h_cmy*c>@4=3RV8=TF>J$!*dNFL!H;OH_z^Tuoh#{zKHCs;6 ze<)NHdkHk$56Rm%f)Idj+z2KCJz(I=t(*|TeYEg&d54@R7twhuoQZRgKd?E{18dGU zvU>v{O59IJL=G{1+wI6GuttX%ZZUCUCqy)CjZC>kF2l(moZ~1P))HN3Dhu!Ml|#&u z�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 literal 0 HcmV?d00001 diff --git a/SECURITY_AUDIT_Prometheus-beta.md b/SECURITY_AUDIT_Prometheus-beta.md new file mode 100644 index 0000000..bfa4730 --- /dev/null +++ b/SECURITY_AUDIT_Prometheus-beta.md @@ -0,0 +1,215 @@ +# Cursor Auto Resume: Comprehensive Security and Quality Audit Report + +I'll create a comprehensive security audit report as `SECURITY_AUDIT_Prometheus.md` with the detailed findings: + +# 🔒 Cursor Auto Resume: Security & Quality Audit Report + +## Overview +This report provides a comprehensive analysis of the `cursor-auto-resume.js` script, identifying potential security vulnerabilities, performance concerns, and code quality issues. The script, designed to automatically resume conversations in Cursor IDE, requires careful review to ensure robust and secure implementation. + +## Table of Contents +- [🚨 Security Vulnerabilities](#security-vulnerabilities) +- [🚀 Performance Concerns](#performance-concerns) +- [🧩 Code Quality Issues](#code-quality-issues) +- [🔍 Architectural Limitations](#architectural-limitations) +- [💡 Overall Recommendations](#overall-recommendations) + +## Security Vulnerabilities + +### [1] DOM Selector Injection Risk +_File: cursor-auto-resume.js, Line 14-15_ + +```javascript +const elements = document.querySelectorAll('body *'); +``` + +**Issue**: Unrestricted DOM traversal allows potential script injection by malicious content. + +**Suggested Fix**: +- Implement strict CSS selector filtering +- Use more specific element selectors +- Add input validation before DOM traversal + +```javascript +const elements = document.querySelectorAll('div.specific-class, section.rate-limit'); +``` + +### [2] Unrestricted Text-Based Detection +_File: cursor-auto-resume.js, Line 19-20_ + +```javascript +if (el.textContent.includes('stop the agent after 25 tool calls') || + el.textContent.includes('Note: we default stop')) +``` + +**Issue**: Brittle detection mechanism vulnerable to text manipulation and potential spoofing. + +**Suggested Fix**: +- Use data attributes for more reliable detection +- Implement regex with stricter matching +- Add checksum or hash-based verification + +```javascript +if (el.hasAttribute('data-rate-limit') || + /stop.*agent.*\d+ tool calls/i.test(el.textContent)) +``` + +## Performance Concerns + +### [1] Inefficient DOM Scanning +_File: cursor-auto-resume.js, Line 14_ + +```javascript +const elements = document.querySelectorAll('body *'); +``` + +**Issue**: O(n) complexity scanning entire document every second creates unnecessary computational overhead. + +**Suggested Fix**: +- Use targeted selectors +- Implement exponential backoff +- Add memoization to cache previous search results + +```javascript +const cachedElements = memoize(() => + document.querySelectorAll('div[data-rate-limit]') +); +``` + +### [2] Continuous Polling +_File: cursor-auto-resume.js, Line 37-39_ + +```javascript +setInterval(clickResumeLink, 1000); +clickResumeLink(); +``` + +**Issue**: Fixed 1-second interval creates unnecessary load and potential performance bottlenecks. + +**Suggested Fix**: +- Implement adaptive polling +- Use event-driven approach +- Add configurable interval with exponential backoff + +```javascript +const adaptiveInterval = createAdaptivePoller( + clickResumeLink, + { initialInterval: 1000, maxInterval: 5000 } +); +``` + +## Code Quality Issues + +### [1] Lack of Error Handling +_File: cursor-auto-resume.js, Entire script_ + +**Issue**: No try/catch blocks or error logging mechanisms. + +**Suggested Fix**: +- Add comprehensive error handling +- Implement logging +- Provide user-friendly error notifications + +```javascript +function safeClickResumeLink() { + try { + clickResumeLink(); + } catch (error) { + console.error('Resume link click failed:', error); + // Optional: Send error to monitoring service + } +} +``` + +### [2] Global State Management +_File: cursor-auto-resume.js, Line 5_ + +```javascript +let lastClickTime = 0; +``` + +**Issue**: Mutable global state with potential race conditions. + +**Suggested Fix**: +- Encapsulate state within a closure +- Use immutable state management +- Consider using a state machine pattern + +```javascript +const createClickTracker = () => { + let lastClickTime = 0; + return { + canClick: (cooldown = 3000) => { + const now = Date.now(); + return now - lastClickTime >= cooldown; + }, + recordClick: () => { lastClickTime = Date.now(); } + }; +}; +``` + +## Architectural Limitations + +### [1] Single Responsibility Violation +_File: cursor-auto-resume.js, `clickResumeLink()` function_ + +**Issue**: Multiple concerns (detection, clicking, rate limiting) in one function. + +**Suggested Fix**: +- Separate concerns into modular functions +- Create single-purpose utility methods +- Implement dependency injection + +```javascript +class CursorResumeManager { + constructor(detector, clicker, rateLimit) { + this.detector = detector; + this.clicker = clicker; + this.rateLimit = rateLimit; + } + + resume() { + const target = this.detector.findResumeLink(); + if (target) this.clicker.click(target); + } +} +``` + +### [2] No Configuration Support +_File: cursor-auto-resume.js, Entire script_ + +**Issue**: Hardcoded intervals, no runtime customization. + +**Suggested Fix**: +- Add configuration object +- Support runtime parameters +- Create plugin/extension architecture + +```javascript +const createResumeScript = (config = {}) => { + const { + interval = 1000, + cooldown = 3000, + detectPatterns = [] + } = config; + // Configurable implementation +}; +``` + +## Overall Recommendations + +1. Implement comprehensive input validation +2. Add robust error handling mechanisms +3. Create configurable detection strategies +4. Use semantic, targeted DOM selectors +5. Support browser compatibility checks +6. Modularize code structure +7. Add comprehensive logging +8. Consider using TypeScript for stronger typing + +## Severity Assessment +- 🟢 Low: Code Quality Issues +- 🟠 Medium: Performance Concerns +- 🔴 High: Potential Security Risks (DOM manipulation) + +**Final Note**: While the script solves a specific problem pragmatically, it requires significant refactoring to meet professional software engineering standards for reliability and security. \ No newline at end of file