From a4ae5c75df3568344c0ab261040541e6e9044b4c Mon Sep 17 00:00:00 2001 From: CGH0S7 <776459475@qq.com> Date: Sun, 16 Nov 2025 00:44:56 +0800 Subject: [PATCH] 2025-11-06 updated --- db.json | 2 +- source/_posts/Your-exclusive-email-address.md | 131 ++++++++++++++++++ source/images/resendofficial.png | Bin 0 -> 219948 bytes source/images/rusendhelp1.png | Bin 0 -> 182532 bytes source/images/rusendhelp2.png | Bin 0 -> 209631 bytes source/images/rusendhelp3.png | Bin 0 -> 168059 bytes 6 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 source/_posts/Your-exclusive-email-address.md create mode 100644 source/images/resendofficial.png create mode 100644 source/images/rusendhelp1.png create mode 100644 source/images/rusendhelp2.png create mode 100644 source/images/rusendhelp3.png diff --git a/db.json b/db.json index 58b06e3..d58ef18 100644 --- a/db.json +++ b/db.json @@ -1 +1 @@ -{"meta":{"version":1,"warehouse":"5.0.1"},"models":{"Asset":[{"_id":"source/images/1613f5602b203b38230f19699deb0219454454985.png","path":"images/1613f5602b203b38230f19699deb0219454454985.png","modified":0,"renderable":0},{"_id":"source/images/1730728153314.png","path":"images/1730728153314.png","modified":0,"renderable":0},{"_id":"source/images/20241027_222225.png","path":"images/20241027_222225.png","modified":0,"renderable":0},{"_id":"source/images/5364bba6d035326e82c53504dd53e7c2454454985.png","path":"images/5364bba6d035326e82c53504dd53e7c2454454985.png","modified":0,"renderable":0},{"_id":"source/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","path":"images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","modified":0,"renderable":0},{"_id":"source/images/Written-By-Human-Not-By-AI-Badge-white@2x.png","path":"images/Written-By-Human-Not-By-AI-Badge-white@2x.png","modified":0,"renderable":0},{"_id":"source/images/amd.webp","path":"images/amd.webp","modified":0,"renderable":0},{"_id":"source/images/archlinux-logo.png","path":"images/archlinux-logo.png","modified":0,"renderable":0},{"_id":"source/images/asc-events.png","path":"images/asc-events.png","modified":0,"renderable":0},{"_id":"source/images/asc.png","path":"images/asc.png","modified":0,"renderable":0},{"_id":"source/images/audiveris.png","path":"images/audiveris.png","modified":0,"renderable":0},{"_id":"source/images/b2054bbaf6197624d38cc2007d885fd1454454985.png","path":"images/b2054bbaf6197624d38cc2007d885fd1454454985.png","modified":0,"renderable":0},{"_id":"source/images/built_on_the_kde_platform.png","path":"images/built_on_the_kde_platform.png","modified":0,"renderable":0},{"_id":"source/images/caseclosed.png","path":"images/caseclosed.png","modified":0,"renderable":0},{"_id":"source/images/clonezilla.png","path":"images/clonezilla.png","modified":0,"renderable":0},{"_id":"source/images/lmms-import.png","path":"images/lmms-import.png","modified":0,"renderable":0},{"_id":"source/images/mhwilds4050.jpg","path":"images/mhwilds4050.jpg","modified":0,"renderable":0},{"_id":"source/images/mhwilds780M.jpg","path":"images/mhwilds780M.jpg","modified":0,"renderable":0},{"_id":"source/images/musecore-launch.png","path":"images/musecore-launch.png","modified":0,"renderable":0},{"_id":"source/images/musecore-to-midi.png","path":"images/musecore-to-midi.png","modified":0,"renderable":0},{"_id":"source/images/musecore.png","path":"images/musecore.png","modified":0,"renderable":0},{"_id":"source/images/phase1.png","path":"images/phase1.png","modified":0,"renderable":0},{"_id":"source/images/phase1_strings.png","path":"images/phase1_strings.png","modified":0,"renderable":0},{"_id":"source/images/phase_2_14.png","path":"images/phase_2_14.png","modified":0,"renderable":0},{"_id":"source/images/phase_4.png","path":"images/phase_4.png","modified":0,"renderable":0},{"_id":"source/images/searxng.png","path":"images/searxng.png","modified":0,"renderable":0},{"_id":"source/images/xb2score.png","path":"images/xb2score.png","modified":0,"renderable":0},{"_id":"source/images/zellij-helix.jpg","path":"images/zellij-helix.jpg","modified":0,"renderable":0},{"_id":"source/music/過ぎ去りし温もりの日々.mp3","path":"music/過ぎ去りし温もりの日々.mp3","modified":0,"renderable":0},{"_id":"themes/fluid/source/css/gitalk.css","path":"css/gitalk.css","modified":0,"renderable":1},{"_id":"themes/fluid/source/css/highlight-dark.styl","path":"css/highlight-dark.styl","modified":0,"renderable":1},{"_id":"themes/fluid/source/css/highlight.styl","path":"css/highlight.styl","modified":0,"renderable":1},{"_id":"themes/fluid/source/css/main.styl","path":"css/main.styl","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/avatar.png","path":"img/avatar.png","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/gensokyo.jpg","path":"img/gensokyo.jpg","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/gh0s7.jpg","path":"img/gh0s7.jpg","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/hifuu.png","path":"img/hifuu.png","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/loading.gif","path":"img/loading.gif","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/police_beian.png","path":"img/police_beian.png","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/boot.js","path":"js/boot.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/color-schema.js","path":"js/color-schema.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/events.js","path":"js/events.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/img-lazyload.js","path":"js/img-lazyload.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/leancloud.js","path":"js/leancloud.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/local-search.js","path":"js/local-search.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/plugins.js","path":"js/plugins.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/umami-view.js","path":"js/umami-view.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/utils.js","path":"js/utils.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/xml/local-search.xml","path":"xml/local-search.xml","modified":0,"renderable":1},{"_id":"source/images/krita-official.png","path":"images/krita-official.png","modified":0,"renderable":0},{"_id":"source/images/yana.jpg","path":"images/yana.jpg","modified":0,"renderable":0}],"Cache":[{"_id":"source/about/index.md","hash":"ff7cd1481f3c669a04d7c8abf8851ab0cea5b2b9","modified":1740326480093},{"_id":"source/_posts/12月16-17日工作记录.md","hash":"9f5099a65180c2659f1a1ca218d518fc64965676","modified":1740320866747},{"_id":"source/_posts/12月18日工作记录.md","hash":"28892523fcc2fadb1514645a1c59d501ceab53da","modified":1740320866748},{"_id":"source/_posts/12月19日工作记录.md","hash":"058ca01b682cd36e202189ef025d6d4bb79259fb","modified":1740320866748},{"_id":"source/_posts/12月20日工作记录.md","hash":"0d883ab20ae59540f663c5377e799463762a3b11","modified":1740320866748},{"_id":"source/_posts/12月28日进度报告.md","hash":"4cbda36dc6a2c4bc67140e443638a73aadb18fdf","modified":1740320866748},{"_id":"source/_posts/12月31日进度报告.md","hash":"bf541fdb539029c98dedf975b0c15519adcea76e","modified":1740320866748},{"_id":"source/_posts/2025-5-21.md","hash":"2e1406ca2c83a1a91e78fd3453623ba732d81ee7","modified":1747834483639},{"_id":"source/_posts/BlogUpdate.md","hash":"2c694e3895b2ea0c0cea5f45ab2ec16a868a3df7","modified":1740320866748},{"_id":"source/_posts/CGH0S7-s-Blog.md","hash":"9a5c9461aba29f2447c0f6725f5425d5a05e32f0","modified":1740320866748},{"_id":"source/_posts/GentleJena.md","hash":"df1e35a93284d0b9e2d408635cd98481077d5155","modified":1740330871930},{"_id":"source/_posts/Vocaloid调教-晴天.md","hash":"9141182f5dbfbbd840ad340b3e5271507ddd8c94","modified":1740442745940},{"_id":"source/_posts/arch-nvidia.md","hash":"4144acad32a69e88ef6d5d7d5788da6d87a75193","modified":1738495295673},{"_id":"source/_posts/archlinux-game-fix.md","hash":"a4ab5bd2ca0cf941c5166d3945bd2a2076a54f1e","modified":1741618456788},{"_id":"source/_posts/archlinux-optimization.md","hash":"51c8c12110fb08a1edd1f727ab38a1b2568b690b","modified":1741619246618},{"_id":"source/_posts/clonezilla.md","hash":"598858976961c45ebbbf523014ee792951380dd3","modified":1740319930654},{"_id":"source/_posts/loopers.md","hash":"2b63f5abcfebc672e7f90b3e83cee1b5ac1d4eff","modified":1740320866748},{"_id":"source/_posts/mhwi.md","hash":"b9a73accf93684b8cfac0201288da9b2c5376423","modified":1731333619124},{"_id":"source/_posts/nudtbomblab.md","hash":"51b4410784657675d7c11e17d16c5dc0e5d4a455","modified":1740455795270},{"_id":"source/_posts/overleaf.md","hash":"0786994f4571ac178ee40bc130e3c0d8d2d511f9","modified":1730860316685},{"_id":"source/_posts/searxng.md","hash":"90f951d3c098aa1b062131b7489a4b7afab06792","modified":1741621615535},{"_id":"source/_posts/zellij-helix.md","hash":"7eb3072b50ecdb49a20355e05fc613a4a8b7fbdf","modified":1740326024966},{"_id":"source/_posts/原来我还有个博客.md","hash":"acd7e534b31b7a0173fae880fa584c7dc03fd2cd","modified":1740457594224},{"_id":"source/_posts/梦开始的地方.md","hash":"c0bbfefdd277c8ae2786a5cd4cc05f731af11436","modified":1740457544687},{"_id":"source/images/Written-By-Human-Not-By-AI-Badge-white@2x.png","hash":"994225c6fd72521b281144bdd98fefcca53e2c7b","modified":1731333731000},{"_id":"source/images/amd.webp","hash":"cb0cfd5da0b9c10b9b22c65bba881cfde485d763","modified":1731333907000},{"_id":"source/images/archlinux-logo.png","hash":"4f6075309fadcb7f7547164cb8a99b4949f74598","modified":1731333766000},{"_id":"source/images/asc-events.png","hash":"a0b3610962062d0a322fe091bcc8f083ab13bc6e","modified":1740329910965},{"_id":"source/images/asc.png","hash":"3a33b35bff1b3f527f7a87a9d6a7d6d9a072a946","modified":1740328627284},{"_id":"source/images/built_on_the_kde_platform.png","hash":"507b6a4323b23772800006505e6c588bb515ebf5","modified":1731334007000},{"_id":"source/images/phase1_strings.png","hash":"6fb457adddc5bb32aa463b6227542076c4b501e7","modified":1740382826998},{"_id":"source/images/searxng.png","hash":"9514f2bd14ac1cafa437f3655d9382d477667094","modified":1741619983804},{"_id":"source/images/caseclosed.png","hash":"628b54b49c86a23af595a52daba9e0557b81a17a","modified":1740454957882},{"_id":"source/images/audiveris.png","hash":"52aa9df5f93559c2e47b30afbf84fc6cc6b34002","modified":1744993135289},{"_id":"source/images/musecore-to-midi.png","hash":"02ba31b29ba069dfef0e1cf26c5ccec9dc3d2289","modified":1744993436860},{"_id":"source/images/1730728153314.png","hash":"95d44ea62557a311503cab58d1dec5cafc97e07d","modified":1740320866754},{"_id":"source/images/musecore.png","hash":"9b2eba87e7c93e57f2024697d1ff4217d206e5ac","modified":1744993264700},{"_id":"source/images/xb2score.png","hash":"03efbb07a7bb7f6c7d58b98ed125cafe42074b94","modified":1744992816374},{"_id":"source/images/phase1.png","hash":"42533712403be6036231f1e3770f125858bf91d7","modified":1740385026324},{"_id":"source/images/5364bba6d035326e82c53504dd53e7c2454454985.png","hash":"11b11f23ebebbe08e8cf826b48eb37b4084796cd","modified":1729572689000},{"_id":"themes/fluid/source/css/_pages/_tag/tag.styl","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1740320867063},{"_id":"source/images/1613f5602b203b38230f19699deb0219454454985.png","hash":"3d71204d9a0731384f97ad0f90802a5c9fd96776","modified":1729572689000},{"_id":"themes/fluid/.editorconfig","hash":"33218fbd623feb43edf5f99f15965392cecc44a6","modified":1740320867050},{"_id":"themes/fluid/.eslintrc","hash":"4bc2b19ce2b8c4d242f97d4ccf2d741e68ab0097","modified":1740320867050},{"_id":"themes/fluid/.gitignore","hash":"ae3bfcb89777657c5dfb5169d91445dcb0e5ab98","modified":1740320867051},{"_id":"themes/fluid/LICENSE","hash":"26f9356fd6e84b5a88df6d9014378f41b65ba209","modified":1740320867051},{"_id":"themes/fluid/README.md","hash":"ff9b0e1fb9dba665af2f1e4a577f8cb9e840464b","modified":1740320867051},{"_id":"themes/fluid/README_en.md","hash":"365184a73af40e7365504c3077f3d80dfee1d80e","modified":1740320867051},{"_id":"themes/fluid/package.json","hash":"7746460fc2eba7439b494c46aa9b5ded81370819","modified":1740320867057},{"_id":"themes/fluid/_config.yml","hash":"60403ea6aa5e0cab9dbc7bf0d77257e4a941babc","modified":1740329151304},{"_id":"themes/fluid/languages/de.yml","hash":"58dccef1d98b472dc4e6f4693c2297b0c9c5afba","modified":1740320867052},{"_id":"themes/fluid/languages/en.yml","hash":"9c580471257f5a32bee701a059a45ea96755dcdc","modified":1740320867052},{"_id":"themes/fluid/languages/eo.yml","hash":"7c1a0c9f6186b6643b19d3980f055329bdb4efa4","modified":1740320867052},{"_id":"themes/fluid/languages/es.yml","hash":"026ddf1a49bf8ddfef6ed86ab4d6af143c1dd95f","modified":1740320867052},{"_id":"themes/fluid/languages/ja.yml","hash":"550b95d3614a64592f02666938d235e9f11e449e","modified":1740320867052},{"_id":"themes/fluid/languages/ru.yml","hash":"93818f8bf07195fb1ebffbb5210e531b0e3a6ec4","modified":1740320867052},{"_id":"themes/fluid/languages/zh-CN.yml","hash":"a60847136709bb95586a98d9d67b50390a8d2c96","modified":1740320867052},{"_id":"themes/fluid/languages/zh-HK.yml","hash":"51c2b4d64c6992a39bfd2586a1bdf5fbbbdf0175","modified":1740320867052},{"_id":"themes/fluid/.gitattributes","hash":"a54f902957d49356376b59287b894b1a3d7a003f","modified":1740320867050},{"_id":"themes/fluid/languages/zh-TW.yml","hash":"e1043de394f6dcf5c0647adcfdefe60637f78426","modified":1740320867052},{"_id":"themes/fluid/layout/404.ejs","hash":"b84d575c7b7f778b4cb64e89ad3d0aed4a896820","modified":1740320867052},{"_id":"themes/fluid/layout/about.ejs","hash":"052e9fc19c753f53fdc083c7fb098e3668880140","modified":1740320867056},{"_id":"themes/fluid/layout/categories.ejs","hash":"13859726c27b6c79b5876ec174176d0f9c1ee164","modified":1740320867056},{"_id":"themes/fluid/layout/category.ejs","hash":"f099161b738a16a32253f42085b5444f902018ed","modified":1740320867056},{"_id":"themes/fluid/layout/index.ejs","hash":"33c3317cdcee062789de2336dd8d0cc7f86d3650","modified":1740320867056},{"_id":"themes/fluid/layout/layout.ejs","hash":"7e0023474128fbe4d68c467704c41f1712432415","modified":1740320867056},{"_id":"themes/fluid/layout/links.ejs","hash":"1cac32ec4579aaf7b9fa39d317497331d4c5e1dd","modified":1740320867056},{"_id":"themes/fluid/layout/page.ejs","hash":"ed5007a3feb8f14d3d2843271bfb298eb0c56219","modified":1740320867056},{"_id":"themes/fluid/layout/post.ejs","hash":"9bf0d357a607a282f3b9cb04525a4df0cc2a8b76","modified":1740320867056},{"_id":"themes/fluid/layout/tag.ejs","hash":"9d686364c4d16a1a9219471623af452035c5b966","modified":1740320867056},{"_id":"themes/fluid/layout/tags.ejs","hash":"1d06af34b6cf1d8a20d2eb565e309326ceba309f","modified":1740320867057},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/bug_report.md","hash":"554c0d0e086a0784d83ee71c83f8bceeb60aecc8","modified":1740320867050},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/bug_report_zh.md","hash":"c8b0d49c49e3c88872fd3b37909345ff5b2b6aa0","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/feature_request.md","hash":"c134dd57ffd269b93402ccfffe7dbe0f0b583bec","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/feature_request_zh.md","hash":"ed08574b196447376dd74411cca664ac9227a5d4","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/question.md","hash":"ab5eab9e3ff889c4ba7fd82846e7f5b7ae15bebc","modified":1740320867051},{"_id":"themes/fluid/layout/archive.ejs","hash":"7c1f44005849791feae4abaa10fae4cb983d3277","modified":1740320867056},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/question_zh.md","hash":"fff07ce0472afc368d388637cb9d438195da9b5b","modified":1740320867051},{"_id":"themes/fluid/.github/workflows/cr.yaml","hash":"19a8a00f5ba9607d82265572fe1202b64a8b0822","modified":1740320867051},{"_id":"themes/fluid/.github/workflows/limit.yaml","hash":"f8bd2edeb4424ee7a055b31583445d5d5dff91a4","modified":1740320867051},{"_id":"themes/fluid/.github/workflows/publish.yaml","hash":"6f02e6440d88629229556e3fd47d0280fe2240db","modified":1740320867051},{"_id":"themes/fluid/layout/_partials/archive-list.ejs","hash":"7520fbf91f762207c2ab06b2c293235cd5b23905","modified":1740320867052},{"_id":"themes/fluid/layout/_partials/category-chains.ejs","hash":"18309584aab83bc4deb20723ebad832149dd2e24","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/category-list.ejs","hash":"f8d2f1907450e61968e6d54443e9be8138196a77","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments.ejs","hash":"d707c47b2638c94e489bc43d4cfd098b7c58447f","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/css.ejs","hash":"1dadb118d580280524ed0a5f69bd34d234a92276","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/footer.ejs","hash":"b52aa2d61b6812588a805b676ffdf8b887023938","modified":1740330605855},{"_id":"themes/fluid/layout/_partials/head.ejs","hash":"67be642f99482c07904474f410cfbc2f99003288","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/header.ejs","hash":"0d5e397d30051e5fbabe7b47cfd1f1e6a5820af1","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/markdown-plugins.ejs","hash":"fc4bdf7de0cf1a66d0e5e4fba1b31d6f7ed49468","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/paginator.ejs","hash":"0f38a2c238169edcb63fc46c23bfc529ff3859b7","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/scripts.ejs","hash":"da5810785105e5075861593c7ac22c7aa9665a72","modified":1740320867056},{"_id":"themes/fluid/scripts/events/index.js","hash":"79de5a379b28cad759a49048351c7f6b8915bd7d","modified":1740320867057},{"_id":"themes/fluid/layout/_partials/search.ejs","hash":"70e1c929e084ca8a2648cedabf29b372511ea2b8","modified":1740320867056},{"_id":"themes/fluid/scripts/filters/default-injects.js","hash":"b2013ae8e189cd07ebc8a2ff48a78e153345210f","modified":1740320867057},{"_id":"themes/fluid/scripts/filters/locals.js","hash":"58d0fec976f6b1d35e7ea03edc45414088acf05c","modified":1740320867057},{"_id":"themes/fluid/scripts/filters/post-filter.js","hash":"82bb06686158ebe160a631c79f156cd4fde35656","modified":1740320867057},{"_id":"themes/fluid/scripts/generators/index-generator.js","hash":"9159fc22fa84a7b605dd15fe4104f01fe9c71147","modified":1740320867057},{"_id":"themes/fluid/scripts/generators/local-search.js","hash":"9ac5ddad06e9b0e6015ce531430018182a4bc0fa","modified":1740320867058},{"_id":"themes/fluid/scripts/generators/pages.js","hash":"d3e75f53c59674d171309e50702954671f31f1a4","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/date.js","hash":"9bda6382f61b40a20c24af466fe10c8366ebb74c","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/engine.js","hash":"d3a231d106795ce99cb0bc77eb65f9ae44515933","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/export-config.js","hash":"8e67b522c47aa250860e3fe2c733f1f958a506c0","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/import.js","hash":"ca53e8dbf7d44cfd372cfa79ac60f35a7d5b0076","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/injects.js","hash":"1ad2ae6b11bd8806ee7dd6eb7140d8b54a95d613","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/page.js","hash":"4607607445233b3029ef20ed5e91de0da0a7f9c5","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/scope.js","hash":"d41d9d658fcb54964b388598e996747aadb85b0f","modified":1740320867059},{"_id":"themes/fluid/scripts/helpers/url.js","hash":"2a6a8288176d0e0f6ec008056bf2745a86e8943e","modified":1740320867059},{"_id":"themes/fluid/scripts/helpers/utils.js","hash":"966689d7c5e4320008285395fbaa2751f6209be5","modified":1740320867059},{"_id":"themes/fluid/scripts/helpers/wordcount.js","hash":"4d48c424e47ff9a17a563167ea5f480890267adf","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/button.js","hash":"3eb43a8cdea0a64576ad6b31b4df6c2bf5698d4c","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/checkbox.js","hash":"6eaf53cf4bfc756a65bda18184cf8998a12c861d","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/fold.js","hash":"73e4fd12ce3e47981479391ed354b7d9d3279f70","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/group-image.js","hash":"4aeebb797026f1df25646a5d69f7fde79b1bcd26","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/label.js","hash":"f05a6d32cca79535b22907dc03edb9d3fa2d8176","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/mermaid.js","hash":"75160561e1ef3603b6d2ad2938464ab1cb77fd38","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/note.js","hash":"e3b456a079e5dc0032473b516c865b20f83d2c26","modified":1740320867059},{"_id":"themes/fluid/scripts/utils/compare-versions.js","hash":"dbbc928c914fc2bd242cd66aa0c45971aec13a5d","modified":1740320867059},{"_id":"themes/fluid/scripts/utils/crypto.js","hash":"ae4ad8a188ef5b3fa6818b01629fc962b3de8551","modified":1740320867060},{"_id":"themes/fluid/scripts/utils/object.js","hash":"33b57e4decdc5e75c518859f168c8ba80b2c665b","modified":1740320867060},{"_id":"themes/fluid/scripts/utils/resolve.js","hash":"8c4a8b62aa8608f12f1e9046231dff04859dc3e9","modified":1740320867060},{"_id":"themes/fluid/scripts/utils/url-join.js","hash":"718aab5e7b2059a06b093ca738de420d9afa44ba","modified":1740320867060},{"_id":"themes/fluid/source/css/highlight-dark.styl","hash":"45695ef75c31a4aa57324dd408b7e2327a337018","modified":1740320867063},{"_id":"themes/fluid/source/css/gitalk.css","hash":"a57b3cc8e04a0a4a27aefa07facf5b5e7bca0e76","modified":1740320867063},{"_id":"themes/fluid/source/css/highlight.styl","hash":"a9efc52a646a9e585439c768557e3e3c9e3326dc","modified":1740320867063},{"_id":"themes/fluid/source/css/main.styl","hash":"855ae5fe229c51afa57f7645f6997a27a705d7e4","modified":1740320867063},{"_id":"themes/fluid/source/img/avatar.png","hash":"fe739a158cc128f70f780eb5fa96f388b81d478f","modified":1740320867063},{"_id":"themes/fluid/source/img/loading.gif","hash":"2d2fc0f947940f98c21afafef39ecf226a2e8d55","modified":1740320867086},{"_id":"themes/fluid/source/js/events.js","hash":"6869811f67e4c3de3edfa4b08464bb242b97a402","modified":1740320867086},{"_id":"themes/fluid/source/img/police_beian.png","hash":"90efded6baa2dde599a9d6b1387973e8e64923ea","modified":1740320867086},{"_id":"themes/fluid/source/js/color-schema.js","hash":"1ef88c881b9f942deadde3d890387b94c617342a","modified":1740320867086},{"_id":"themes/fluid/source/js/leancloud.js","hash":"eff77c7a5c399fcaefda48884980571e15243fc9","modified":1740320867086},{"_id":"themes/fluid/source/js/local-search.js","hash":"b9945f76f8682f3ec32edfb285b26eb559f7b7e8","modified":1740320867086},{"_id":"themes/fluid/source/js/plugins.js","hash":"c34916291e392a774ff3e85c55badb83e8661297","modified":1740320867087},{"_id":"themes/fluid/source/js/img-lazyload.js","hash":"cbdeca434ec4da51f488c821d51b4d23c73294af","modified":1740320867086},{"_id":"themes/fluid/source/js/umami-view.js","hash":"33c4b3883fa747604074ad3921606eeeaeb50716","modified":1740320867087},{"_id":"themes/fluid/source/js/utils.js","hash":"b82e7c289a66dfd36064470fd41c0e96fc598b43","modified":1740320867087},{"_id":"themes/fluid/layout/_partials/comments/changyan.ejs","hash":"c9b2d68ed3d375f1953e7007307d2a3f75ed6249","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/cusdis.ejs","hash":"5f9dc012be27040bbe874d0c093c0d53958cc987","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/disqus.ejs","hash":"aab4a4d24c55231a37db308ae94414319cecdd9b","modified":1740320867053},{"_id":"themes/fluid/source/xml/local-search.xml","hash":"8c96ba6a064705602ce28d096fd7dd9069630a55","modified":1740320867087},{"_id":"themes/fluid/layout/_partials/comments/discuss.ejs","hash":"98d065b58ce06b7d18bff3c974e96fa0f34ae03a","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/giscus.ejs","hash":"95f8b866b158eff9352c381c243b332a155a5110","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/gitalk.ejs","hash":"843bc141a4545eb20d1c92fb63c85d459b4271ec","modified":1740320867053},{"_id":"themes/fluid/source/js/boot.js","hash":"38bd26c6b7acdafda86dda3560e6a3ca488d3c76","modified":1740320867086},{"_id":"themes/fluid/layout/_partials/comments/livere.ejs","hash":"2264758fed57542a7389c7aa9f00f1aefa17eb87","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/remark42.ejs","hash":"d4e9532feeb02aed61bd15eda536b5b631454dac","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/twikoo.ejs","hash":"d84bcb5ccd78470a60c067fc914ac0ac67ac8777","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/utterances.ejs","hash":"c7ccf7f28308334a6da6f5425b141a24b5eca0e2","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/comments/valine.ejs","hash":"19ba937553dddd317f827d682661a1066a7b1f30","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/comments/waline.ejs","hash":"3d08c73b77e412d2f06a24d9344565fc7dbc76f8","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/footer/beian.ejs","hash":"4fb9b5dd3f3e41a586d6af44e5069afe7c81fff2","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/footer/statistics.ejs","hash":"954a29b58d72647d20450da270b5d8fb2e0824f5","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/header/banner.ejs","hash":"e07757b59e7b89eea213d0e595cb5932f812fd32","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/header/navigation.ejs","hash":"37d750428772d7c71ba36ce0c2540780d90fadea","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/plugins/analytics.ejs","hash":"e6dcbf1c2f56314d56bb46b50aca86ff68cacebd","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/anchorjs.ejs","hash":"40181442d3a2b8734783a0ad7caf2d2522e3f2ab","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/code-widget.ejs","hash":"3a505cba37942badf62a56bbb8b605b72af330aa","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/encrypt.ejs","hash":"0fff24cf5bf99fbe5c56c292e2eac4a89bf29db4","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/fancybox.ejs","hash":"9d1ea2a46b8c8ad8c168594d578f40764818ef13","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/highlight.ejs","hash":"7529dd215b09d3557804333942377b9e20fa554e","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/math.ejs","hash":"dcbf9a381ee76f2f1f75fcbc22c50a502ec85023","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/mermaid.ejs","hash":"03ac02762f801970d1c4e73d6ec8d4c503780e50","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/moment.ejs","hash":"4ff3fb1b60ccc95a0af3bbdbd0757fedefc088b5","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/nprogress.ejs","hash":"4c2d39ce816b8a6dcd6b53113c8695f8bd650a23","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/typed.ejs","hash":"f345374885cd6a334f09a11f59c443b5d577c06c","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/category-bar.ejs","hash":"8772bce97ed297e7a88523f4e939ed6436c22f87","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/meta-bottom.ejs","hash":"375974ec017696e294dc12469fb0ae257800dc2d","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/copyright.ejs","hash":"cbfa32c5f5973133afd043853b24f8200455cb2d","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/meta-top.ejs","hash":"54dd479dbb440126e4ddd9d902229db5afaaae98","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/sidebar-left.ejs","hash":"9992c99b3eb728ad195970e1b84d665f2c8691c4","modified":1740320867056},{"_id":"themes/fluid/scripts/events/lib/compatible-configs.js","hash":"ef474d1fa5bbafc52619ced0f9dc7eaf2affb363","modified":1740320867057},{"_id":"themes/fluid/layout/_partials/post/toc.ejs","hash":"635a89060fbf72eeda066fc4bd0a97462f069417","modified":1740320867056},{"_id":"themes/fluid/scripts/events/lib/footnote.js","hash":"c19ac8050b82c3676b0332a56099ccfcc36d9d52","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/hello.js","hash":"bd8376e1cf7892dc2daa58f2f443574be559fdbf","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/highlight.js","hash":"a5fe1deccb73b5f578797dbb11038efc15f63ce8","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/injects.js","hash":"5ae4b07204683e54b5a1b74e931702bbce2ac23e","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/lazyload.js","hash":"9ba0d4bc224e22af8a5a48d6ff13e5a0fcfee2a4","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/merge-configs.js","hash":"7c944c43b2ece5dd84859bd9d1fe955d13427387","modified":1740320867057},{"_id":"themes/fluid/source/css/_functions/base.styl","hash":"2e46f3f4e2c9fe34c1ff1c598738fc7349ae8188","modified":1740320867060},{"_id":"themes/fluid/source/css/_mixins/base.styl","hash":"542e306ee9494e8a78e44d6d7d409605d94caeb3","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/pages.styl","hash":"b8e887bc7fb3b765a1f8ec9448eff8603a41984f","modified":1740320867063},{"_id":"themes/fluid/source/css/_variables/base.styl","hash":"4ed5f0ae105ef4c7dd92eaf652ceda176c38e502","modified":1740320867063},{"_id":"themes/fluid/source/css/_pages/_about/about.styl","hash":"97fe42516ea531fdad771489b68aa8b2a7f6ae46","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/base.styl","hash":"643284c567665f96915f0b64e59934dda315f74d","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/inline.styl","hash":"411a3fa3f924a87e00ff04d18b5c83283b049a4d","modified":1740320867061},{"_id":"themes/fluid/layout/_partials/post/sidebar-right.ejs","hash":"d5fcc9b60e02f869a29a8c17a16a6028ecc1e6d8","modified":1740320867056},{"_id":"themes/fluid/source/css/_pages/_base/keyframes.styl","hash":"94065ea50f5bef7566d184f2422f6ac20866ba22","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_base/color-schema.styl","hash":"85492ef64d7e5f70f0f7e46d570bbc911e686d7e","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/print.styl","hash":"166afbc596ea4b552bad7290ec372d25ec34db7b","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_category/category-bar.styl","hash":"cc6df43fef6bb3efecbfdd8b9e467424a1dea581","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_archive/archive.styl","hash":"c475e6681546d30350eaed11f23081ecae80c375","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_category/category-chain.styl","hash":"0cdf7ef50dfd0669d3b257821384ff31cd81b7c9","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_category/category-list.styl","hash":"7edfe1b571ecca7d08f5f4dbcf76f4ffdcfbf0b5","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_index/index.styl","hash":"25fb6fa4c783b847c632584c49a7e1593cdb2f5d","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_links/links.styl","hash":"5c7f2044e3f1da05a3229537c06bd879836f8d6e","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/comment.styl","hash":"780f3788e7357bcd3f3262d781cb91bb53976a93","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/highlight.styl","hash":"4df764d298fe556e501db4afc2b05686fe6ebcfb","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/markdown.styl","hash":"1e3d3a82721e7c10bcfcecec6d81cf2979039452","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/post-page.styl","hash":"7eee3f78296a3c81849a5415d1d43dcc6e03e6aa","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/post-tag.styl","hash":"c96d36aa8fe20f0c3c1a29ee2473cd8064b10f73","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_tag/tags.styl","hash":"65bfc01c76abc927fa1a23bf2422892b0d566c3f","modified":1740320867063},{"_id":"themes/fluid/source/css/_pages/_base/_widget/banner.styl","hash":"7a0bd629bc234fc75e3cc8e3715ffada92f09e73","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/anchorjs.styl","hash":"e0cebda4a6f499aff75e71417d88caa7ceb13b94","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/code-widget.styl","hash":"b66ab013f0f37d724a149b85b3c7432afcf460ad","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/board.styl","hash":"4397037fc3f0033dbe546c33cd9dbdabd8cb1632","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/copyright.styl","hash":"26f71a9cd60d96bb0cb5bbdf58150b8e524d9707","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/footer.styl","hash":"2caaca71dd1ff63d583099ed817677dd267b457e","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/footnote.styl","hash":"ae9289cc89649af2042907f8a003303b987f3404","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/header.styl","hash":"d42b748f2f49ef32aafb1a21d75991d2459da927","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/modal.styl","hash":"adf6c1e5c8e1fb41c77ce6e2258001df61245aa2","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/ngrogress.styl","hash":"5d225357b4a58d46118e6616377168336ed44cb2","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/noscript.styl","hash":"0cf2f2bb44f456150d428016675d5876a9d2e2aa","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/pagination.styl","hash":"8bb1b68e5f3552cb48c2ffa31edbc53646a8fb4c","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/qrcode.styl","hash":"78704a94c0436097abfb0e0a57abeb3429c749b7","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/scroll-btn.styl","hash":"f0e429a27fa8a7658fcbddbb4d4dbe4afa12499a","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/search.styl","hash":"10f7e91a91e681fb9fe46f9df7707b9ef78707c8","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/toc.styl","hash":"9e7452aa2372153f25d7a4675c9d36d281a65d24","modified":1740320867061},{"_id":"source/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","hash":"dddf72bb12aef01baa3eb2017bb867f274059f12","modified":1729572689000},{"_id":"source/images/mhwilds4050.jpg","hash":"9b2b15c66e2340c15b86cec0fa8f818b67e06384","modified":1730738910727},{"_id":"themes/fluid/source/img/hifuu.png","hash":"331b5950baf96f5d39192bb42b7da4d22a08992e","modified":1740320867086},{"_id":"source/images/mhwilds780M.jpg","hash":"e2c59c6caae452afb424d9f2fc3a255a44121b49","modified":1730738926927},{"_id":"source/images/clonezilla.png","hash":"7f443d79783df3744b2e51613422ee8fd7eea6f8","modified":1740318117703},{"_id":"source/images/phase_2_14.png","hash":"f50399a9eb469ed1e063ff4ccc0e8636c1b75f1e","modified":1740407245723},{"_id":"source/images/phase_4.png","hash":"81cd309a8990e015a8679b6a4e26a27d804c1da6","modified":1740410093173},{"_id":"themes/fluid/source/img/gh0s7.jpg","hash":"1c5af4f8cacdc3c6adbe8334866774cca2944910","modified":1740320867085},{"_id":"source/images/20241027_222225.png","hash":"f0595d1315d94e72e61c69e0499e5129e1821ba1","modified":1740320866763},{"_id":"source/images/b2054bbaf6197624d38cc2007d885fd1454454985.png","hash":"b021e971cedaa55b273eab2b10be94f795b06922","modified":1729572689000},{"_id":"source/images/lmms-import.png","hash":"002535b55a41f7a7dcba24517dd2397589416a64","modified":1744993882632},{"_id":"source/music/過ぎ去りし温もりの日々.mp3","hash":"22016dcdfcbac9393afd3fe97f2d6d6009cd57f5","modified":1747827275971},{"_id":"source/images/musecore-launch.png","hash":"0a6c5642d05b197555135cd602886311a9122df0","modified":1744993224514},{"_id":"source/images/zellij-helix.jpg","hash":"87fb5b7b51a4e3b062b891c04488a53457edded0","modified":1738492100321},{"_id":"themes/fluid/source/img/gensokyo.jpg","hash":"d82c0d5011c6cbc37109c9c80530d14cd266286f","modified":1740320867082},{"_id":"public/local-search.xml","hash":"04888c0a17b801da9c229b1b524289aae3c876a9","modified":1752421654322},{"_id":"public/about/index.html","hash":"cf21ca666c882e4bdb83f83119a48053a895b443","modified":1747835050737},{"_id":"public/2025/05/21/2025-5-21/index.html","hash":"37881747e0ab8347571056ef1e32a7b578afb140","modified":1747899672199},{"_id":"public/2025/03/10/archlinux-game-fix/index.html","hash":"9ae2ff5a413222135be2c4cc1bc0913ed39ad390","modified":1747835050737},{"_id":"public/2025/03/10/searxng/index.html","hash":"2c8ae7693b4ece22f83f7536e4d2a5032499da90","modified":1747835050737},{"_id":"public/2025/02/23/clonezilla/index.html","hash":"18b734abda3405019efcab2523f12e766bfa73a3","modified":1747835050737},{"_id":"public/2024/12/13/zellij-helix/index.html","hash":"952cd837e89121b41cef1b3fe92fc98f6253bcc4","modified":1747835050737},{"_id":"public/2025/02/24/nudtbomblab/index.html","hash":"0a6392b9894d41caded05b2012588c043d91cc68","modified":1747835050737},{"_id":"public/2024/11/11/mhwi/index.html","hash":"ebe1a9550fe14035a215f067342373d3e2a2e8c5","modified":1747835050737},{"_id":"public/2025/02/02/archlinux-optimization/index.html","hash":"1e3734b7817998fe800911dbb15e6c0fdb2f55f8","modified":1747835050737},{"_id":"public/2024/11/06/overleaf/index.html","hash":"bc411b1a10fcbb6a5f6d0d213fa63f093830cae3","modified":1747835050737},{"_id":"public/2024/11/04/BlogUpdate/index.html","hash":"ac98c86ad12b3074414a44bfdf3ed153320d3a03","modified":1747835050737},{"_id":"public/2024/11/04/Vocaloid调教-晴天/index.html","hash":"a3dd5c0b77bd2eb77555d349177492a02e17fd25","modified":1747835050737},{"_id":"public/2024/11/06/arch-nvidia/index.html","hash":"8ade129a78d71d3017432e1a65e1d6d292a16c53","modified":1747835050737},{"_id":"public/2024/06/03/原来我还有个博客/index.html","hash":"7215c9a90d0695469c179717d27194e346a8abd0","modified":1747835050737},{"_id":"public/2023/12/31/12月31日进度报告/index.html","hash":"03f909c8954f0e623ccaf2e30fa44a1d3f45814b","modified":1747835050737},{"_id":"public/2024/11/04/loopers/index.html","hash":"9eceb4b3fc581ba245f16a1b0217f5d2b1594b47","modified":1747835050737},{"_id":"public/2023/12/28/12月28日进度报告/index.html","hash":"5aa948c12c109b08b781baf308c9a80ddd3bc379","modified":1747835050737},{"_id":"public/2024/10/30/GentleJena/index.html","hash":"0747019314125e796e102155e09febb4cbdb9b67","modified":1747835050737},{"_id":"public/2023/12/19/12月19日工作记录/index.html","hash":"bac072049959ec19cb53ad4b9180b53476c3542f","modified":1747835050737},{"_id":"public/2023/12/18/12月18日工作记录/index.html","hash":"82d3d1cab693f7808b28ed48803229a5290ee798","modified":1747835050737},{"_id":"public/2023/12/20/12月20日工作记录/index.html","hash":"5ee7c6817c2202a86dcf8e7e6898d2559c69dcf2","modified":1747835050737},{"_id":"public/2023/12/06/CGH0S7-s-Blog/index.html","hash":"b13772d5d9a1a7a19d1f565a27e8a9432f0da543","modified":1747835050737},{"_id":"public/categories/更新/index.html","hash":"39ae73dfc0e214df88912e0a38b4cbf3b55e13a4","modified":1747835050737},{"_id":"public/2023/12/06/梦开始的地方/index.html","hash":"2df05084144d2567e92d3b9f59afbb720fbed05a","modified":1747835050737},{"_id":"public/categories/Rearrangement/index.html","hash":"d86532128355807b19a6eb69208699289b62cfb7","modified":1747835050737},{"_id":"public/2023/12/17/12月16-17日工作记录/index.html","hash":"2af885a19d1b28c3a1e6d4afdf110c6733a4c6b5","modified":1747835050737},{"_id":"public/categories/技术分享/index.html","hash":"af921a46b2c79d42f3f975638ec3b7133af7028b","modified":1747835050737},{"_id":"public/archives/index.html","hash":"66a116889bc7924de57dd4ad01367ca92a554d90","modified":1752421054740},{"_id":"public/categories/Vocaloid/index.html","hash":"048aca4e241b331d0209e9208c379fcf665a0fae","modified":1747835050737},{"_id":"public/archives/page/3/index.html","hash":"1ba14450c253907754bd3312e9797679717adcb8","modified":1752421054740},{"_id":"public/archives/2023/index.html","hash":"1dd9282b44858ac9c2660402b7a10b39855a1405","modified":1752421054740},{"_id":"public/archives/2024/index.html","hash":"dbad093c67fbdd942a544313c1a08fad3471f047","modified":1752421054740},{"_id":"public/archives/2024/06/index.html","hash":"c5770f2a335ff3b4888e237caf667cbfade44594","modified":1752421054740},{"_id":"public/archives/2024/10/index.html","hash":"63622d0cd7e95bc841406fd930e44081b33f8cfc","modified":1752421054740},{"_id":"public/archives/page/2/index.html","hash":"388edeae6748b795f7c9cb37ccc1098ee556d24e","modified":1752421054740},{"_id":"public/archives/2023/12/index.html","hash":"1cec2277495d1ab0aa1e53485895605c575f8d7c","modified":1752421054740},{"_id":"public/archives/2024/11/index.html","hash":"5194dcf39c5c5f721363c1e6faa697a0338535f9","modified":1752421054740},{"_id":"public/archives/2025/02/index.html","hash":"4041af55cb4bee525482d1fa8af08b3ff7a0978a","modified":1752421054740},{"_id":"public/archives/2024/12/index.html","hash":"36aa55011f84eb11693473c819c4d856bab95583","modified":1752421054740},{"_id":"public/archives/2025/index.html","hash":"a2a277a3a71b75771b2fc8184061b0bfacaf9127","modified":1752421054740},{"_id":"public/index.html","hash":"141ef635f36aae730bd3a7958ac5e8a09689bdf0","modified":1752421419121},{"_id":"public/archives/2025/03/index.html","hash":"35c6d20bd2a439dafff8bd0554c2e7c011c26118","modified":1752421054740},{"_id":"public/page/2/index.html","hash":"85b9975ce8e93d5ce62e230c6b8a6a53bb6350c9","modified":1752421054740},{"_id":"public/archives/2025/05/index.html","hash":"a8afdae3a3235f971df5a06ebe50923e4312eaa6","modified":1752421054740},{"_id":"public/tags/日志/index.html","hash":"0160660df456d6993ffff1eb4e8397f5198d8d39","modified":1747899672199},{"_id":"public/page/3/index.html","hash":"26475dd8a949c78364c5f11ea8f1aac93020ea2a","modified":1752421054740},{"_id":"public/tags/音乐/index.html","hash":"0c4de7bf53b25a52c23aaf27d7327d49d165268b","modified":1747835050737},{"_id":"public/tags/技术/index.html","hash":"9fe303dfd9633ea8deaa277121d4bdeb3100cd7a","modified":1748008901482},{"_id":"public/tags/Vocaloid/index.html","hash":"98440598d6da10f35250eb46e393c0f7199fd848","modified":1747835050737},{"_id":"public/tags/Archlinux/index.html","hash":"5a8f0e067e637caac2101ea74f750f5ad9d0e45d","modified":1747835050737},{"_id":"public/tags/系统优化/index.html","hash":"ff22e88f749e9ff6b5e47143fa5a24d3389a1795","modified":1747835050737},{"_id":"public/tags/技术分享/index.html","hash":"04a2f939d67c26b002b2a6e66fc8b7ce798263a7","modified":1747835050737},{"_id":"public/tags/TEST/index.html","hash":"2e5789b8e544c5e8404441c75b054f661294306a","modified":1747835050737},{"_id":"public/tags/学习/index.html","hash":"b754a2106f26f5f90fd1d4e6370b58904b39eda3","modified":1747835050737},{"_id":"public/tags/开源工具/index.html","hash":"413cb791b6e4f8b10b692a372aba73a022472720","modified":1747835050737},{"_id":"public/404.html","hash":"4696437e74fa558f8be811e50fdfd88f2a84e82b","modified":1747835050737},{"_id":"public/tags/生活/index.html","hash":"3c02d844602edb823daede03b684086c88599080","modified":1752421054740},{"_id":"public/categories/index.html","hash":"f2bbc847232265380a90a69b0d2f3bfb05137d31","modified":1747835050737},{"_id":"public/tags/index.html","hash":"cad7dc89605b503ae8bd71c189a657b3f7c2f7d9","modified":1752421054740},{"_id":"public/links/index.html","hash":"46f6120a630849e03697e69a4e74e876f37c1de1","modified":1747899672199},{"_id":"public/tags/板绘/index.html","hash":"05cf911d2c26ed5f6d104d875c11762e6e55b12e","modified":1747835050737},{"_id":"public/images/asc-events.png","hash":"a0b3610962062d0a322fe091bcc8f083ab13bc6e","modified":1747835050737},{"_id":"public/images/amd.webp","hash":"cb0cfd5da0b9c10b9b22c65bba881cfde485d763","modified":1747835050737},{"_id":"public/images/Written-By-Human-Not-By-AI-Badge-white@2x.png","hash":"994225c6fd72521b281144bdd98fefcca53e2c7b","modified":1747835050737},{"_id":"public/images/archlinux-logo.png","hash":"4f6075309fadcb7f7547164cb8a99b4949f74598","modified":1747835050737},{"_id":"public/images/asc.png","hash":"3a33b35bff1b3f527f7a87a9d6a7d6d9a072a946","modified":1747835050737},{"_id":"public/images/built_on_the_kde_platform.png","hash":"507b6a4323b23772800006505e6c588bb515ebf5","modified":1747835050737},{"_id":"public/img/avatar.png","hash":"fe739a158cc128f70f780eb5fa96f388b81d478f","modified":1747835050737},{"_id":"public/img/police_beian.png","hash":"90efded6baa2dde599a9d6b1387973e8e64923ea","modified":1747835050737},{"_id":"public/xml/local-search.xml","hash":"8c96ba6a064705602ce28d096fd7dd9069630a55","modified":1747835050737},{"_id":"public/img/loading.gif","hash":"2d2fc0f947940f98c21afafef39ecf226a2e8d55","modified":1747835050737},{"_id":"public/images/phase1_strings.png","hash":"6fb457adddc5bb32aa463b6227542076c4b501e7","modified":1747835050737},{"_id":"public/img/hifuu.png","hash":"331b5950baf96f5d39192bb42b7da4d22a08992e","modified":1747835050737},{"_id":"public/css/gitalk.css","hash":"a57b3cc8e04a0a4a27aefa07facf5b5e7bca0e76","modified":1747835050737},{"_id":"public/css/highlight.css","hash":"04d4ddbb5e1d1007447c2fe293ee05aae9b9563e","modified":1747835050737},{"_id":"public/css/main.css","hash":"06433abcb688c2f5473623a9355bff9865c48d3f","modified":1747835050737},{"_id":"public/css/highlight-dark.css","hash":"902294bada4323c0f51502d67cba8c3a0298952f","modified":1747835050737},{"_id":"public/js/boot.js","hash":"38bd26c6b7acdafda86dda3560e6a3ca488d3c76","modified":1747835050737},{"_id":"public/js/color-schema.js","hash":"1ef88c881b9f942deadde3d890387b94c617342a","modified":1747835050737},{"_id":"public/js/img-lazyload.js","hash":"cbdeca434ec4da51f488c821d51b4d23c73294af","modified":1747835050737},{"_id":"public/js/leancloud.js","hash":"eff77c7a5c399fcaefda48884980571e15243fc9","modified":1747835050737},{"_id":"public/js/plugins.js","hash":"c34916291e392a774ff3e85c55badb83e8661297","modified":1747835050737},{"_id":"public/js/local-search.js","hash":"b9945f76f8682f3ec32edfb285b26eb559f7b7e8","modified":1747835050737},{"_id":"public/js/events.js","hash":"6869811f67e4c3de3edfa4b08464bb242b97a402","modified":1747835050737},{"_id":"public/js/utils.js","hash":"b82e7c289a66dfd36064470fd41c0e96fc598b43","modified":1747835050737},{"_id":"public/js/umami-view.js","hash":"33c4b3883fa747604074ad3921606eeeaeb50716","modified":1747835050737},{"_id":"public/images/searxng.png","hash":"9514f2bd14ac1cafa437f3655d9382d477667094","modified":1747835050737},{"_id":"public/images/caseclosed.png","hash":"628b54b49c86a23af595a52daba9e0557b81a17a","modified":1747835050737},{"_id":"public/images/audiveris.png","hash":"52aa9df5f93559c2e47b30afbf84fc6cc6b34002","modified":1747835050737},{"_id":"public/images/musecore-to-midi.png","hash":"02ba31b29ba069dfef0e1cf26c5ccec9dc3d2289","modified":1747835050737},{"_id":"public/images/1730728153314.png","hash":"95d44ea62557a311503cab58d1dec5cafc97e07d","modified":1747835050737},{"_id":"public/images/musecore.png","hash":"9b2eba87e7c93e57f2024697d1ff4217d206e5ac","modified":1747835050737},{"_id":"public/img/gh0s7.jpg","hash":"1c5af4f8cacdc3c6adbe8334866774cca2944910","modified":1747835050737},{"_id":"public/images/xb2score.png","hash":"03efbb07a7bb7f6c7d58b98ed125cafe42074b94","modified":1747835050737},{"_id":"public/images/phase1.png","hash":"42533712403be6036231f1e3770f125858bf91d7","modified":1747835050737},{"_id":"public/images/5364bba6d035326e82c53504dd53e7c2454454985.png","hash":"11b11f23ebebbe08e8cf826b48eb37b4084796cd","modified":1747835050737},{"_id":"public/images/1613f5602b203b38230f19699deb0219454454985.png","hash":"3d71204d9a0731384f97ad0f90802a5c9fd96776","modified":1747835050737},{"_id":"public/images/mhwilds4050.jpg","hash":"9b2b15c66e2340c15b86cec0fa8f818b67e06384","modified":1747835050737},{"_id":"public/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","hash":"dddf72bb12aef01baa3eb2017bb867f274059f12","modified":1747835050737},{"_id":"public/images/mhwilds780M.jpg","hash":"e2c59c6caae452afb424d9f2fc3a255a44121b49","modified":1747835050737},{"_id":"public/images/clonezilla.png","hash":"7f443d79783df3744b2e51613422ee8fd7eea6f8","modified":1747835050737},{"_id":"public/images/phase_4.png","hash":"81cd309a8990e015a8679b6a4e26a27d804c1da6","modified":1747835050737},{"_id":"public/images/phase_2_14.png","hash":"f50399a9eb469ed1e063ff4ccc0e8636c1b75f1e","modified":1747835050737},{"_id":"public/images/20241027_222225.png","hash":"f0595d1315d94e72e61c69e0499e5129e1821ba1","modified":1747835050737},{"_id":"public/images/b2054bbaf6197624d38cc2007d885fd1454454985.png","hash":"b021e971cedaa55b273eab2b10be94f795b06922","modified":1747835050737},{"_id":"public/images/lmms-import.png","hash":"002535b55a41f7a7dcba24517dd2397589416a64","modified":1747835050737},{"_id":"public/music/過ぎ去りし温もりの日々.mp3","hash":"22016dcdfcbac9393afd3fe97f2d6d6009cd57f5","modified":1747835050737},{"_id":"public/images/musecore-launch.png","hash":"0a6c5642d05b197555135cd602886311a9122df0","modified":1747835050737},{"_id":"public/images/zellij-helix.jpg","hash":"87fb5b7b51a4e3b062b891c04488a53457edded0","modified":1747835050737},{"_id":"public/img/gensokyo.jpg","hash":"d82c0d5011c6cbc37109c9c80530d14cd266286f","modified":1747835050737},{"_id":"source/_posts/fortune.md","hash":"e249e56dad408ad79b11efc90aa42f764cf1c665","modified":1747899668523},{"_id":"public/2025/05/22/fortune/index.html","hash":"b763dfd33addce06c119e6e4d4e2414003a8be57","modified":1748008901482},{"_id":"public/tags/日志/page/2/index.html","hash":"aa57dfa5c3f0f079ee752c53af3c798fd920d955","modified":1747899672199},{"_id":"source/_posts/gcc15restrict.md","hash":"50533932fcba41826b8cf75f54b173f0c604136b","modified":1748008893929},{"_id":"public/2025/05/23/gcc15restrict/index.html","hash":"d9e5bed8d1d0e738be5a8412360053a2e12c7e43","modified":1752421054740},{"_id":"source/_posts/kritabest.md","hash":"a137c6edc4ea2ca1d7ea13d8dc2bd1bbb7df6d84","modified":1752421648539},{"_id":"source/images/krita-official.png","hash":"2ec810a739ce33ad5666093b8c36d29028a17c17","modified":1752420936455},{"_id":"public/2025/07/13/kritabest/index.html","hash":"2fd566a8487414074d675845f204f51b95786250","modified":1752421654322},{"_id":"public/archives/2025/07/index.html","hash":"dd80a20304d322a01e2168317bf77f4bbb8c60ca","modified":1752421054740},{"_id":"public/images/krita-official.png","hash":"2ec810a739ce33ad5666093b8c36d29028a17c17","modified":1752421054740},{"_id":"source/images/yana.jpg","hash":"757c68ec322e834eace7236c38e74a4f9585d474","modified":1752421174023},{"_id":"public/images/yana.jpg","hash":"757c68ec322e834eace7236c38e74a4f9585d474","modified":1752421266057}],"Category":[{"name":"更新","_id":"cmaxzv0q1000hp22bhluuaucj"},{"name":"Rearrangement","_id":"cmaxzv0q2000pp22betjg2hmk"},{"name":"Vocaloid","_id":"cmaxzv0q3000wp22be1q73d2r"},{"name":"技术分享","_id":"cmaxzv0q40012p22b1fahbd6c"}],"Data":[],"Page":[{"title":"About","date":"2024-11-04T14:46:12.000Z","layout":"about","_content":"\n白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧\n\n爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇\n\n截至目前最喜欢的歌手是宇多田光❤️\n\n联系方式:\n\n- Email: \n\n- Github: \n","source":"about/index.md","raw":"---\ntitle: About\ndate: 2024-11-04 22:46:12\nlayout: about\n---\n\n白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧\n\n爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇\n\n截至目前最喜欢的歌手是宇多田光❤️\n\n联系方式:\n\n- Email: \n\n- Github: \n","updated":"2025-02-23T16:01:20.093Z","path":"about/index.html","comments":1,"_id":"cmaxzv0pu0000p22bd8nm6uwd","content":"

白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧

\n

爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇

\n

截至目前最喜欢的歌手是宇多田光❤️

\n

联系方式:

\n\n","excerpt":"","more":"

白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧

\n

爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇

\n

截至目前最喜欢的歌手是宇多田光❤️

\n

联系方式:

\n\n"}],"Post":[{"title":"12月16-17日工作记录","date":"2023-12-17T14:26:17.000Z","_content":"## 12月16-17日\n1. 四级考试\n2. 自学cuda,openacc,了解GPU架构知识\n3. 参加超算队启动会\n4. 大计和高数期中考试\n5. 研究spack使用\n6. 学习cuda编程\n7. 补作业\n","source":"_posts/12月16-17日工作记录.md","raw":"---\ntitle: 12月16-17日工作记录\ndate: 2023-12-17 22:26:17\ntags: [日志]\n---\n## 12月16-17日\n1. 四级考试\n2. 自学cuda,openacc,了解GPU架构知识\n3. 参加超算队启动会\n4. 大计和高数期中考试\n5. 研究spack使用\n6. 学习cuda编程\n7. 补作业\n","slug":"12月16-17日工作记录","published":1,"updated":"2025-02-23T14:27:46.747Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0pv0001p22bbzg168j1","content":"

12月16-17日

    \n
  1. 四级考试
  2. \n
  3. 自学cuda,openacc,了解GPU架构知识
  4. \n
  5. 参加超算队启动会
  6. \n
  7. 大计和高数期中考试
  8. \n
  9. 研究spack使用
  10. \n
  11. 学习cuda编程
  12. \n
  13. 补作业
  14. \n
\n","excerpt":"","more":"

12月16-17日

    \n
  1. 四级考试
  2. \n
  3. 自学cuda,openacc,了解GPU架构知识
  4. \n
  5. 参加超算队启动会
  6. \n
  7. 大计和高数期中考试
  8. \n
  9. 研究spack使用
  10. \n
  11. 学习cuda编程
  12. \n
  13. 补作业
  14. \n
\n"},{"title":"12月19日工作记录","date":"2023-12-19T13:59:47.000Z","_content":"## 12月18日\n1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;\n2. 学习cuda编程.\n","source":"_posts/12月19日工作记录.md","raw":"---\ntitle: 12月19日工作记录\ndate: 2023-12-19 21:59:47\ntags: [日志]\n---\n## 12月18日\n1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;\n2. 学习cuda编程.\n","slug":"12月19日工作记录","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0pw0002p22bg7e11agp","content":"

12月18日

    \n
  1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;
  2. \n
  3. 学习cuda编程.
  4. \n
\n","excerpt":"","more":"

12月18日

    \n
  1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;
  2. \n
  3. 学习cuda编程.
  4. \n
\n"},{"title":"12月18日工作记录","date":"2023-12-18T13:57:34.000Z","_content":"## 12月18日\n1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;\n2. 协助Neko组完成任务;\n3. 找出spack存在网络原因无法下载时的手动解决方案.","source":"_posts/12月18日工作记录.md","raw":"---\ntitle: 12月18日工作记录\ndate: 2023-12-18 21:57:34\ntags: [日志]\n---\n## 12月18日\n1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;\n2. 协助Neko组完成任务;\n3. 找出spack存在网络原因无法下载时的手动解决方案.","slug":"12月18日工作记录","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0py0004p22ba4hiaw5j","content":"

12月18日

    \n
  1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;
  2. \n
  3. 协助Neko组完成任务;
  4. \n
  5. 找出spack存在网络原因无法下载时的手动解决方案.
  6. \n
\n","excerpt":"","more":"

12月18日

    \n
  1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;
  2. \n
  3. 协助Neko组完成任务;
  4. \n
  5. 找出spack存在网络原因无法下载时的手动解决方案.
  6. \n
\n"},{"title":"12月20日工作记录","date":"2023-12-20T13:56:42.000Z","_content":"## 12月20日\n\nOpenCAEPoro 小组(黄**,梁**,程**)\n\n1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果\n\n> 优化方向基本确定为OpenMP/OpenACC并行化+cuda移植\n\n2. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求\n","source":"_posts/12月20日工作记录.md","raw":"---\ntitle: 12月20日工作记录\ndate: 2023-12-20 21:56:42\ntags: 日志\n---\n## 12月20日\n\nOpenCAEPoro 小组(黄**,梁**,程**)\n\n1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果\n\n> 优化方向基本确定为OpenMP/OpenACC并行化+cuda移植\n\n2. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求\n","slug":"12月20日工作记录","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0py0005p22bc6um14kc","content":"

12月20日

OpenCAEPoro 小组(黄,梁,程**)

\n
    \n
  1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果
  2. \n
\n
\n

优化方向基本确定为OpenMP/OpenACC并行化+cuda移植

\n
\n
    \n
  1. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求
  2. \n
\n","excerpt":"","more":"

12月20日

OpenCAEPoro 小组(黄,梁,程**)

\n
    \n
  1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果
  2. \n
\n
\n

优化方向基本确定为OpenMP/OpenACC并行化+cuda移植

\n
\n
    \n
  1. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求
  2. \n
\n"},{"title":"12月28日进度报告","date":"2023-12-28T15:22:13.000Z","_content":"## 12月28日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果\n2. 继续学习openacc及cuda相关知识\n3. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备\n","source":"_posts/12月28日进度报告.md","raw":"---\ntitle: 12月28日进度报告\ndate: 2023-12-28 23:22:13\ntags: 日志\n---\n## 12月28日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果\n2. 继续学习openacc及cuda相关知识\n3. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备\n","slug":"12月28日进度报告","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0py0006p22bg7b6evz0","content":"

12月28日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果
  2. \n
  3. 继续学习openacc及cuda相关知识
  4. \n
  5. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备
  6. \n
\n","excerpt":"","more":"

12月28日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果
  2. \n
  3. 继续学习openacc及cuda相关知识
  4. \n
  5. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备
  6. \n
\n"},{"title":"12月30-31日进度报告","date":"2023-12-30T16:07:09.000Z","_content":"## 12月30-31日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;\n2. 收集运行数据用于proposal绘制图表;\n3. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.\n","source":"_posts/12月31日进度报告.md","raw":"---\ntitle: 12月30-31日进度报告\ndate: 2023-12-31 00:07:09\ntags: 日志\n---\n## 12月30-31日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;\n2. 收集运行数据用于proposal绘制图表;\n3. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.\n","slug":"12月31日进度报告","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0pz0009p22bgrxx8ce1","content":"

12月30-31日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;
  2. \n
  3. 收集运行数据用于proposal绘制图表;
  4. \n
  5. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.
  6. \n
\n","excerpt":"","more":"

12月30-31日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;
  2. \n
  3. 收集运行数据用于proposal绘制图表;
  4. \n
  5. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.
  6. \n
\n"},{"title":"小满随笔——决断","date":"2025-05-21T11:59:21.000Z","_content":"\n
\n
\n Lost Days of Warmth - Yasunori Mitsuda\n
\n \n
\n\n我本以为自己已经有足够的勇气和平静的心态去面对生活里的各种变故了,即便如此今天还是被突如其来的噩耗痛击得面目全非。\n\n辛辛苦苦和队友准备了大半年的ASC25失利,我想着以后回过头来看也不算什么以最快的速度调整心态;回校后一来就是各种烂摊子,写不完的作业补不完的课程,还有被脑子缺根筋的弱智评委恶意低分的大创立项成绩,我寻思这些事情烦完这阵也就过去了,人总不可能一直倒霉吧。结果就是今天下午排队验收CSAPP课程的shell实验时突然看到了外婆去世的消息,一时间两腿发软大脑空白不知所措,以至于后来排到我和教辅讲解实验过程时也是胡言乱语记不清自己到底说了什么,尽管最后还是被教辅满分放过了。\n\n小时候家里没现在景气,父母在市内打拼我则是被送到郊区被外婆抚养长大,上小学后为了让我进入一中直升班从二年级起我就被送进了奥数培训班,同时搬离了自己长大的地方,再到后来市政府改造,外婆家早已被拆得无影无踪,昔日的小伙伴杳无音信,温馨错杂的小居民区变成了陌生嘈杂的大酒店和菜市场,每次路过都不敢停留。从那以后外婆成了我和童年之间仅剩的联系,尽管老人后来连我的样貌也记不清楚。现如今童年记忆里最后的故人业已离开,再回首已是一片虚无。多年前外婆犯脑溢血被抢救回来的时候医生还承诺老人家活到抱孙子没问题,如今却猝不及防地驾鹤西去。在各种小说和游戏中经历过不少难忘的生死离别,可是到了现实亲自经历依旧痛心疾首难以放下。\n\n生物无法教会人们生命究竟是什么,生活却一点就通。上一次经历这种打击还是10年左右外公离开,那时候太小什么都不懂,等长大理解了经历的时间又足以抹平悲痛。如今在我的眼里,生命就是思念,是世间个体对其他个体的牵挂与个体之间互相建立的羁绊。我真的想停留在永远的当下,和自己爱的人永远定格在某一个瞬间,每天早上是一样的朝阳,出门是熟悉的面孔,回家是亲切的声音。然而活着就意味着必须面对各种苦楚,死去元知万事空,只有离开才是最好的解脱,活着的人要背负更多。长者的时间在一天天减少,他们的生命需要由后人去延续,但是后人的生活也不容易,面对各种困境放弃往往比坚持更加轻松,更有甚者勇敢地选择自戕从而摆脱一切,但是这样是不对的,让其他人代替自己承受痛苦是不对的,令人悲伤的选择是不应该做出的,活着的人哪怕再苦,只要身上背负了其他人的思念也只能继续前进。\n\n因此,我绝对不能气馁,我珍视现在和亲人朋友的点点滴滴,珍惜自己现在拥有的一切,我以最真诚的爱回馈所有爱我的人,不论面前有多少困难,我都会尽全力克服,这不是为我自己,现在我被摧残得只想躺平摆烂,但是为了所有信任我关心我的人,如今我绝对不能停下脚步。从来就没有永远的当下,连接我和童年最后的纽带已经被切断,再也不能回头,留给我的只剩下面前的未来,需要我亲手创造的未来,只有承受住来自各方的打击,我才有能力去维护由我创造的未来,既然选择了远方,便只顾风雨兼程。\n\n2025年的长沙小满格外燥热,痛定思过后的心是如此平静,没有多少时间可以浪费了,无需多言。\n\n*“回首向来萧瑟处,归去,也无风雨也无晴!”*\n","source":"_posts/2025-5-21.md","raw":"---\ntitle: 小满随笔——决断\ndate: 2025-05-21 19:59:21\ntags: 日志\n---\n\n
\n
\n Lost Days of Warmth - Yasunori Mitsuda\n
\n \n
\n\n我本以为自己已经有足够的勇气和平静的心态去面对生活里的各种变故了,即便如此今天还是被突如其来的噩耗痛击得面目全非。\n\n辛辛苦苦和队友准备了大半年的ASC25失利,我想着以后回过头来看也不算什么以最快的速度调整心态;回校后一来就是各种烂摊子,写不完的作业补不完的课程,还有被脑子缺根筋的弱智评委恶意低分的大创立项成绩,我寻思这些事情烦完这阵也就过去了,人总不可能一直倒霉吧。结果就是今天下午排队验收CSAPP课程的shell实验时突然看到了外婆去世的消息,一时间两腿发软大脑空白不知所措,以至于后来排到我和教辅讲解实验过程时也是胡言乱语记不清自己到底说了什么,尽管最后还是被教辅满分放过了。\n\n小时候家里没现在景气,父母在市内打拼我则是被送到郊区被外婆抚养长大,上小学后为了让我进入一中直升班从二年级起我就被送进了奥数培训班,同时搬离了自己长大的地方,再到后来市政府改造,外婆家早已被拆得无影无踪,昔日的小伙伴杳无音信,温馨错杂的小居民区变成了陌生嘈杂的大酒店和菜市场,每次路过都不敢停留。从那以后外婆成了我和童年之间仅剩的联系,尽管老人后来连我的样貌也记不清楚。现如今童年记忆里最后的故人业已离开,再回首已是一片虚无。多年前外婆犯脑溢血被抢救回来的时候医生还承诺老人家活到抱孙子没问题,如今却猝不及防地驾鹤西去。在各种小说和游戏中经历过不少难忘的生死离别,可是到了现实亲自经历依旧痛心疾首难以放下。\n\n生物无法教会人们生命究竟是什么,生活却一点就通。上一次经历这种打击还是10年左右外公离开,那时候太小什么都不懂,等长大理解了经历的时间又足以抹平悲痛。如今在我的眼里,生命就是思念,是世间个体对其他个体的牵挂与个体之间互相建立的羁绊。我真的想停留在永远的当下,和自己爱的人永远定格在某一个瞬间,每天早上是一样的朝阳,出门是熟悉的面孔,回家是亲切的声音。然而活着就意味着必须面对各种苦楚,死去元知万事空,只有离开才是最好的解脱,活着的人要背负更多。长者的时间在一天天减少,他们的生命需要由后人去延续,但是后人的生活也不容易,面对各种困境放弃往往比坚持更加轻松,更有甚者勇敢地选择自戕从而摆脱一切,但是这样是不对的,让其他人代替自己承受痛苦是不对的,令人悲伤的选择是不应该做出的,活着的人哪怕再苦,只要身上背负了其他人的思念也只能继续前进。\n\n因此,我绝对不能气馁,我珍视现在和亲人朋友的点点滴滴,珍惜自己现在拥有的一切,我以最真诚的爱回馈所有爱我的人,不论面前有多少困难,我都会尽全力克服,这不是为我自己,现在我被摧残得只想躺平摆烂,但是为了所有信任我关心我的人,如今我绝对不能停下脚步。从来就没有永远的当下,连接我和童年最后的纽带已经被切断,再也不能回头,留给我的只剩下面前的未来,需要我亲手创造的未来,只有承受住来自各方的打击,我才有能力去维护由我创造的未来,既然选择了远方,便只顾风雨兼程。\n\n2025年的长沙小满格外燥热,痛定思过后的心是如此平静,没有多少时间可以浪费了,无需多言。\n\n*“回首向来萧瑟处,归去,也无风雨也无晴!”*\n","slug":"2025-5-21","published":1,"updated":"2025-05-21T13:34:43.639Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0pz000bp22bbjfv42c1","content":"
\n
\n Lost Days of Warmth - Yasunori Mitsuda\n
\n \n
\n\n

我本以为自己已经有足够的勇气和平静的心态去面对生活里的各种变故了,即便如此今天还是被突如其来的噩耗痛击得面目全非。

\n

辛辛苦苦和队友准备了大半年的ASC25失利,我想着以后回过头来看也不算什么以最快的速度调整心态;回校后一来就是各种烂摊子,写不完的作业补不完的课程,还有被脑子缺根筋的弱智评委恶意低分的大创立项成绩,我寻思这些事情烦完这阵也就过去了,人总不可能一直倒霉吧。结果就是今天下午排队验收CSAPP课程的shell实验时突然看到了外婆去世的消息,一时间两腿发软大脑空白不知所措,以至于后来排到我和教辅讲解实验过程时也是胡言乱语记不清自己到底说了什么,尽管最后还是被教辅满分放过了。

\n

小时候家里没现在景气,父母在市内打拼我则是被送到郊区被外婆抚养长大,上小学后为了让我进入一中直升班从二年级起我就被送进了奥数培训班,同时搬离了自己长大的地方,再到后来市政府改造,外婆家早已被拆得无影无踪,昔日的小伙伴杳无音信,温馨错杂的小居民区变成了陌生嘈杂的大酒店和菜市场,每次路过都不敢停留。从那以后外婆成了我和童年之间仅剩的联系,尽管老人后来连我的样貌也记不清楚。现如今童年记忆里最后的故人业已离开,再回首已是一片虚无。多年前外婆犯脑溢血被抢救回来的时候医生还承诺老人家活到抱孙子没问题,如今却猝不及防地驾鹤西去。在各种小说和游戏中经历过不少难忘的生死离别,可是到了现实亲自经历依旧痛心疾首难以放下。

\n

生物无法教会人们生命究竟是什么,生活却一点就通。上一次经历这种打击还是10年左右外公离开,那时候太小什么都不懂,等长大理解了经历的时间又足以抹平悲痛。如今在我的眼里,生命就是思念,是世间个体对其他个体的牵挂与个体之间互相建立的羁绊。我真的想停留在永远的当下,和自己爱的人永远定格在某一个瞬间,每天早上是一样的朝阳,出门是熟悉的面孔,回家是亲切的声音。然而活着就意味着必须面对各种苦楚,死去元知万事空,只有离开才是最好的解脱,活着的人要背负更多。长者的时间在一天天减少,他们的生命需要由后人去延续,但是后人的生活也不容易,面对各种困境放弃往往比坚持更加轻松,更有甚者勇敢地选择自戕从而摆脱一切,但是这样是不对的,让其他人代替自己承受痛苦是不对的,令人悲伤的选择是不应该做出的,活着的人哪怕再苦,只要身上背负了其他人的思念也只能继续前进。

\n

因此,我绝对不能气馁,我珍视现在和亲人朋友的点点滴滴,珍惜自己现在拥有的一切,我以最真诚的爱回馈所有爱我的人,不论面前有多少困难,我都会尽全力克服,这不是为我自己,现在我被摧残得只想躺平摆烂,但是为了所有信任我关心我的人,如今我绝对不能停下脚步。从来就没有永远的当下,连接我和童年最后的纽带已经被切断,再也不能回头,留给我的只剩下面前的未来,需要我亲手创造的未来,只有承受住来自各方的打击,我才有能力去维护由我创造的未来,既然选择了远方,便只顾风雨兼程。

\n

2025年的长沙小满格外燥热,痛定思过后的心是如此平静,没有多少时间可以浪费了,无需多言。

\n

“回首向来萧瑟处,归去,也无风雨也无晴!”

\n","excerpt":"","more":"
\n
\n Lost Days of Warmth - Yasunori Mitsuda\n
\n \n
\n\n

我本以为自己已经有足够的勇气和平静的心态去面对生活里的各种变故了,即便如此今天还是被突如其来的噩耗痛击得面目全非。

\n

辛辛苦苦和队友准备了大半年的ASC25失利,我想着以后回过头来看也不算什么以最快的速度调整心态;回校后一来就是各种烂摊子,写不完的作业补不完的课程,还有被脑子缺根筋的弱智评委恶意低分的大创立项成绩,我寻思这些事情烦完这阵也就过去了,人总不可能一直倒霉吧。结果就是今天下午排队验收CSAPP课程的shell实验时突然看到了外婆去世的消息,一时间两腿发软大脑空白不知所措,以至于后来排到我和教辅讲解实验过程时也是胡言乱语记不清自己到底说了什么,尽管最后还是被教辅满分放过了。

\n

小时候家里没现在景气,父母在市内打拼我则是被送到郊区被外婆抚养长大,上小学后为了让我进入一中直升班从二年级起我就被送进了奥数培训班,同时搬离了自己长大的地方,再到后来市政府改造,外婆家早已被拆得无影无踪,昔日的小伙伴杳无音信,温馨错杂的小居民区变成了陌生嘈杂的大酒店和菜市场,每次路过都不敢停留。从那以后外婆成了我和童年之间仅剩的联系,尽管老人后来连我的样貌也记不清楚。现如今童年记忆里最后的故人业已离开,再回首已是一片虚无。多年前外婆犯脑溢血被抢救回来的时候医生还承诺老人家活到抱孙子没问题,如今却猝不及防地驾鹤西去。在各种小说和游戏中经历过不少难忘的生死离别,可是到了现实亲自经历依旧痛心疾首难以放下。

\n

生物无法教会人们生命究竟是什么,生活却一点就通。上一次经历这种打击还是10年左右外公离开,那时候太小什么都不懂,等长大理解了经历的时间又足以抹平悲痛。如今在我的眼里,生命就是思念,是世间个体对其他个体的牵挂与个体之间互相建立的羁绊。我真的想停留在永远的当下,和自己爱的人永远定格在某一个瞬间,每天早上是一样的朝阳,出门是熟悉的面孔,回家是亲切的声音。然而活着就意味着必须面对各种苦楚,死去元知万事空,只有离开才是最好的解脱,活着的人要背负更多。长者的时间在一天天减少,他们的生命需要由后人去延续,但是后人的生活也不容易,面对各种困境放弃往往比坚持更加轻松,更有甚者勇敢地选择自戕从而摆脱一切,但是这样是不对的,让其他人代替自己承受痛苦是不对的,令人悲伤的选择是不应该做出的,活着的人哪怕再苦,只要身上背负了其他人的思念也只能继续前进。

\n

因此,我绝对不能气馁,我珍视现在和亲人朋友的点点滴滴,珍惜自己现在拥有的一切,我以最真诚的爱回馈所有爱我的人,不论面前有多少困难,我都会尽全力克服,这不是为我自己,现在我被摧残得只想躺平摆烂,但是为了所有信任我关心我的人,如今我绝对不能停下脚步。从来就没有永远的当下,连接我和童年最后的纽带已经被切断,再也不能回头,留给我的只剩下面前的未来,需要我亲手创造的未来,只有承受住来自各方的打击,我才有能力去维护由我创造的未来,既然选择了远方,便只顾风雨兼程。

\n

2025年的长沙小满格外燥热,痛定思过后的心是如此平静,没有多少时间可以浪费了,无需多言。

\n

“回首向来萧瑟处,归去,也无风雨也无晴!”

\n"},{"title":"博客更新记录","date":"2024-11-04T15:18:02.000Z","_content":"\n- 博客主题更新为 `Fluid` 主题,原主题为 `Next`\n- 更新了访问地址为 `https://blog.hifuu.ink`\n- 新增了 `About` 页面\n- 新增了 `友链` 页面\n- 完善页面布局\n","source":"_posts/BlogUpdate.md","raw":"---\ntitle: 博客更新记录\ndate: 2024-11-04 23:18:02\ntags: 日志\ncategories: 更新\n---\n\n- 博客主题更新为 `Fluid` 主题,原主题为 `Next`\n- 更新了访问地址为 `https://blog.hifuu.ink`\n- 新增了 `About` 页面\n- 新增了 `友链` 页面\n- 完善页面布局\n","slug":"BlogUpdate","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q0000ep22b165ba4w7","content":"
    \n
  • 博客主题更新为 Fluid 主题,原主题为 Next
  • \n
  • 更新了访问地址为 https://blog.hifuu.ink
  • \n
  • 新增了 About 页面
  • \n
  • 新增了 友链 页面
  • \n
  • 完善页面布局
  • \n
\n","excerpt":"","more":"
    \n
  • 博客主题更新为 Fluid 主题,原主题为 Next
  • \n
  • 更新了访问地址为 https://blog.hifuu.ink
  • \n
  • 新增了 About 页面
  • \n
  • 新增了 友链 页面
  • \n
  • 完善页面布局
  • \n
\n"},{"title":"Welcome to CGH0S7's Blog","date":"2023-12-06T08:33:30.000Z","_content":"\nHello World !\n","source":"_posts/CGH0S7-s-Blog.md","raw":"---\ntitle: Welcome to CGH0S7's Blog \ndate: 2023-12-06 16:33:30\ntags: TEST\n---\n\nHello World !\n","slug":"CGH0S7-s-Blog","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q0000gp22b315z7q3g","content":"

Hello World !

\n","excerpt":"","more":"

Hello World !

\n"},{"title":"Gentle Jena","date":"2024-10-30T14:11:14.000Z","_content":"\n很喜欢的一首曲子\n顺便测试一下视频上传\n以后随缘更新各种乱七八糟的东西。。\n\n\n","source":"_posts/GentleJena.md","raw":"---\ntitle: Gentle Jena\ndate: 2024-10-30 22:11:14\ntags: 音乐\ncategories: Rearrangement\n---\n\n很喜欢的一首曲子\n顺便测试一下视频上传\n以后随缘更新各种乱七八糟的东西。。\n\n\n","slug":"GentleJena","published":1,"updated":"2025-02-23T17:14:31.930Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q1000jp22ba8qr4jxp","content":"

很喜欢的一首曲子
顺便测试一下视频上传
以后随缘更新各种乱七八糟的东西。。

\n\n","excerpt":"","more":"

很喜欢的一首曲子
顺便测试一下视频上传
以后随缘更新各种乱七八糟的东西。。

\n\n"},{"title":"Vocaloid调教-晴天(洛天依V4)","date":"2024-11-04T13:52:59.000Z","_content":"\n其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。\n\n“故事的小黄花,从出生那年就飘着...”\n\n{% raw %}\n\n{% endraw %}\n\n","source":"_posts/Vocaloid调教-晴天.md","raw":"---\ntitle: Vocaloid调教-晴天(洛天依v4)\ndate: 2024-11-04 21:52:59\ntags: [Vocaloid, 音乐]\ncategories: [Vocaloid]\n---\n\n其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。\n\n“故事的小黄花,从出生那年就飘着...”\n\n{% raw %}\n\n{% endraw %}\n\n","slug":"Vocaloid调教-晴天","published":1,"updated":"2025-02-25T00:19:05.940Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q1000mp22b0a2hee98","content":"

其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。

\n

“故事的小黄花,从出生那年就飘着…”

\n\n\n\n\n","excerpt":"","more":"

其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。

\n

“故事的小黄花,从出生那年就飘着…”

\n\n\n\n\n"},{"title":"Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北","date":"2024-11-06T02:02:04.000Z","_content":"本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。\n\n![Nvidia设置示意图](/images/5364bba6d035326e82c53504dd53e7c2454454985.png)\n\n### 适用系统\n\n对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:\n\n- Nvidia 驱动已安装,`nvidia-smi` 输出正常\n- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显\n- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象\n\n这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。\n\n---\n\n## 配置 X11 下的 Nvidia 显卡优先\n\n可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:\n\n```bash\nsudo nvidia-xconfig --prime\n```\n\n该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。\n\n![X11 Nvidia配置](/images/1613f5602b203b38230f19699deb0219454454985.png)\n\n---\n\n## 配置 Wayland 下的 Nvidia 显卡优先\n\n在 Wayland 下优先启用 Nvidia 显卡的步骤如下:\n\n1. 编辑 **GRUB 配置**文件:\n\n 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=\"\"` 中添加 `nvidia_drm.modeset=1`:\n\n ```bash\n GRUB_CMDLINE_LINUX_DEFAULT=\"nvidia_drm.modeset=1\"\n ```\n\n2. 重新生成 grub 配置:\n\n ```bash\n sudo grub-mkconfig -o /boot/grub/grub.cfg\n ```\n\n3. 配置 **Plasma 环境**文件:\n\n 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容:\n\n ```bash\n #!/bin/bash \n export __NV_PRIME_RENDER_OFFLOAD=1 \n export __GLX_VENDOR_LIBRARY_NAME=nvidia\n ```\n\n4. 保存并重启电脑,即可生效。\n\n![Wayland Nvidia配置](/images/b2054bbaf6197624d38cc2007d885fd1454454985.png)\n\n---\n\n## I+N 混合显卡方案\n\n如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。\n\n### 配置步骤\n\n1. 打开程序的 `.desktop` 启动文件:\n\n 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。\n\n2. 在 `Exec=` 后添加 `prime-run` 参数。例如:\n\n ```text\n Exec=prime-run <程序启动命令>\n ```\n\n ![混合显卡配置示意图](/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png)\n\n### Vim 快捷配置\n\n如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`:\n\n```vim\nv -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter\n```\n\n---\n\n## 让 Plasma 桌面也使用独显\n\n如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:\n\n```bash\n#!/bin/bash \nexport __GLX_VENDOR_LIBRARY_NAME=nvidia\n```\n\n这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。\n\n---\n\n希望以上经验能为有此需求的用户提供参考帮助。\n","source":"_posts/arch-nvidia.md","raw":"---\ntitle: Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北\ndate: 2024-11-06 10:02:04\ntags: 技术\ncategories: [技术分享]\n---\n本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。\n\n![Nvidia设置示意图](/images/5364bba6d035326e82c53504dd53e7c2454454985.png)\n\n### 适用系统\n\n对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:\n\n- Nvidia 驱动已安装,`nvidia-smi` 输出正常\n- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显\n- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象\n\n这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。\n\n---\n\n## 配置 X11 下的 Nvidia 显卡优先\n\n可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:\n\n```bash\nsudo nvidia-xconfig --prime\n```\n\n该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。\n\n![X11 Nvidia配置](/images/1613f5602b203b38230f19699deb0219454454985.png)\n\n---\n\n## 配置 Wayland 下的 Nvidia 显卡优先\n\n在 Wayland 下优先启用 Nvidia 显卡的步骤如下:\n\n1. 编辑 **GRUB 配置**文件:\n\n 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=\"\"` 中添加 `nvidia_drm.modeset=1`:\n\n ```bash\n GRUB_CMDLINE_LINUX_DEFAULT=\"nvidia_drm.modeset=1\"\n ```\n\n2. 重新生成 grub 配置:\n\n ```bash\n sudo grub-mkconfig -o /boot/grub/grub.cfg\n ```\n\n3. 配置 **Plasma 环境**文件:\n\n 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容:\n\n ```bash\n #!/bin/bash \n export __NV_PRIME_RENDER_OFFLOAD=1 \n export __GLX_VENDOR_LIBRARY_NAME=nvidia\n ```\n\n4. 保存并重启电脑,即可生效。\n\n![Wayland Nvidia配置](/images/b2054bbaf6197624d38cc2007d885fd1454454985.png)\n\n---\n\n## I+N 混合显卡方案\n\n如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。\n\n### 配置步骤\n\n1. 打开程序的 `.desktop` 启动文件:\n\n 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。\n\n2. 在 `Exec=` 后添加 `prime-run` 参数。例如:\n\n ```text\n Exec=prime-run <程序启动命令>\n ```\n\n ![混合显卡配置示意图](/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png)\n\n### Vim 快捷配置\n\n如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`:\n\n```vim\nv -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter\n```\n\n---\n\n## 让 Plasma 桌面也使用独显\n\n如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:\n\n```bash\n#!/bin/bash \nexport __GLX_VENDOR_LIBRARY_NAME=nvidia\n```\n\n这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。\n\n---\n\n希望以上经验能为有此需求的用户提供参考帮助。\n","slug":"arch-nvidia","published":1,"updated":"2025-02-02T11:21:35.673Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q2000op22b0gq70sf7","content":"

本文将介绍在 X11Wayland 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。首先,请确保您已经正确安装了 Nvidia 驱动(如果非 Mainline 内核,请使用 nvidia-dkmsnvidia-open-dkms 版本)。

\n

\"Nvidia设置示意图\"

\n

适用系统

对于 CachyOSEndeavourOS 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:

\n
    \n
  • Nvidia 驱动已安装,nvidia-smi 输出正常
  • \n
  • KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显
  • \n
  • 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象
  • \n
\n

这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。

\n
\n

配置 X11 下的 Nvidia 显卡优先

可以通过配置 /etc/X11/xorg.conf 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:

\n
1
sudo nvidia-xconfig --prime
\n\n

该命令会根据硬件情况自动生成配置文件。执行后 重新登录会话 即可生效(即使是 Wayland 用户也可以执行一次此命令)。

\n

\"X11

\n
\n

配置 Wayland 下的 Nvidia 显卡优先

在 Wayland 下优先启用 Nvidia 显卡的步骤如下:

\n
    \n
  1. 编辑 GRUB 配置文件:

    \n

    打开 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT="" 中添加 nvidia_drm.modeset=1

    \n
    1
    GRUB_CMDLINE_LINUX_DEFAULT="nvidia_drm.modeset=1"
    \n
  2. \n
  3. 重新生成 grub 配置:

    \n
    1
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    \n
  4. \n
  5. 配置 Plasma 环境文件:

    \n

    ~/.config/plasma-workspace/env/nvidia.sh 中写入以下内容:

    \n
    1
    2
    3
    #!/bin/bash 
    export __NV_PRIME_RENDER_OFFLOAD=1
    export __GLX_VENDOR_LIBRARY_NAME=nvidia
    \n
  6. \n
  7. 保存并重启电脑,即可生效。

    \n
  8. \n
\n

\"Wayland

\n
\n

I+N 混合显卡方案

如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。

\n

配置步骤

    \n
  1. 打开程序的 .desktop 启动文件:

    \n

    位置可能在 /usr/share/applications~/.local/share/applications 中。

    \n
  2. \n
  3. Exec= 后添加 prime-run 参数。例如:

    \n
    1
    Exec=prime-run <程序启动命令>
    \n\n

    \"混合显卡配置示意图\"

    \n
  4. \n
\n

Vim 快捷配置

如果使用 Vim,可以使用以下快捷键快速批量替换 Exec=Exec=prime-run

\n
1
v -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter
\n\n
\n

让 Plasma 桌面也使用独显

如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:

\n
1
2
#!/bin/bash 
export __GLX_VENDOR_LIBRARY_NAME=nvidia
\n\n

这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。

\n
\n

希望以上经验能为有此需求的用户提供参考帮助。

\n","excerpt":"","more":"

本文将介绍在 X11Wayland 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。首先,请确保您已经正确安装了 Nvidia 驱动(如果非 Mainline 内核,请使用 nvidia-dkmsnvidia-open-dkms 版本)。

\n

\"Nvidia设置示意图\"

\n

适用系统

对于 CachyOSEndeavourOS 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:

\n
    \n
  • Nvidia 驱动已安装,nvidia-smi 输出正常
  • \n
  • KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显
  • \n
  • 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象
  • \n
\n

这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。

\n
\n

配置 X11 下的 Nvidia 显卡优先

可以通过配置 /etc/X11/xorg.conf 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:

\n
1
sudo nvidia-xconfig --prime
\n\n

该命令会根据硬件情况自动生成配置文件。执行后 重新登录会话 即可生效(即使是 Wayland 用户也可以执行一次此命令)。

\n

\"X11

\n
\n

配置 Wayland 下的 Nvidia 显卡优先

在 Wayland 下优先启用 Nvidia 显卡的步骤如下:

\n
    \n
  1. 编辑 GRUB 配置文件:

    \n

    打开 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT="" 中添加 nvidia_drm.modeset=1

    \n
    1
    GRUB_CMDLINE_LINUX_DEFAULT="nvidia_drm.modeset=1"
    \n
  2. \n
  3. 重新生成 grub 配置:

    \n
    1
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    \n
  4. \n
  5. 配置 Plasma 环境文件:

    \n

    ~/.config/plasma-workspace/env/nvidia.sh 中写入以下内容:

    \n
    1
    2
    3
    #!/bin/bash 
    export __NV_PRIME_RENDER_OFFLOAD=1
    export __GLX_VENDOR_LIBRARY_NAME=nvidia
    \n
  6. \n
  7. 保存并重启电脑,即可生效。

    \n
  8. \n
\n

\"Wayland

\n
\n

I+N 混合显卡方案

如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。

\n

配置步骤

    \n
  1. 打开程序的 .desktop 启动文件:

    \n

    位置可能在 /usr/share/applications~/.local/share/applications 中。

    \n
  2. \n
  3. Exec= 后添加 prime-run 参数。例如:

    \n
    1
    Exec=prime-run <程序启动命令>
    \n\n

    \"混合显卡配置示意图\"

    \n
  4. \n
\n

Vim 快捷配置

如果使用 Vim,可以使用以下快捷键快速批量替换 Exec=Exec=prime-run

\n
1
v -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter
\n\n
\n

让 Plasma 桌面也使用独显

如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:

\n
1
2
#!/bin/bash 
export __GLX_VENDOR_LIBRARY_NAME=nvidia
\n\n

这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。

\n
\n

希望以上经验能为有此需求的用户提供参考帮助。

\n"},{"title":"Archlinux问题记录","date":"2025-03-10T14:47:08.000Z","_content":"\n前几周在使用 Arch Linux 时遇到了两个有趣的问题,顺手记录在此,或许能帮到有类似困扰的朋友~\n\n---\n\n### 1. 显卡功耗上限解锁\n**问题现象** \n使用 `nvidia-smi` 查看显卡功耗时,发现最大功耗被限制在 55W,性能无法完全释放:\n\n```bash\nnvidia-smi # 输出显示 Power Limit: 55.00 W\n```\n\n**解决方案** \n启用 NVIDIA 动态功耗管理服务即可:\n```bash\nsudo systemctl enable --now nvidia-powerd\n```\n\n---\n\n### 2. Steam Proton 输入失效\n**问题描述** \n使用 proton-cachyos 和 proton-ge-custom 版本时,Steam 游戏无法接收任何输入(键盘/手柄)。 \n⚠️ 经排查发现是 Wayland 协议兼容性问题导致。\n\n**解决方案** \n在 Steam 游戏启动选项中加入环境变量禁用 Wayland:\n```bash\nPROTON_ENABLE_WAYLAND=0 %command%\n```\n\n---\n\n","source":"_posts/archlinux-game-fix.md","raw":"---\ntitle: Archlinux问题记录\ndate: 2025-03-10 22:47:08\ntags: [生活, Archlinux]\n---\n\n前几周在使用 Arch Linux 时遇到了两个有趣的问题,顺手记录在此,或许能帮到有类似困扰的朋友~\n\n---\n\n### 1. 显卡功耗上限解锁\n**问题现象** \n使用 `nvidia-smi` 查看显卡功耗时,发现最大功耗被限制在 55W,性能无法完全释放:\n\n```bash\nnvidia-smi # 输出显示 Power Limit: 55.00 W\n```\n\n**解决方案** \n启用 NVIDIA 动态功耗管理服务即可:\n```bash\nsudo systemctl enable --now nvidia-powerd\n```\n\n---\n\n### 2. Steam Proton 输入失效\n**问题描述** \n使用 proton-cachyos 和 proton-ge-custom 版本时,Steam 游戏无法接收任何输入(键盘/手柄)。 \n⚠️ 经排查发现是 Wayland 协议兼容性问题导致。\n\n**解决方案** \n在 Steam 游戏启动选项中加入环境变量禁用 Wayland:\n```bash\nPROTON_ENABLE_WAYLAND=0 %command%\n```\n\n---\n\n","slug":"archlinux-game-fix","published":1,"updated":"2025-03-10T14:54:16.788Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q2000rp22bgtkodqs6","content":"

前几周在使用 Arch Linux 时遇到了两个有趣的问题,顺手记录在此,或许能帮到有类似困扰的朋友~

\n
\n

1. 显卡功耗上限解锁

问题现象
使用 nvidia-smi 查看显卡功耗时,发现最大功耗被限制在 55W,性能无法完全释放:

\n
1
nvidia-smi  # 输出显示 Power Limit: 55.00 W
\n\n

解决方案
启用 NVIDIA 动态功耗管理服务即可:

\n
1
sudo systemctl enable --now nvidia-powerd
\n\n
\n

2. Steam Proton 输入失效

问题描述
使用 proton-cachyos 和 proton-ge-custom 版本时,Steam 游戏无法接收任何输入(键盘/手柄)。
⚠️ 经排查发现是 Wayland 协议兼容性问题导致。

\n

解决方案
在 Steam 游戏启动选项中加入环境变量禁用 Wayland:

\n
1
PROTON_ENABLE_WAYLAND=0 %command%
\n\n
\n","excerpt":"","more":"

前几周在使用 Arch Linux 时遇到了两个有趣的问题,顺手记录在此,或许能帮到有类似困扰的朋友~

\n
\n

1. 显卡功耗上限解锁

问题现象
使用 nvidia-smi 查看显卡功耗时,发现最大功耗被限制在 55W,性能无法完全释放:

\n
1
nvidia-smi  # 输出显示 Power Limit: 55.00 W
\n\n

解决方案
启用 NVIDIA 动态功耗管理服务即可:

\n
1
sudo systemctl enable --now nvidia-powerd
\n\n
\n

2. Steam Proton 输入失效

问题描述
使用 proton-cachyos 和 proton-ge-custom 版本时,Steam 游戏无法接收任何输入(键盘/手柄)。
⚠️ 经排查发现是 Wayland 协议兼容性问题导致。

\n

解决方案
在 Steam 游戏启动选项中加入环境变量禁用 Wayland:

\n
1
PROTON_ENABLE_WAYLAND=0 %command%
\n\n
\n"},{"title":"Archlinux KDE体验优化总结","date":"2025-02-02T10:43:26.000Z","_content":"\n打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验\n\n本文章长期更新\n\n------\n\n## 更换CachyOS优化仓库\n\n![CachyOS Logo](https://wiki.cachyos.org/_astro/logo.DVTdAJi6.svg) \n通过 CachyOS 优化仓库获取 CPU 指令集级优化(x86-64-v3/v4/zen4)的软件包,提升 Arch Linux 系统性能。该仓库提供 PGO/LTO/BOLT 编译优化及持续维护的定制软件包。\n\n---\n\n### ▎前置准备\n**⚠️ 兼容性警告** \n1. 可以先通过命令`/usr/lib64/ld-linux-x86-64.so.2 --help | grep -i x86-64-`来查看你的处理器支持等级。\n2. 注意添加 `cachyos` 主仓库会替换官方 pacman 仓库(含 INSTALLED_FROM 等特性) \n ```bash\n cachyos-v3 # AVX2 优化\n cachyos-v4 # AVX512 优化\n cachyos-extra # 扩展软件包\n ```\n3. CachyOS官方在前段时间专门推出了针对 AMD 的Zen4和Zen5架构优化仓库,如有需要可以[点击这里](https://discuss.cachyos.org/t/zen-4-5-optimized-repository-testing/713/7)查看如何部署。\n\n---\n\n### ▎仓库配置流程\n#### ▶ 自动配置脚本\n```bash\n# 下载配置工具\ncurl -LO https://mirror.cachyos.org/cachyos-repo.tar.xz\ntar xvf cachyos-repo.tar.xz && cd cachyos-repo\n\n# 执行自动配置(自动检测 CPU 指令集)\nsudo ./cachyos-repo.sh\n```\n📌 脚本特性: \n- 自动备份 `/etc/pacman.conf` \n- 智能匹配最优指令集版本 (v3/v4) \n- 支持 x86_64 和 aarch64 架构 \n\n#### ▶ 手动配置方式\n1. 编辑 pacman.conf\n```ini\n# 在 /etc/pacman.conf 末尾添加(示例为 AVX2 优化)\n[cachyos-v3]\nSigLevel = Optional TrustAll\nInclude = /etc/pacman.d/cachyos-v3\n```\n\n2. ✅同步仓库数据库\n```bash\nsudo pacman -Syu\n```\n\n---\n\n### ▎仓库卸载方法\n#### ▶ 自动卸载\n```bash\ncd cachyos-repo\nsudo ./cachyos-repo.sh --remove\n```\n\n#### ▶ 手动卸载\n1. 删除 pacman.conf 中的 cachyos 仓库段\n2. 移除配置文件\n```bash\nsudo rm -rf /etc/pacman.d/cachyos*\n```\n---\n\n## 内核更换\n\n## KDE 配置\n\n\n\n","source":"_posts/archlinux-optimization.md","raw":"---\ntitle: Archlinux KDE体验优化总结\ndate: 2025-02-02 18:43:26\ntags: [Archlinux, 系统优化, 技术分享]\n---\n\n打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验\n\n本文章长期更新\n\n------\n\n## 更换CachyOS优化仓库\n\n![CachyOS Logo](https://wiki.cachyos.org/_astro/logo.DVTdAJi6.svg) \n通过 CachyOS 优化仓库获取 CPU 指令集级优化(x86-64-v3/v4/zen4)的软件包,提升 Arch Linux 系统性能。该仓库提供 PGO/LTO/BOLT 编译优化及持续维护的定制软件包。\n\n---\n\n### ▎前置准备\n**⚠️ 兼容性警告** \n1. 可以先通过命令`/usr/lib64/ld-linux-x86-64.so.2 --help | grep -i x86-64-`来查看你的处理器支持等级。\n2. 注意添加 `cachyos` 主仓库会替换官方 pacman 仓库(含 INSTALLED_FROM 等特性) \n ```bash\n cachyos-v3 # AVX2 优化\n cachyos-v4 # AVX512 优化\n cachyos-extra # 扩展软件包\n ```\n3. CachyOS官方在前段时间专门推出了针对 AMD 的Zen4和Zen5架构优化仓库,如有需要可以[点击这里](https://discuss.cachyos.org/t/zen-4-5-optimized-repository-testing/713/7)查看如何部署。\n\n---\n\n### ▎仓库配置流程\n#### ▶ 自动配置脚本\n```bash\n# 下载配置工具\ncurl -LO https://mirror.cachyos.org/cachyos-repo.tar.xz\ntar xvf cachyos-repo.tar.xz && cd cachyos-repo\n\n# 执行自动配置(自动检测 CPU 指令集)\nsudo ./cachyos-repo.sh\n```\n📌 脚本特性: \n- 自动备份 `/etc/pacman.conf` \n- 智能匹配最优指令集版本 (v3/v4) \n- 支持 x86_64 和 aarch64 架构 \n\n#### ▶ 手动配置方式\n1. 编辑 pacman.conf\n```ini\n# 在 /etc/pacman.conf 末尾添加(示例为 AVX2 优化)\n[cachyos-v3]\nSigLevel = Optional TrustAll\nInclude = /etc/pacman.d/cachyos-v3\n```\n\n2. ✅同步仓库数据库\n```bash\nsudo pacman -Syu\n```\n\n---\n\n### ▎仓库卸载方法\n#### ▶ 自动卸载\n```bash\ncd cachyos-repo\nsudo ./cachyos-repo.sh --remove\n```\n\n#### ▶ 手动卸载\n1. 删除 pacman.conf 中的 cachyos 仓库段\n2. 移除配置文件\n```bash\nsudo rm -rf /etc/pacman.d/cachyos*\n```\n---\n\n## 内核更换\n\n## KDE 配置\n\n\n\n","slug":"archlinux-optimization","published":1,"updated":"2025-03-10T15:07:26.618Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q3000up22bhurb7l9n","content":"

打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验

\n

本文章长期更新

\n
\n

更换CachyOS优化仓库

\"CachyOS
通过 CachyOS 优化仓库获取 CPU 指令集级优化(x86-64-v3/v4/zen4)的软件包,提升 Arch Linux 系统性能。该仓库提供 PGO/LTO/BOLT 编译优化及持续维护的定制软件包。

\n
\n

▎前置准备

⚠️ 兼容性警告

\n
    \n
  1. 可以先通过命令/usr/lib64/ld-linux-x86-64.so.2 --help | grep -i x86-64-来查看你的处理器支持等级。
  2. \n
  3. 注意添加 cachyos 主仓库会替换官方 pacman 仓库(含 INSTALLED_FROM 等特性)
    1
    2
    3
    cachyos-v3    # AVX2 优化
    cachyos-v4 # AVX512 优化
    cachyos-extra # 扩展软件包
  4. \n
  5. CachyOS官方在前段时间专门推出了针对 AMD 的Zen4和Zen5架构优化仓库,如有需要可以点击这里查看如何部署。
  6. \n
\n
\n

▎仓库配置流程

▶ 自动配置脚本

1
2
3
4
5
6
# 下载配置工具
curl -LO https://mirror.cachyos.org/cachyos-repo.tar.xz
tar xvf cachyos-repo.tar.xz && cd cachyos-repo

# 执行自动配置(自动检测 CPU 指令集)
sudo ./cachyos-repo.sh
\n

📌 脚本特性:

\n
    \n
  • 自动备份 /etc/pacman.conf
  • \n
  • 智能匹配最优指令集版本 (v3/v4)
  • \n
  • 支持 x86_64 和 aarch64 架构
  • \n
\n

▶ 手动配置方式

    \n
  1. 编辑 pacman.conf

    \n
    1
    2
    3
    4
    # 在 /etc/pacman.conf 末尾添加(示例为 AVX2 优化)
    [cachyos-v3]
    SigLevel = Optional TrustAll
    Include = /etc/pacman.d/cachyos-v3
    \n
  2. \n
  3. ✅同步仓库数据库

    \n
    1
    sudo pacman -Syu
  4. \n
\n
\n

▎仓库卸载方法

▶ 自动卸载

1
2
cd cachyos-repo
sudo ./cachyos-repo.sh --remove
\n\n

▶ 手动卸载

    \n
  1. 删除 pacman.conf 中的 cachyos 仓库段
  2. \n
  3. 移除配置文件
    1
    sudo rm -rf /etc/pacman.d/cachyos*
  4. \n
\n
\n

内核更换

KDE 配置

","excerpt":"","more":"

打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验

\n

本文章长期更新

\n
\n

更换CachyOS优化仓库

\"CachyOS
通过 CachyOS 优化仓库获取 CPU 指令集级优化(x86-64-v3/v4/zen4)的软件包,提升 Arch Linux 系统性能。该仓库提供 PGO/LTO/BOLT 编译优化及持续维护的定制软件包。

\n
\n

▎前置准备

⚠️ 兼容性警告

\n
    \n
  1. 可以先通过命令/usr/lib64/ld-linux-x86-64.so.2 --help | grep -i x86-64-来查看你的处理器支持等级。
  2. \n
  3. 注意添加 cachyos 主仓库会替换官方 pacman 仓库(含 INSTALLED_FROM 等特性)
    1
    2
    3
    cachyos-v3    # AVX2 优化
    cachyos-v4 # AVX512 优化
    cachyos-extra # 扩展软件包
  4. \n
  5. CachyOS官方在前段时间专门推出了针对 AMD 的Zen4和Zen5架构优化仓库,如有需要可以点击这里查看如何部署。
  6. \n
\n
\n

▎仓库配置流程

▶ 自动配置脚本

1
2
3
4
5
6
# 下载配置工具
curl -LO https://mirror.cachyos.org/cachyos-repo.tar.xz
tar xvf cachyos-repo.tar.xz && cd cachyos-repo

# 执行自动配置(自动检测 CPU 指令集)
sudo ./cachyos-repo.sh
\n

📌 脚本特性:

\n
    \n
  • 自动备份 /etc/pacman.conf
  • \n
  • 智能匹配最优指令集版本 (v3/v4)
  • \n
  • 支持 x86_64 和 aarch64 架构
  • \n
\n

▶ 手动配置方式

    \n
  1. 编辑 pacman.conf

    \n
    1
    2
    3
    4
    # 在 /etc/pacman.conf 末尾添加(示例为 AVX2 优化)
    [cachyos-v3]
    SigLevel = Optional TrustAll
    Include = /etc/pacman.d/cachyos-v3
    \n
  2. \n
  3. ✅同步仓库数据库

    \n
    1
    sudo pacman -Syu
  4. \n
\n
\n

▎仓库卸载方法

▶ 自动卸载

1
2
cd cachyos-repo
sudo ./cachyos-repo.sh --remove
\n\n

▶ 手动卸载

    \n
  1. 删除 pacman.conf 中的 cachyos 仓库段
  2. \n
  3. 移除配置文件
    1
    sudo rm -rf /etc/pacman.d/cachyos*
  4. \n
\n
\n

内核更换

KDE 配置

"},{"title":"使用Clonezilla备份和克隆系统","date":"2025-02-23T13:40:03.000Z","_content":"![Clonezilla官网](/images/clonezilla.png)\n[Clonezilla](https://clonezilla.org/)是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。\n\n---\n### **零.事前准备**:\n - 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。\n - 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。\n\n\n### **一.备份镜像到硬盘(Device-to-Image)**\n这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。\n\n#### **步骤说明**:\n2. **启动Clonezilla**:\n - 插入U盘,重启电脑并从U盘启动。\n - 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。\n\n3. **选择备份模式**:\n ```plaintext\n Choose mode: 选择 \"device-image\"(设备到镜像)\n Mount storage media: 选择 \"local_dev\"(本地存储设备)\n ```\n - 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 `/dev/sdb1`)。\n\n4. **配置备份参数**:\n - **源硬盘**:选择需要备份的硬盘(如 `/dev/sda`)。\n - **镜像存储路径**:指定目标位置(如外置硬盘的挂载目录)。\n - **镜像名称**:自定义名称(如 `2025-img-rockylinux-2-21`)。\n - **压缩选项**:默认即可,支持并行压缩加速。\n - **镜像分割**:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。\n\n5. **确认操作**:\n - 检查提示信息,输入 `y` 开始备份。\n - 完成后关机或重启。\n\n6. **镜像还原**:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。\n---\n\n### **二、直接克隆硬盘(Device-to-Device)**\n将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。\n\n#### **步骤说明**:\n1. **准备工作**:\n - 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)\n - **警告**:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!\n\n2. **启动Clonezilla**:\n - 同上,从U盘启动进入Clonezilla界面。\n\n3. **选择克隆模式**:\n ```plaintext\n Choose mode: 选择 \"device-device\"(设备到设备)\n ```\n\n4. **选择硬盘**:\n - **母碟硬盘**:选择原始硬盘(如 `/dev/sda`)。\n - **目标硬盘**:选择新硬盘(如 `/dev/sdb`)。\n\n5. **克隆选项**:\n 需要进入专家模式才能看到,一般直接新手模式默认即可。\n\n6. **执行克隆**:\n - 确认提示信息后输入 `y`,等待完成。\n - 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。\n\n---\n### **两种模式对比**:\n| **模式** | 特点 | \n|----------------|---------------------------|\n| 备份镜像 | 方便多机部署也可以用于留档|\n| 直接克隆 | 换硬盘快速迁移无需恢复过程|\n---\n\n### **Btrfs务必注意**:\n对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行`sudo btrfs balance start --full-balance /`来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。\n\n","source":"_posts/clonezilla.md","raw":"---\ntitle: 使用Clonezilla备份和克隆系统\ndate: 2025-02-23 21:40:03\ntags: 技术分享\n---\n![Clonezilla官网](/images/clonezilla.png)\n[Clonezilla](https://clonezilla.org/)是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。\n\n---\n### **零.事前准备**:\n - 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。\n - 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。\n\n\n### **一.备份镜像到硬盘(Device-to-Image)**\n这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。\n\n#### **步骤说明**:\n2. **启动Clonezilla**:\n - 插入U盘,重启电脑并从U盘启动。\n - 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。\n\n3. **选择备份模式**:\n ```plaintext\n Choose mode: 选择 \"device-image\"(设备到镜像)\n Mount storage media: 选择 \"local_dev\"(本地存储设备)\n ```\n - 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 `/dev/sdb1`)。\n\n4. **配置备份参数**:\n - **源硬盘**:选择需要备份的硬盘(如 `/dev/sda`)。\n - **镜像存储路径**:指定目标位置(如外置硬盘的挂载目录)。\n - **镜像名称**:自定义名称(如 `2025-img-rockylinux-2-21`)。\n - **压缩选项**:默认即可,支持并行压缩加速。\n - **镜像分割**:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。\n\n5. **确认操作**:\n - 检查提示信息,输入 `y` 开始备份。\n - 完成后关机或重启。\n\n6. **镜像还原**:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。\n---\n\n### **二、直接克隆硬盘(Device-to-Device)**\n将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。\n\n#### **步骤说明**:\n1. **准备工作**:\n - 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)\n - **警告**:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!\n\n2. **启动Clonezilla**:\n - 同上,从U盘启动进入Clonezilla界面。\n\n3. **选择克隆模式**:\n ```plaintext\n Choose mode: 选择 \"device-device\"(设备到设备)\n ```\n\n4. **选择硬盘**:\n - **母碟硬盘**:选择原始硬盘(如 `/dev/sda`)。\n - **目标硬盘**:选择新硬盘(如 `/dev/sdb`)。\n\n5. **克隆选项**:\n 需要进入专家模式才能看到,一般直接新手模式默认即可。\n\n6. **执行克隆**:\n - 确认提示信息后输入 `y`,等待完成。\n - 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。\n\n---\n### **两种模式对比**:\n| **模式** | 特点 | \n|----------------|---------------------------|\n| 备份镜像 | 方便多机部署也可以用于留档|\n| 直接克隆 | 换硬盘快速迁移无需恢复过程|\n---\n\n### **Btrfs务必注意**:\n对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行`sudo btrfs balance start --full-balance /`来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。\n\n","slug":"clonezilla","published":1,"updated":"2025-02-23T14:12:10.654Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q3000xp22bd6qo3kl3","content":"

\"Clonezilla官网\"
Clonezilla是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。

\n
\n

零.事前准备

    \n
  • 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。
  • \n
  • 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。
  • \n
\n

一.备份镜像到硬盘(Device-to-Image)

这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。

\n

步骤说明

    \n
  1. 启动Clonezilla

    \n
      \n
    • 插入U盘,重启电脑并从U盘启动。
    • \n
    • 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。
    • \n
    \n
  2. \n
  3. 选择备份模式

    \n
    1
    2
    Choose mode:         选择 "device-image"(设备到镜像)
    Mount storage media: 选择 "local_dev"(本地存储设备)
    \n
      \n
    • 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 /dev/sdb1)。
    • \n
    \n
  4. \n
  5. 配置备份参数

    \n
      \n
    • 源硬盘:选择需要备份的硬盘(如 /dev/sda)。
    • \n
    • 镜像存储路径:指定目标位置(如外置硬盘的挂载目录)。
    • \n
    • 镜像名称:自定义名称(如 2025-img-rockylinux-2-21)。
    • \n
    • 压缩选项:默认即可,支持并行压缩加速。
    • \n
    • 镜像分割:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。
    • \n
    \n
  6. \n
  7. 确认操作

    \n
      \n
    • 检查提示信息,输入 y 开始备份。
    • \n
    • 完成后关机或重启。
    • \n
    \n
  8. \n
  9. 镜像还原:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。

    \n
  10. \n
\n
\n

二、直接克隆硬盘(Device-to-Device)

将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。

\n

步骤说明

    \n
  1. 准备工作

    \n
      \n
    • 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)
    • \n
    • 警告:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!
    • \n
    \n
  2. \n
  3. 启动Clonezilla

    \n
      \n
    • 同上,从U盘启动进入Clonezilla界面。
    • \n
    \n
  4. \n
  5. 选择克隆模式

    \n
    1
    Choose mode:         选择 "device-device"(设备到设备)
    \n
  6. \n
  7. 选择硬盘

    \n
      \n
    • 母碟硬盘:选择原始硬盘(如 /dev/sda)。
    • \n
    • 目标硬盘:选择新硬盘(如 /dev/sdb)。
    • \n
    \n
  8. \n
  9. 克隆选项
    需要进入专家模式才能看到,一般直接新手模式默认即可。

    \n
  10. \n
  11. 执行克隆

    \n
      \n
    • 确认提示信息后输入 y,等待完成。
    • \n
    • 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。
    • \n
    \n
  12. \n
\n
\n

两种模式对比

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
模式特点
备份镜像方便多机部署也可以用于留档
直接克隆换硬盘快速迁移无需恢复过程
\n
\n

Btrfs务必注意

对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行sudo btrfs balance start --full-balance /来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。

\n","excerpt":"","more":"

\"Clonezilla官网\"
Clonezilla是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。

\n
\n

零.事前准备

    \n
  • 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。
  • \n
  • 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。
  • \n
\n

一.备份镜像到硬盘(Device-to-Image)

这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。

\n

步骤说明

    \n
  1. 启动Clonezilla

    \n
      \n
    • 插入U盘,重启电脑并从U盘启动。
    • \n
    • 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。
    • \n
    \n
  2. \n
  3. 选择备份模式

    \n
    1
    2
    Choose mode:         选择 "device-image"(设备到镜像)
    Mount storage media: 选择 "local_dev"(本地存储设备)
    \n
      \n
    • 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 /dev/sdb1)。
    • \n
    \n
  4. \n
  5. 配置备份参数

    \n
      \n
    • 源硬盘:选择需要备份的硬盘(如 /dev/sda)。
    • \n
    • 镜像存储路径:指定目标位置(如外置硬盘的挂载目录)。
    • \n
    • 镜像名称:自定义名称(如 2025-img-rockylinux-2-21)。
    • \n
    • 压缩选项:默认即可,支持并行压缩加速。
    • \n
    • 镜像分割:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。
    • \n
    \n
  6. \n
  7. 确认操作

    \n
      \n
    • 检查提示信息,输入 y 开始备份。
    • \n
    • 完成后关机或重启。
    • \n
    \n
  8. \n
  9. 镜像还原:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。

    \n
  10. \n
\n
\n

二、直接克隆硬盘(Device-to-Device)

将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。

\n

步骤说明

    \n
  1. 准备工作

    \n
      \n
    • 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)
    • \n
    • 警告:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!
    • \n
    \n
  2. \n
  3. 启动Clonezilla

    \n
      \n
    • 同上,从U盘启动进入Clonezilla界面。
    • \n
    \n
  4. \n
  5. 选择克隆模式

    \n
    1
    Choose mode:         选择 "device-device"(设备到设备)
    \n
  6. \n
  7. 选择硬盘

    \n
      \n
    • 母碟硬盘:选择原始硬盘(如 /dev/sda)。
    • \n
    • 目标硬盘:选择新硬盘(如 /dev/sdb)。
    • \n
    \n
  8. \n
  9. 克隆选项
    需要进入专家模式才能看到,一般直接新手模式默认即可。

    \n
  10. \n
  11. 执行克隆

    \n
      \n
    • 确认提示信息后输入 y,等待完成。
    • \n
    • 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。
    • \n
    \n
  12. \n
\n
\n

两种模式对比

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
模式特点
备份镜像方便多机部署也可以用于留档
直接克隆换硬盘快速迁移无需恢复过程
\n
\n

Btrfs务必注意

对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行sudo btrfs balance start --full-balance /来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。

\n"},{"title":"时隔一年再次拿起数位板能画出什么东西","date":"2024-11-04T15:47:54.000Z","_content":"\n如题,前段时间推完LOOPERS的时候有感而发对着画了张海报\n\n时隔一年,终于又拿起了数位板\n\n![LOOPERS](/images/20241027_222225.png \"LOOPERS\")\n","source":"_posts/loopers.md","raw":"---\ntitle: 时隔一年再次拿起数位板能画出什么东西\ndate: 2024-11-04 23:47:54\ntags: [板绘, 生活]\n---\n\n如题,前段时间推完LOOPERS的时候有感而发对着画了张海报\n\n时隔一年,终于又拿起了数位板\n\n![LOOPERS](/images/20241027_222225.png \"LOOPERS\")\n","slug":"loopers","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q3000zp22b76yib05t","content":"

如题,前段时间推完LOOPERS的时候有感而发对着画了张海报

\n

时隔一年,终于又拿起了数位板

\n

\"LOOPERS\"

\n","excerpt":"","more":"

如题,前段时间推完LOOPERS的时候有感而发对着画了张海报

\n

时隔一年,终于又拿起了数位板

\n

\"LOOPERS\"

\n"},{"title":"愿指引明路的苍蓝星永远为你闪耀","date":"2024-11-11T13:46:49.000Z","_content":"使用东方Project软音源THFont简单重置的MHWI主题曲\n\n雄关漫道真如铁,而今迈步从头越\n\n{% raw %}\n\n{% endraw %}\n\n","source":"_posts/mhwi.md","raw":"---\ntitle: 愿指引明路的苍蓝星永远为你闪耀\ndate: 2024-11-11 21:46:49\ntags: 音乐\ncategories: Rearrangement\n---\n使用东方Project软音源THFont简单重置的MHWI主题曲\n\n雄关漫道真如铁,而今迈步从头越\n\n{% raw %}\n\n{% endraw %}\n\n","slug":"mhwi","published":1,"updated":"2024-11-11T14:00:19.124Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q40013p22bb8qjfb28","content":"

使用东方Project软音源THFont简单重置的MHWI主题曲

\n

雄关漫道真如铁,而今迈步从头越

\n\n\n\n\n","excerpt":"","more":"

使用东方Project软音源THFont简单重置的MHWI主题曲

\n

雄关漫道真如铁,而今迈步从头越

\n\n\n\n\n"},{"title":"高地特供版CSAPP Bomb Lab全流程攻略","date":"2025-02-24T07:09:11.000Z","_content":"\n这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。\n\n笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。\n\n## **Phase_1**\n\n### **静态分析**\n\n#### **`strings`扫描**\n```bash\nstrings bomb_linux\n```\n先用strings寻找可能与`phase_1`相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。\n![strings](/images/phase1_strings.png)\n - 结果没有明文密码无法直接秒掉第一问,可惜。\n - 但是找到`GenerateRandomString`函数可能与密码生成相关。\n\n#### **用`objdump`反汇编**\n```bash\nobjdump -d bomb_linux > bomb.asm\n```\n搜索`GenerateRandomString`和`phase_1`函数的汇编代码。\n ```assembly\n 401b53 :\n 401b53: endbr64\n 401b57: push %rbp\n 401b58: mov %rsp,%rbp\n 401b5b: sub $0x20,%rsp\n 401b5f: mov %rdi,-0x18(%rbp)\n 401b63: lea -0xb(%rbp),%rax\n 401b67: mov %rax,%rdi\n 401b6a: callq 401ac1 # 调用密码生成函数\n 401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置\n 401b73: mov -0x18(%rbp),%rax\n 401b77: mov %rdx,%rsi\n 401b7a: mov %rax,%rdi\n 401b7d: callq 401c0c # 调用字符串比较函数\n 401b82: test %eax,%eax\n 401b84: je 401b8d \n 401b86: callq 401d67 # 比较失败则引爆炸弹\n ```\n - `phase_1`调用`GenerateRandomString`生成一个字符串。\n - 用户输入的字符串需要与此生成的字符串完全匹配。\n\n---\n\n### **动态调试**\n![phase_1](/images/phase1.png)\n下面是phase_1求解的完整流程:\n```lldb\nlldb bomb_linux <你的学号后六位>\n(lldb) b phase_1 # 在phase_1入口断点\n(lldb) run # 从入口开始执行\n请输入第1级的密码:114514 # 随便输入触发断点\n(lldb) b 0x401b6f # 在GenerateRandomString返回后断点\n(lldb) continue # 继续执行\n(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)\n0x7fffffffdaf5: \"mJHurpQZtY\" # 轻松拿下,这里是根据学号伪随机生成的哦\n```\n将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。\n\n---\n\n## **Phase_2**\n\n### **静态分析**\n\n这道题目还是比较一目了然的,观察`phase_2`代码不难发现其实构建了一张跳转表:\n```assembly\n0000000000401b8e :\n 401b8e:\tf3 0f 1e fa \tendbr64\n 401b92:\t55 \tpush %rbp\n 401b93:\t48 89 e5 \tmov %rsp,%rbp\n 401b96:\t48 83 ec 10 \tsub $0x10,%rsp\n 401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi\n 401ba3:\te8 05 fb ff ff \tcall 4016ad \n 401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 \n 401baf:\t48 83 f8 0f \tcmp $0xf,%rax\n 401bb3:\t0f 87 16 01 00 00 \tja 401ccf \n 401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 401bc0:\t00 \n 401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>\n 401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 401bcb:\t48 98 \tcltq\n 401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>\n 401bd4:\t48 01 d0 \tadd %rdx,%rax\n 401bd7:\t3e ff e0 \tnotrack jmp *%rax\n 401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bde:\t48 89 c7 \tmov %rax,%rdi\n 401be1:\te8 f2 00 00 00 \tcall 401cd8 \n 401be6:\te9 ea 00 00 00 \tjmp 401cd5 \n 401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bef:\t48 89 c7 \tmov %rax,%rdi\n 401bf2:\te8 8b 01 00 00 \tcall 401d82 \n 401bf7:\te9 d9 00 00 00 \tjmp 401cd5 \n 401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401c00:\t48 89 c7 \tmov %rax,%rdi\n ...\n```\n这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是`GenerateRandomNumber`这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。\n\n---\n\n### **动态调试**\n理解原理就没什么难度了,自己找几个断点打好然后关注一下`rand_div`的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向`phase_2_14`跳转:\n![phase_2_14](/images/phase_2_14.png)\n\n而除了`phase_2_14`还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。\n\n---\n## **Phase_3**\n\n### **静态分析**\n\n和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi\n\n本体其实没有什么好说的,这里我跳转的方向是`Phase_3_5`简要解释一下可供参考:\n\n```assembly\n0000000000403001 :\n 403001:\tf3 0f 1e fa \tendbr64\n 403005:\t55 \tpush %rbp\n 403006:\t48 89 e5 \tmov %rsp,%rbp\n 403009:\t48 83 ec 20 \tsub $0x20,%rsp\n 40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)\n 403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)\n 403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)\n 40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx\n 403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx\n 403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax\n 40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>\n 403032:\t48 89 c7 \tmov %rax,%rdi\n 403035:\tb8 00 00 00 00 \tmov $0x0,%eax\n 40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n 40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)\n 403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)\n 403046:\t7f 05 \tjg 40304d \n 403048:\te8 a9 2b 00 00 \tcall 405bf6 \n 40304d:\tbf 08 00 00 00 \tmov $0x8,%edi\n 403052:\te8 56 e6 ff ff \tcall 4016ad \n 403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40305a:\t48 63 d0 \tmovslq %eax,%rdx\n 40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 \n 403064:\t48 39 c2 \tcmp %rax,%rdx\n 403067:\t74 05 \tje 40306e \n 403069:\te8 88 2b 00 00 \tcall 405bf6 \n 40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 403073:\te8 35 e6 ff ff \tcall 4016ad \n 403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40307b:\t83 f8 07 \tcmp $0x7,%eax\n 40307e:\t0f 87 eb 00 00 00 \tja 40316f \n 403084:\t89 c0 \tmov %eax,%eax\n 403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 40308d:\t00 \n 40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>\n 403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 403098:\t48 98 \tcltq\n 40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>\n 4030a1:\t48 01 d0 \tadd %rdx,%rax\n 4030a4:\t3e ff e0 \tnotrack jmp *%rax\n 4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 \n 4030ae:\t89 c2 \tmov %eax,%edx\n 4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax\n 4030b3:\t01 d0 \tadd %edx,%eax\n 4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)\n 4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 4030bd:\te8 eb e5 ff ff \tcall 4016ad \n ...\n 403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax\n 403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里\n 40317a:\t74 05 \tje 403181 \n 40317c:\te8 75 2a 00 00 \tcall 405bf6 \n 403181:\t90 \tnop\n 403182:\tc9 \tleave\n 403183:\tc3 \tret\n\n```\n看起来一大堆很吓人对不对?实际上确实很吓人。\n\n但是发现其中玄机后其实简单的没边,最终答案就藏在`0x403177`里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接`run`一下重开qwq)。\n\n---\n\n### **动态调试**\n\n阅读`Phase_3_5`发现这一关其实需要两个输入,并且第一个输入必须是`rand_div`,这里建议通过`si`单步执行监控好`rand_div`值变化,确定正确结果后使用`run`重开正确输入第一个密码后才能进行下一步求解:\n```lldb\n(lldb) si\nProcess 13376 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377\nbomb_linux`phase_3_5:\n-> 0x40317a <+377>: je 0x403181 ; <+384>\n 0x40317c <+379>: callq 0x405bf6 ; explode_bomb\n 0x403181 <+384>: nop\n 0x403182 <+385>: leave\n(lldb) x/wx $rbp-0x4\n0x7fffffffdb0c: 0xffffffd7\n```\n例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。\n\n---\n\n## **Phase_4**\n\n### **静态分析**\n\n本题依旧开局跳转,笔者的跳转方向是`phase_4_01`,如何跳转不再强调关注`rand_div`的值即可,下面请D指导解读一下`phase_4_01`的内容:\n```assembly\n0000000000404895 :\n ; 函数入口,初始化栈帧\n 404895:\tf3 0f 1e fa \tendbr64 \n 404899:\t55 \tpush %rbp\n 40489a:\t48 89 e5 \tmov %rsp,%rbp\n 40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间\n\n ; 初始化斐波那契数组(F(10)~F(24)的十六进制值)\n 4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针\n 4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55\n 4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89\n 4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144\n 4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233\n 4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377\n 4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610\n 4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987\n 4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597\n 4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584\n 4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181\n 4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765\n 4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946\n 4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711\n 404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657\n 404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368\n\n ; 读取输入到局部变量(格式为\"%d\")\n 40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址\n 404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串\n 404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串\"%d\"\n 40491d:\t48 89 ce \tmov %rcx,%rsi\n 404920:\t48 89 c7 \tmov %rax,%rdi\n 404923:\tb8 00 00 00 00 \tmov $0x0,%eax\n 404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n\n ; 验证输入有效性(必须为1个正数)\n 40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值\n 404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数\n 404934:\t75 07 \tjne 40493d ; 失败则爆炸\n 404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N\n 404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0\n 40493b:\t7f 05 \tjg 404942 \n 40493d:\te8 b4 12 00 00 \tcall 405bf6 \n\n ; 检查输入值上限(必须 > 1999)\n 404942:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制\n 40494a:\t7f 05 \tjg 404951 ; N > 1999?\n 40494c:\te8 a5 12 00 00 \tcall 405bf6 \n\n ; 计算 N/2000(通过定点数乘法优化)\n 404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N\n 404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展\n 404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)\n 40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位\n 404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000\n 404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展\n 404968:\t89 c1 \tmov %eax,%ecx \n 40496a:\t89 d0 \tmov %edx,%eax \n 40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况\n 40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000\n\n ; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列\n 404971:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404974:\t89 c7 \tmov %eax,%edi ; 参数k\n 404976:\te8 ce fd ff ff \tcall 404749 ; 返回值eax=F(k+1)\n 40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果\n\n ; 生成随机索引并验证结果\n 40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15\n 404983:\te8 25 cd ff ff \tcall 4016ad ; 生成0~14随机数\n 404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 ; 获取随机索引\n 40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值\n 404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?\n 404996:\t74 05 \tje 40499d \n 404998:\te8 59 12 00 00 \tcall 405bf6 \n```\n所以相对还是很明了的,依旧是关注`rand_div`。\n\n### **动态调试**\n先找出`rand_div`在最后判断前的取值,比如我下面的0xa:\n\n```lldb\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108\nbomb_linux`GenerateRandomNumber:\n-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div\n 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115\nbomb_linux`GenerateRandomNumber:\n-> 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n 0x401724 <+119>: retq\n(lldb) x/gx &rand_div\n0x00408820: 0x000000000000000a\n```\n\n而当 `rand_div = 0xa`(即十进制 **10**)时,输入值 `N` 的计算步骤如下:\n\n- 数组索引 **10** 的值是 **斐波那契数列第 20 项**(`F(20) = 6765`)。\n\n- `func4_0(k)` 实际计算的是 **标准斐波那契数列的第 `k+1` 项**(例如,`func4_0(0) = 1 = F(2)`) 需要满足:\n ```c\n func4_0(k) = F(k+1) = F(20)\n ```\n 解得:\n k + 1 = 20 → k = 19\n- `k = N / 2000` → `N = 2000 * k = 2000 * 19 = 38000`.\n从而得解。\n![phase_4](/images/phase_4.png)\n\n---\n\n## **Phase_Impossible**\n\nImpossible?\n\n从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:\n```c\nvoid phase_impossible(char *param_1)\n\n{\n int iVar1;\n size_t sVar2;\n undefined local_118 [256];\n long local_18;\n long local_10;\n \n local_10 = GetTickCount();\n sVar2 = strlen(param_1);\n if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {\n explode_bomb();\n }\n memset(local_118,0,0x100);\n tohex(local_118,param_1);\n GenerateRandomNumber(0x400);\n iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);\n if (iVar1 == 0) {\n puts(&DAT_00406518);\n explode_bomb();\n }\n GenerateRandomNumber(3);\n if (rand_div != 2) {\n if (2 < rand_div) goto LAB_00401891;\n if (rand_div == 0) {\n goto_buf_0(local_118);\n }\n else if (rand_div != 1) goto LAB_00401891;\n goto_buf_1(local_118);\n }\n goto_buf_2(local_118);\nLAB_00401891:\n explode_bomb();\n GenerateRandomNumber(0x400);\n if ((long)(int)result != rand_div) {\n printf(&DAT_00406560,rand_div,(ulong)result);\n explode_bomb();\n }\n local_18 = GetTickCount();\n if (1000 < (ulong)(local_18 - local_10)) {\n puts(&DAT_004065a8);\n explode_bomb();\n }\n return;\n}\n```\n最终任务还是很明确的,需要写一段机器码修改`result`的数值,但是注意要能通过`check_buf_valid`检测,并且最后指令必须是跳转到`0x401896`不然就会触发`phase_impossible`中`0x401891`处的`explode_bomb`函数,唯一的难点是跟踪`rand_div`的数值变化,建议使用`register write`来修改`check_buf_valid`的返回值使其强制通过然后监控`rand_div`每一次的数值变化(`x/gx &rand_div`),记录好`rand_div`的结果后开始指令设计,需要满足:\n\n - 指令的异或和为`rand_div`第一次的数值末尾八位以通过检查;\n - 修改`result`使其数值等于`rand_div`第三次数值;\n - 跳转到`0x401896`避免炸弹;\n\n 如果前几问都完成了到这里应该是没有问题的。\n\n---\n\n## **Phase_Secret**\n\n隐藏彩蛋,并非隐藏。汇编里写的非常清楚:\n```assembly\n0000000000401a8b :\n 401a8b:\tf3 0f 1e fa \tendbr64\n 401a8f:\t55 \tpush %rbp\n 401a90:\t48 89 e5 \tmov %rsp,%rbp\n 401a93:\t48 83 ec 10 \tsub $0x10,%rsp\n 401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>\n 401aa2:\t48 89 c7 \tmov %rax,%rdi\n 401aa5:\te8 76 f6 ff ff \tcall 401120 \n 401aaa:\t90 \tnop\n 401aab:\tc9 \tleave\n 401aac:\tc3 \tret\n```\n注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在`phase_5`中设计指令时加一个要求跳转到`0x401a8b`即可。\n\n完结\n![Case Closed](/images/caseclosed.png)\n","source":"_posts/nudtbomblab.md","raw":"---\ntitle: 高地特供版CSAPP Bomb Lab全流程攻略\ndate: 2025-02-24 15:09:11\ntags: [技术, 学习, 生活]\n---\n\n这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。\n\n笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。\n\n## **Phase_1**\n\n### **静态分析**\n\n#### **`strings`扫描**\n```bash\nstrings bomb_linux\n```\n先用strings寻找可能与`phase_1`相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。\n![strings](/images/phase1_strings.png)\n - 结果没有明文密码无法直接秒掉第一问,可惜。\n - 但是找到`GenerateRandomString`函数可能与密码生成相关。\n\n#### **用`objdump`反汇编**\n```bash\nobjdump -d bomb_linux > bomb.asm\n```\n搜索`GenerateRandomString`和`phase_1`函数的汇编代码。\n ```assembly\n 401b53 :\n 401b53: endbr64\n 401b57: push %rbp\n 401b58: mov %rsp,%rbp\n 401b5b: sub $0x20,%rsp\n 401b5f: mov %rdi,-0x18(%rbp)\n 401b63: lea -0xb(%rbp),%rax\n 401b67: mov %rax,%rdi\n 401b6a: callq 401ac1 # 调用密码生成函数\n 401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置\n 401b73: mov -0x18(%rbp),%rax\n 401b77: mov %rdx,%rsi\n 401b7a: mov %rax,%rdi\n 401b7d: callq 401c0c # 调用字符串比较函数\n 401b82: test %eax,%eax\n 401b84: je 401b8d \n 401b86: callq 401d67 # 比较失败则引爆炸弹\n ```\n - `phase_1`调用`GenerateRandomString`生成一个字符串。\n - 用户输入的字符串需要与此生成的字符串完全匹配。\n\n---\n\n### **动态调试**\n![phase_1](/images/phase1.png)\n下面是phase_1求解的完整流程:\n```lldb\nlldb bomb_linux <你的学号后六位>\n(lldb) b phase_1 # 在phase_1入口断点\n(lldb) run # 从入口开始执行\n请输入第1级的密码:114514 # 随便输入触发断点\n(lldb) b 0x401b6f # 在GenerateRandomString返回后断点\n(lldb) continue # 继续执行\n(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)\n0x7fffffffdaf5: \"mJHurpQZtY\" # 轻松拿下,这里是根据学号伪随机生成的哦\n```\n将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。\n\n---\n\n## **Phase_2**\n\n### **静态分析**\n\n这道题目还是比较一目了然的,观察`phase_2`代码不难发现其实构建了一张跳转表:\n```assembly\n0000000000401b8e :\n 401b8e:\tf3 0f 1e fa \tendbr64\n 401b92:\t55 \tpush %rbp\n 401b93:\t48 89 e5 \tmov %rsp,%rbp\n 401b96:\t48 83 ec 10 \tsub $0x10,%rsp\n 401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi\n 401ba3:\te8 05 fb ff ff \tcall 4016ad \n 401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 \n 401baf:\t48 83 f8 0f \tcmp $0xf,%rax\n 401bb3:\t0f 87 16 01 00 00 \tja 401ccf \n 401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 401bc0:\t00 \n 401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>\n 401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 401bcb:\t48 98 \tcltq\n 401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>\n 401bd4:\t48 01 d0 \tadd %rdx,%rax\n 401bd7:\t3e ff e0 \tnotrack jmp *%rax\n 401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bde:\t48 89 c7 \tmov %rax,%rdi\n 401be1:\te8 f2 00 00 00 \tcall 401cd8 \n 401be6:\te9 ea 00 00 00 \tjmp 401cd5 \n 401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bef:\t48 89 c7 \tmov %rax,%rdi\n 401bf2:\te8 8b 01 00 00 \tcall 401d82 \n 401bf7:\te9 d9 00 00 00 \tjmp 401cd5 \n 401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401c00:\t48 89 c7 \tmov %rax,%rdi\n ...\n```\n这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是`GenerateRandomNumber`这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。\n\n---\n\n### **动态调试**\n理解原理就没什么难度了,自己找几个断点打好然后关注一下`rand_div`的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向`phase_2_14`跳转:\n![phase_2_14](/images/phase_2_14.png)\n\n而除了`phase_2_14`还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。\n\n---\n## **Phase_3**\n\n### **静态分析**\n\n和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi\n\n本体其实没有什么好说的,这里我跳转的方向是`Phase_3_5`简要解释一下可供参考:\n\n```assembly\n0000000000403001 :\n 403001:\tf3 0f 1e fa \tendbr64\n 403005:\t55 \tpush %rbp\n 403006:\t48 89 e5 \tmov %rsp,%rbp\n 403009:\t48 83 ec 20 \tsub $0x20,%rsp\n 40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)\n 403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)\n 403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)\n 40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx\n 403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx\n 403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax\n 40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>\n 403032:\t48 89 c7 \tmov %rax,%rdi\n 403035:\tb8 00 00 00 00 \tmov $0x0,%eax\n 40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n 40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)\n 403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)\n 403046:\t7f 05 \tjg 40304d \n 403048:\te8 a9 2b 00 00 \tcall 405bf6 \n 40304d:\tbf 08 00 00 00 \tmov $0x8,%edi\n 403052:\te8 56 e6 ff ff \tcall 4016ad \n 403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40305a:\t48 63 d0 \tmovslq %eax,%rdx\n 40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 \n 403064:\t48 39 c2 \tcmp %rax,%rdx\n 403067:\t74 05 \tje 40306e \n 403069:\te8 88 2b 00 00 \tcall 405bf6 \n 40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 403073:\te8 35 e6 ff ff \tcall 4016ad \n 403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40307b:\t83 f8 07 \tcmp $0x7,%eax\n 40307e:\t0f 87 eb 00 00 00 \tja 40316f \n 403084:\t89 c0 \tmov %eax,%eax\n 403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 40308d:\t00 \n 40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>\n 403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 403098:\t48 98 \tcltq\n 40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>\n 4030a1:\t48 01 d0 \tadd %rdx,%rax\n 4030a4:\t3e ff e0 \tnotrack jmp *%rax\n 4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 \n 4030ae:\t89 c2 \tmov %eax,%edx\n 4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax\n 4030b3:\t01 d0 \tadd %edx,%eax\n 4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)\n 4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 4030bd:\te8 eb e5 ff ff \tcall 4016ad \n ...\n 403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax\n 403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里\n 40317a:\t74 05 \tje 403181 \n 40317c:\te8 75 2a 00 00 \tcall 405bf6 \n 403181:\t90 \tnop\n 403182:\tc9 \tleave\n 403183:\tc3 \tret\n\n```\n看起来一大堆很吓人对不对?实际上确实很吓人。\n\n但是发现其中玄机后其实简单的没边,最终答案就藏在`0x403177`里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接`run`一下重开qwq)。\n\n---\n\n### **动态调试**\n\n阅读`Phase_3_5`发现这一关其实需要两个输入,并且第一个输入必须是`rand_div`,这里建议通过`si`单步执行监控好`rand_div`值变化,确定正确结果后使用`run`重开正确输入第一个密码后才能进行下一步求解:\n```lldb\n(lldb) si\nProcess 13376 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377\nbomb_linux`phase_3_5:\n-> 0x40317a <+377>: je 0x403181 ; <+384>\n 0x40317c <+379>: callq 0x405bf6 ; explode_bomb\n 0x403181 <+384>: nop\n 0x403182 <+385>: leave\n(lldb) x/wx $rbp-0x4\n0x7fffffffdb0c: 0xffffffd7\n```\n例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。\n\n---\n\n## **Phase_4**\n\n### **静态分析**\n\n本题依旧开局跳转,笔者的跳转方向是`phase_4_01`,如何跳转不再强调关注`rand_div`的值即可,下面请D指导解读一下`phase_4_01`的内容:\n```assembly\n0000000000404895 :\n ; 函数入口,初始化栈帧\n 404895:\tf3 0f 1e fa \tendbr64 \n 404899:\t55 \tpush %rbp\n 40489a:\t48 89 e5 \tmov %rsp,%rbp\n 40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间\n\n ; 初始化斐波那契数组(F(10)~F(24)的十六进制值)\n 4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针\n 4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55\n 4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89\n 4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144\n 4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233\n 4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377\n 4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610\n 4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987\n 4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597\n 4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584\n 4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181\n 4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765\n 4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946\n 4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711\n 404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657\n 404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368\n\n ; 读取输入到局部变量(格式为\"%d\")\n 40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址\n 404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串\n 404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串\"%d\"\n 40491d:\t48 89 ce \tmov %rcx,%rsi\n 404920:\t48 89 c7 \tmov %rax,%rdi\n 404923:\tb8 00 00 00 00 \tmov $0x0,%eax\n 404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n\n ; 验证输入有效性(必须为1个正数)\n 40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值\n 404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数\n 404934:\t75 07 \tjne 40493d ; 失败则爆炸\n 404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N\n 404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0\n 40493b:\t7f 05 \tjg 404942 \n 40493d:\te8 b4 12 00 00 \tcall 405bf6 \n\n ; 检查输入值上限(必须 > 1999)\n 404942:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制\n 40494a:\t7f 05 \tjg 404951 ; N > 1999?\n 40494c:\te8 a5 12 00 00 \tcall 405bf6 \n\n ; 计算 N/2000(通过定点数乘法优化)\n 404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N\n 404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展\n 404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)\n 40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位\n 404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000\n 404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展\n 404968:\t89 c1 \tmov %eax,%ecx \n 40496a:\t89 d0 \tmov %edx,%eax \n 40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况\n 40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000\n\n ; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列\n 404971:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404974:\t89 c7 \tmov %eax,%edi ; 参数k\n 404976:\te8 ce fd ff ff \tcall 404749 ; 返回值eax=F(k+1)\n 40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果\n\n ; 生成随机索引并验证结果\n 40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15\n 404983:\te8 25 cd ff ff \tcall 4016ad ; 生成0~14随机数\n 404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 ; 获取随机索引\n 40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值\n 404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?\n 404996:\t74 05 \tje 40499d \n 404998:\te8 59 12 00 00 \tcall 405bf6 \n```\n所以相对还是很明了的,依旧是关注`rand_div`。\n\n### **动态调试**\n先找出`rand_div`在最后判断前的取值,比如我下面的0xa:\n\n```lldb\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108\nbomb_linux`GenerateRandomNumber:\n-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div\n 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115\nbomb_linux`GenerateRandomNumber:\n-> 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n 0x401724 <+119>: retq\n(lldb) x/gx &rand_div\n0x00408820: 0x000000000000000a\n```\n\n而当 `rand_div = 0xa`(即十进制 **10**)时,输入值 `N` 的计算步骤如下:\n\n- 数组索引 **10** 的值是 **斐波那契数列第 20 项**(`F(20) = 6765`)。\n\n- `func4_0(k)` 实际计算的是 **标准斐波那契数列的第 `k+1` 项**(例如,`func4_0(0) = 1 = F(2)`) 需要满足:\n ```c\n func4_0(k) = F(k+1) = F(20)\n ```\n 解得:\n k + 1 = 20 → k = 19\n- `k = N / 2000` → `N = 2000 * k = 2000 * 19 = 38000`.\n从而得解。\n![phase_4](/images/phase_4.png)\n\n---\n\n## **Phase_Impossible**\n\nImpossible?\n\n从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:\n```c\nvoid phase_impossible(char *param_1)\n\n{\n int iVar1;\n size_t sVar2;\n undefined local_118 [256];\n long local_18;\n long local_10;\n \n local_10 = GetTickCount();\n sVar2 = strlen(param_1);\n if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {\n explode_bomb();\n }\n memset(local_118,0,0x100);\n tohex(local_118,param_1);\n GenerateRandomNumber(0x400);\n iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);\n if (iVar1 == 0) {\n puts(&DAT_00406518);\n explode_bomb();\n }\n GenerateRandomNumber(3);\n if (rand_div != 2) {\n if (2 < rand_div) goto LAB_00401891;\n if (rand_div == 0) {\n goto_buf_0(local_118);\n }\n else if (rand_div != 1) goto LAB_00401891;\n goto_buf_1(local_118);\n }\n goto_buf_2(local_118);\nLAB_00401891:\n explode_bomb();\n GenerateRandomNumber(0x400);\n if ((long)(int)result != rand_div) {\n printf(&DAT_00406560,rand_div,(ulong)result);\n explode_bomb();\n }\n local_18 = GetTickCount();\n if (1000 < (ulong)(local_18 - local_10)) {\n puts(&DAT_004065a8);\n explode_bomb();\n }\n return;\n}\n```\n最终任务还是很明确的,需要写一段机器码修改`result`的数值,但是注意要能通过`check_buf_valid`检测,并且最后指令必须是跳转到`0x401896`不然就会触发`phase_impossible`中`0x401891`处的`explode_bomb`函数,唯一的难点是跟踪`rand_div`的数值变化,建议使用`register write`来修改`check_buf_valid`的返回值使其强制通过然后监控`rand_div`每一次的数值变化(`x/gx &rand_div`),记录好`rand_div`的结果后开始指令设计,需要满足:\n\n - 指令的异或和为`rand_div`第一次的数值末尾八位以通过检查;\n - 修改`result`使其数值等于`rand_div`第三次数值;\n - 跳转到`0x401896`避免炸弹;\n\n 如果前几问都完成了到这里应该是没有问题的。\n\n---\n\n## **Phase_Secret**\n\n隐藏彩蛋,并非隐藏。汇编里写的非常清楚:\n```assembly\n0000000000401a8b :\n 401a8b:\tf3 0f 1e fa \tendbr64\n 401a8f:\t55 \tpush %rbp\n 401a90:\t48 89 e5 \tmov %rsp,%rbp\n 401a93:\t48 83 ec 10 \tsub $0x10,%rsp\n 401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>\n 401aa2:\t48 89 c7 \tmov %rax,%rdi\n 401aa5:\te8 76 f6 ff ff \tcall 401120 \n 401aaa:\t90 \tnop\n 401aab:\tc9 \tleave\n 401aac:\tc3 \tret\n```\n注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在`phase_5`中设计指令时加一个要求跳转到`0x401a8b`即可。\n\n完结\n![Case Closed](/images/caseclosed.png)\n","slug":"nudtbomblab","published":1,"updated":"2025-02-25T03:56:35.270Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q40015p22bbk3g76eg","content":"

这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。

\n

笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。

\n

Phase_1

静态分析

strings扫描

1
strings bomb_linux
\n

先用strings寻找可能与phase_1相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。
\"strings\"

\n
    \n
  • 结果没有明文密码无法直接秒掉第一问,可惜。
  • \n
  • 但是找到GenerateRandomString函数可能与密码生成相关。
  • \n
\n

objdump反汇编

1
objdump -d bomb_linux > bomb.asm
\n

搜索GenerateRandomStringphase_1函数的汇编代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
401b53 <phase_1>:
401b53: endbr64
401b57: push %rbp
401b58: mov %rsp,%rbp
401b5b: sub $0x20,%rsp
401b5f: mov %rdi,-0x18(%rbp)
401b63: lea -0xb(%rbp),%rax
401b67: mov %rax,%rdi
401b6a: callq 401ac1 <GenerateRandomString> # 调用密码生成函数
401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置
401b73: mov -0x18(%rbp),%rax
401b77: mov %rdx,%rsi
401b7a: mov %rax,%rdi
401b7d: callq 401c0c <string_compare> # 调用字符串比较函数
401b82: test %eax,%eax
401b84: je 401b8d <phase_1+0x3a>
401b86: callq 401d67 <explode_bomb> # 比较失败则引爆炸弹

\n
    \n
  • phase_1调用GenerateRandomString生成一个字符串。
  • \n
  • 用户输入的字符串需要与此生成的字符串完全匹配。
  • \n
\n
\n

动态调试

\"phase_1\"
下面是phase_1求解的完整流程:

\n
1
2
3
4
5
6
7
8
lldb bomb_linux <你的学号后六位>
(lldb) b phase_1 # 在phase_1入口断点
(lldb) run # 从入口开始执行
请输入第1级的密码:114514 # 随便输入触发断点
(lldb) b 0x401b6f # 在GenerateRandomString返回后断点
(lldb) continue # 继续执行
(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)
0x7fffffffdaf5: "mJHurpQZtY" # 轻松拿下,这里是根据学号伪随机生成的哦
\n

将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。

\n
\n

Phase_2

静态分析

这道题目还是比较一目了然的,观察phase_2代码不难发现其实构建了一张跳转表:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0000000000401b8e <phase_2>:
401b8e:\tf3 0f 1e fa \tendbr64
401b92:\t55 \tpush %rbp
401b93:\t48 89 e5 \tmov %rsp,%rbp
401b96:\t48 83 ec 10 \tsub $0x10,%rsp
401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi
401ba3:\te8 05 fb ff ff \tcall 4016ad <GenerateRandomNumber>
401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 <rand_div>
401baf:\t48 83 f8 0f \tcmp $0xf,%rax
401bb3:\t0f 87 16 01 00 00 \tja 401ccf <phase_2+0x141>
401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
401bc0:\t00
401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>
401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
401bcb:\t48 98 \tcltq
401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>
401bd4:\t48 01 d0 \tadd %rdx,%rax
401bd7:\t3e ff e0 \tnotrack jmp *%rax
401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bde:\t48 89 c7 \tmov %rax,%rdi
401be1:\te8 f2 00 00 00 \tcall 401cd8 <phase_2_0>
401be6:\te9 ea 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bef:\t48 89 c7 \tmov %rax,%rdi
401bf2:\te8 8b 01 00 00 \tcall 401d82 <phase_2_1>
401bf7:\te9 d9 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401c00:\t48 89 c7 \tmov %rax,%rdi
...
\n

这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是GenerateRandomNumber这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。

\n
\n

动态调试

理解原理就没什么难度了,自己找几个断点打好然后关注一下rand_div的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向phase_2_14跳转:
\"phase_2_14\"

\n

而除了phase_2_14还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。

\n
\n

Phase_3

静态分析

和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi

\n

本体其实没有什么好说的,这里我跳转的方向是Phase_3_5简要解释一下可供参考:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
0000000000403001 <phase_3_5>:
403001:\tf3 0f 1e fa \tendbr64
403005:\t55 \tpush %rbp
403006:\t48 89 e5 \tmov %rsp,%rbp
403009:\t48 83 ec 20 \tsub $0x20,%rsp
40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)
403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)
403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)
40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx
403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx
403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax
40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>
403032:\t48 89 c7 \tmov %rax,%rdi
403035:\tb8 00 00 00 00 \tmov $0x0,%eax
40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>
40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)
403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)
403046:\t7f 05 \tjg 40304d <phase_3_5+0x4c>
403048:\te8 a9 2b 00 00 \tcall 405bf6 <explode_bomb>
40304d:\tbf 08 00 00 00 \tmov $0x8,%edi
403052:\te8 56 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40305a:\t48 63 d0 \tmovslq %eax,%rdx
40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 <rand_div>
403064:\t48 39 c2 \tcmp %rax,%rdx
403067:\t74 05 \tje 40306e <phase_3_5+0x6d>
403069:\te8 88 2b 00 00 \tcall 405bf6 <explode_bomb>
40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi
403073:\te8 35 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40307b:\t83 f8 07 \tcmp $0x7,%eax
40307e:\t0f 87 eb 00 00 00 \tja 40316f <phase_3_5+0x16e>
403084:\t89 c0 \tmov %eax,%eax
403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
40308d:\t00
40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>
403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
403098:\t48 98 \tcltq
40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>
4030a1:\t48 01 d0 \tadd %rdx,%rax
4030a4:\t3e ff e0 \tnotrack jmp *%rax
4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 <rand_div>
4030ae:\t89 c2 \tmov %eax,%edx
4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax
4030b3:\t01 d0 \tadd %edx,%eax
4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)
4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi
4030bd:\te8 eb e5 ff ff \tcall 4016ad <GenerateRandomNumber>
...
403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax
403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里
40317a:\t74 05 \tje 403181 <phase_3_5+0x180>
40317c:\te8 75 2a 00 00 \tcall 405bf6 <explode_bomb>
403181:\t90 \tnop
403182:\tc9 \tleave
403183:\tc3 \tret

\n

看起来一大堆很吓人对不对?实际上确实很吓人。

\n

但是发现其中玄机后其实简单的没边,最终答案就藏在0x403177里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接run一下重开qwq)。

\n
\n

动态调试

阅读Phase_3_5发现这一关其实需要两个输入,并且第一个输入必须是rand_div,这里建议通过si单步执行监控好rand_div值变化,确定正确结果后使用run重开正确输入第一个密码后才能进行下一步求解:

\n
1
2
3
4
5
6
7
8
9
10
11
(lldb) si
Process 13376 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377
bomb_linux`phase_3_5:
-> 0x40317a <+377>: je 0x403181 ; <+384>
0x40317c <+379>: callq 0x405bf6 ; explode_bomb
0x403181 <+384>: nop
0x403182 <+385>: leave
(lldb) x/wx $rbp-0x4
0x7fffffffdb0c: 0xffffffd7
\n

例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。

\n
\n

Phase_4

静态分析

本题依旧开局跳转,笔者的跳转方向是phase_4_01,如何跳转不再强调关注rand_div的值即可,下面请D指导解读一下phase_4_01的内容:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
0000000000404895 <phase_4_01>:
; 函数入口,初始化栈帧
404895:\tf3 0f 1e fa \tendbr64
404899:\t55 \tpush %rbp
40489a:\t48 89 e5 \tmov %rsp,%rbp
40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间

; 初始化斐波那契数组(F(10)~F(24)的十六进制值)
4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针
4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55
4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89
4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144
4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233
4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377
4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610
4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987
4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597
4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584
4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181
4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765
4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946
4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711
404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657
404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368

; 读取输入到局部变量(格式为"%d")
40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址
404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串
404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串"%d"
40491d:\t48 89 ce \tmov %rcx,%rsi
404920:\t48 89 c7 \tmov %rax,%rdi
404923:\tb8 00 00 00 00 \tmov $0x0,%eax
404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>

; 验证输入有效性(必须为1个正数)
40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值
404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数
404934:\t75 07 \tjne 40493d <phase_4_01+0xa8> ; 失败则爆炸
404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N
404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0
40493b:\t7f 05 \tjg 404942 <phase_4_01+0xad>
40493d:\te8 b4 12 00 00 \tcall 405bf6 <explode_bomb>

; 检查输入值上限(必须 > 1999)
404942:\t8b 45 ac \tmov -0x54(%rbp),%eax
404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制
40494a:\t7f 05 \tjg 404951 <phase_4_01+0xbc> ; N > 1999?
40494c:\te8 a5 12 00 00 \tcall 405bf6 <explode_bomb>

; 计算 N/2000(通过定点数乘法优化)
404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N
404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展
404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)
40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位
404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000
404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展
404968:\t89 c1 \tmov %eax,%ecx
40496a:\t89 d0 \tmov %edx,%eax
40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况
40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000

; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列
404971:\t8b 45 ac \tmov -0x54(%rbp),%eax
404974:\t89 c7 \tmov %eax,%edi ; 参数k
404976:\te8 ce fd ff ff \tcall 404749 <func4_0> ; 返回值eax=F(k+1)
40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果

; 生成随机索引并验证结果
40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15
404983:\te8 25 cd ff ff \tcall 4016ad <GenerateRandomNumber> ; 生成0~14随机数
404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 <rand_div> ; 获取随机索引
40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值
404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?
404996:\t74 05 \tje 40499d <phase_4_01+0x108>
404998:\te8 59 12 00 00 \tcall 405bf6 <explode_bomb>
\n

所以相对还是很明了的,依旧是关注rand_div

\n

动态调试

先找出rand_div在最后判断前的取值,比如我下面的0xa:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108
bomb_linux`GenerateRandomNumber:
-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div
0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115
bomb_linux`GenerateRandomNumber:
-> 0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
0x401724 <+119>: retq
(lldb) x/gx &rand_div
0x00408820: 0x000000000000000a
\n\n

而当 rand_div = 0xa(即十进制 10)时,输入值 N 的计算步骤如下:

\n
    \n
  • 数组索引 10 的值是 斐波那契数列第 20 项F(20) = 6765)。

    \n
  • \n
  • func4_0(k) 实际计算的是 标准斐波那契数列的第 k+1(例如,func4_0(0) = 1 = F(2)) 需要满足:

    \n
    1
    func4_0(k) = F(k+1) = F(20)
    \n

    解得:
    k + 1 = 20 → k = 19

    \n
  • \n
  • k = N / 2000N = 2000 * k = 2000 * 19 = 38000.
    从而得解。
    \"phase_4\"

    \n
  • \n
\n
\n

Phase_Impossible

Impossible?

\n

从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void phase_impossible(char *param_1)

{
int iVar1;
size_t sVar2;
undefined local_118 [256];
long local_18;
long local_10;

local_10 = GetTickCount();
sVar2 = strlen(param_1);
if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {
explode_bomb();
}
memset(local_118,0,0x100);
tohex(local_118,param_1);
GenerateRandomNumber(0x400);
iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);
if (iVar1 == 0) {
puts(&DAT_00406518);
explode_bomb();
}
GenerateRandomNumber(3);
if (rand_div != 2) {
if (2 < rand_div) goto LAB_00401891;
if (rand_div == 0) {
goto_buf_0(local_118);
}
else if (rand_div != 1) goto LAB_00401891;
goto_buf_1(local_118);
}
goto_buf_2(local_118);
LAB_00401891:
explode_bomb();
GenerateRandomNumber(0x400);
if ((long)(int)result != rand_div) {
printf(&DAT_00406560,rand_div,(ulong)result);
explode_bomb();
}
local_18 = GetTickCount();
if (1000 < (ulong)(local_18 - local_10)) {
puts(&DAT_004065a8);
explode_bomb();
}
return;
}
\n

最终任务还是很明确的,需要写一段机器码修改result的数值,但是注意要能通过check_buf_valid检测,并且最后指令必须是跳转到0x401896不然就会触发phase_impossible0x401891处的explode_bomb函数,唯一的难点是跟踪rand_div的数值变化,建议使用register write来修改check_buf_valid的返回值使其强制通过然后监控rand_div每一次的数值变化(x/gx &rand_div),记录好rand_div的结果后开始指令设计,需要满足:

\n
    \n
  • 指令的异或和为rand_div第一次的数值末尾八位以通过检查;
  • \n
  • 修改result使其数值等于rand_div第三次数值;
  • \n
  • 跳转到0x401896避免炸弹;
  • \n
\n

如果前几问都完成了到这里应该是没有问题的。

\n
\n

Phase_Secret

隐藏彩蛋,并非隐藏。汇编里写的非常清楚:

\n
1
2
3
4
5
6
7
8
9
10
11
12
0000000000401a8b <phase_secret>:
401a8b:\tf3 0f 1e fa \tendbr64
401a8f:\t55 \tpush %rbp
401a90:\t48 89 e5 \tmov %rsp,%rbp
401a93:\t48 83 ec 10 \tsub $0x10,%rsp
401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>
401aa2:\t48 89 c7 \tmov %rax,%rdi
401aa5:\te8 76 f6 ff ff \tcall 401120 <puts@plt>
401aaa:\t90 \tnop
401aab:\tc9 \tleave
401aac:\tc3 \tret
\n

注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在phase_5中设计指令时加一个要求跳转到0x401a8b即可。

\n

完结
\"Case

\n","excerpt":"","more":"

这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。

\n

笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。

\n

Phase_1

静态分析

strings扫描

1
strings bomb_linux
\n

先用strings寻找可能与phase_1相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。
\"strings\"

\n
    \n
  • 结果没有明文密码无法直接秒掉第一问,可惜。
  • \n
  • 但是找到GenerateRandomString函数可能与密码生成相关。
  • \n
\n

objdump反汇编

1
objdump -d bomb_linux > bomb.asm
\n

搜索GenerateRandomStringphase_1函数的汇编代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
401b53 <phase_1>:
401b53: endbr64
401b57: push %rbp
401b58: mov %rsp,%rbp
401b5b: sub $0x20,%rsp
401b5f: mov %rdi,-0x18(%rbp)
401b63: lea -0xb(%rbp),%rax
401b67: mov %rax,%rdi
401b6a: callq 401ac1 <GenerateRandomString> # 调用密码生成函数
401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置
401b73: mov -0x18(%rbp),%rax
401b77: mov %rdx,%rsi
401b7a: mov %rax,%rdi
401b7d: callq 401c0c <string_compare> # 调用字符串比较函数
401b82: test %eax,%eax
401b84: je 401b8d <phase_1+0x3a>
401b86: callq 401d67 <explode_bomb> # 比较失败则引爆炸弹

\n
    \n
  • phase_1调用GenerateRandomString生成一个字符串。
  • \n
  • 用户输入的字符串需要与此生成的字符串完全匹配。
  • \n
\n
\n

动态调试

\"phase_1\"
下面是phase_1求解的完整流程:

\n
1
2
3
4
5
6
7
8
lldb bomb_linux <你的学号后六位>
(lldb) b phase_1 # 在phase_1入口断点
(lldb) run # 从入口开始执行
请输入第1级的密码:114514 # 随便输入触发断点
(lldb) b 0x401b6f # 在GenerateRandomString返回后断点
(lldb) continue # 继续执行
(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)
0x7fffffffdaf5: "mJHurpQZtY" # 轻松拿下,这里是根据学号伪随机生成的哦
\n

将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。

\n
\n

Phase_2

静态分析

这道题目还是比较一目了然的,观察phase_2代码不难发现其实构建了一张跳转表:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0000000000401b8e <phase_2>:
401b8e:\tf3 0f 1e fa \tendbr64
401b92:\t55 \tpush %rbp
401b93:\t48 89 e5 \tmov %rsp,%rbp
401b96:\t48 83 ec 10 \tsub $0x10,%rsp
401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi
401ba3:\te8 05 fb ff ff \tcall 4016ad <GenerateRandomNumber>
401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 <rand_div>
401baf:\t48 83 f8 0f \tcmp $0xf,%rax
401bb3:\t0f 87 16 01 00 00 \tja 401ccf <phase_2+0x141>
401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
401bc0:\t00
401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>
401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
401bcb:\t48 98 \tcltq
401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>
401bd4:\t48 01 d0 \tadd %rdx,%rax
401bd7:\t3e ff e0 \tnotrack jmp *%rax
401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bde:\t48 89 c7 \tmov %rax,%rdi
401be1:\te8 f2 00 00 00 \tcall 401cd8 <phase_2_0>
401be6:\te9 ea 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bef:\t48 89 c7 \tmov %rax,%rdi
401bf2:\te8 8b 01 00 00 \tcall 401d82 <phase_2_1>
401bf7:\te9 d9 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401c00:\t48 89 c7 \tmov %rax,%rdi
...
\n

这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是GenerateRandomNumber这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。

\n
\n

动态调试

理解原理就没什么难度了,自己找几个断点打好然后关注一下rand_div的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向phase_2_14跳转:
\"phase_2_14\"

\n

而除了phase_2_14还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。

\n
\n

Phase_3

静态分析

和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi

\n

本体其实没有什么好说的,这里我跳转的方向是Phase_3_5简要解释一下可供参考:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
0000000000403001 <phase_3_5>:
403001:\tf3 0f 1e fa \tendbr64
403005:\t55 \tpush %rbp
403006:\t48 89 e5 \tmov %rsp,%rbp
403009:\t48 83 ec 20 \tsub $0x20,%rsp
40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)
403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)
403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)
40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx
403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx
403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax
40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>
403032:\t48 89 c7 \tmov %rax,%rdi
403035:\tb8 00 00 00 00 \tmov $0x0,%eax
40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>
40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)
403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)
403046:\t7f 05 \tjg 40304d <phase_3_5+0x4c>
403048:\te8 a9 2b 00 00 \tcall 405bf6 <explode_bomb>
40304d:\tbf 08 00 00 00 \tmov $0x8,%edi
403052:\te8 56 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40305a:\t48 63 d0 \tmovslq %eax,%rdx
40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 <rand_div>
403064:\t48 39 c2 \tcmp %rax,%rdx
403067:\t74 05 \tje 40306e <phase_3_5+0x6d>
403069:\te8 88 2b 00 00 \tcall 405bf6 <explode_bomb>
40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi
403073:\te8 35 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40307b:\t83 f8 07 \tcmp $0x7,%eax
40307e:\t0f 87 eb 00 00 00 \tja 40316f <phase_3_5+0x16e>
403084:\t89 c0 \tmov %eax,%eax
403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
40308d:\t00
40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>
403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
403098:\t48 98 \tcltq
40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>
4030a1:\t48 01 d0 \tadd %rdx,%rax
4030a4:\t3e ff e0 \tnotrack jmp *%rax
4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 <rand_div>
4030ae:\t89 c2 \tmov %eax,%edx
4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax
4030b3:\t01 d0 \tadd %edx,%eax
4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)
4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi
4030bd:\te8 eb e5 ff ff \tcall 4016ad <GenerateRandomNumber>
...
403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax
403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里
40317a:\t74 05 \tje 403181 <phase_3_5+0x180>
40317c:\te8 75 2a 00 00 \tcall 405bf6 <explode_bomb>
403181:\t90 \tnop
403182:\tc9 \tleave
403183:\tc3 \tret

\n

看起来一大堆很吓人对不对?实际上确实很吓人。

\n

但是发现其中玄机后其实简单的没边,最终答案就藏在0x403177里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接run一下重开qwq)。

\n
\n

动态调试

阅读Phase_3_5发现这一关其实需要两个输入,并且第一个输入必须是rand_div,这里建议通过si单步执行监控好rand_div值变化,确定正确结果后使用run重开正确输入第一个密码后才能进行下一步求解:

\n
1
2
3
4
5
6
7
8
9
10
11
(lldb) si
Process 13376 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377
bomb_linux`phase_3_5:
-> 0x40317a <+377>: je 0x403181 ; <+384>
0x40317c <+379>: callq 0x405bf6 ; explode_bomb
0x403181 <+384>: nop
0x403182 <+385>: leave
(lldb) x/wx $rbp-0x4
0x7fffffffdb0c: 0xffffffd7
\n

例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。

\n
\n

Phase_4

静态分析

本题依旧开局跳转,笔者的跳转方向是phase_4_01,如何跳转不再强调关注rand_div的值即可,下面请D指导解读一下phase_4_01的内容:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
0000000000404895 <phase_4_01>:
; 函数入口,初始化栈帧
404895:\tf3 0f 1e fa \tendbr64
404899:\t55 \tpush %rbp
40489a:\t48 89 e5 \tmov %rsp,%rbp
40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间

; 初始化斐波那契数组(F(10)~F(24)的十六进制值)
4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针
4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55
4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89
4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144
4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233
4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377
4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610
4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987
4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597
4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584
4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181
4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765
4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946
4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711
404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657
404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368

; 读取输入到局部变量(格式为"%d")
40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址
404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串
404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串"%d"
40491d:\t48 89 ce \tmov %rcx,%rsi
404920:\t48 89 c7 \tmov %rax,%rdi
404923:\tb8 00 00 00 00 \tmov $0x0,%eax
404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>

; 验证输入有效性(必须为1个正数)
40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值
404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数
404934:\t75 07 \tjne 40493d <phase_4_01+0xa8> ; 失败则爆炸
404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N
404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0
40493b:\t7f 05 \tjg 404942 <phase_4_01+0xad>
40493d:\te8 b4 12 00 00 \tcall 405bf6 <explode_bomb>

; 检查输入值上限(必须 > 1999)
404942:\t8b 45 ac \tmov -0x54(%rbp),%eax
404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制
40494a:\t7f 05 \tjg 404951 <phase_4_01+0xbc> ; N > 1999?
40494c:\te8 a5 12 00 00 \tcall 405bf6 <explode_bomb>

; 计算 N/2000(通过定点数乘法优化)
404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N
404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展
404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)
40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位
404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000
404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展
404968:\t89 c1 \tmov %eax,%ecx
40496a:\t89 d0 \tmov %edx,%eax
40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况
40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000

; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列
404971:\t8b 45 ac \tmov -0x54(%rbp),%eax
404974:\t89 c7 \tmov %eax,%edi ; 参数k
404976:\te8 ce fd ff ff \tcall 404749 <func4_0> ; 返回值eax=F(k+1)
40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果

; 生成随机索引并验证结果
40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15
404983:\te8 25 cd ff ff \tcall 4016ad <GenerateRandomNumber> ; 生成0~14随机数
404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 <rand_div> ; 获取随机索引
40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值
404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?
404996:\t74 05 \tje 40499d <phase_4_01+0x108>
404998:\te8 59 12 00 00 \tcall 405bf6 <explode_bomb>
\n

所以相对还是很明了的,依旧是关注rand_div

\n

动态调试

先找出rand_div在最后判断前的取值,比如我下面的0xa:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108
bomb_linux`GenerateRandomNumber:
-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div
0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115
bomb_linux`GenerateRandomNumber:
-> 0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
0x401724 <+119>: retq
(lldb) x/gx &rand_div
0x00408820: 0x000000000000000a
\n\n

而当 rand_div = 0xa(即十进制 10)时,输入值 N 的计算步骤如下:

\n
    \n
  • 数组索引 10 的值是 斐波那契数列第 20 项F(20) = 6765)。

    \n
  • \n
  • func4_0(k) 实际计算的是 标准斐波那契数列的第 k+1(例如,func4_0(0) = 1 = F(2)) 需要满足:

    \n
    1
    func4_0(k) = F(k+1) = F(20)
    \n

    解得:
    k + 1 = 20 → k = 19

    \n
  • \n
  • k = N / 2000N = 2000 * k = 2000 * 19 = 38000.
    从而得解。
    \"phase_4\"

    \n
  • \n
\n
\n

Phase_Impossible

Impossible?

\n

从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void phase_impossible(char *param_1)

{
int iVar1;
size_t sVar2;
undefined local_118 [256];
long local_18;
long local_10;

local_10 = GetTickCount();
sVar2 = strlen(param_1);
if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {
explode_bomb();
}
memset(local_118,0,0x100);
tohex(local_118,param_1);
GenerateRandomNumber(0x400);
iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);
if (iVar1 == 0) {
puts(&DAT_00406518);
explode_bomb();
}
GenerateRandomNumber(3);
if (rand_div != 2) {
if (2 < rand_div) goto LAB_00401891;
if (rand_div == 0) {
goto_buf_0(local_118);
}
else if (rand_div != 1) goto LAB_00401891;
goto_buf_1(local_118);
}
goto_buf_2(local_118);
LAB_00401891:
explode_bomb();
GenerateRandomNumber(0x400);
if ((long)(int)result != rand_div) {
printf(&DAT_00406560,rand_div,(ulong)result);
explode_bomb();
}
local_18 = GetTickCount();
if (1000 < (ulong)(local_18 - local_10)) {
puts(&DAT_004065a8);
explode_bomb();
}
return;
}
\n

最终任务还是很明确的,需要写一段机器码修改result的数值,但是注意要能通过check_buf_valid检测,并且最后指令必须是跳转到0x401896不然就会触发phase_impossible0x401891处的explode_bomb函数,唯一的难点是跟踪rand_div的数值变化,建议使用register write来修改check_buf_valid的返回值使其强制通过然后监控rand_div每一次的数值变化(x/gx &rand_div),记录好rand_div的结果后开始指令设计,需要满足:

\n
    \n
  • 指令的异或和为rand_div第一次的数值末尾八位以通过检查;
  • \n
  • 修改result使其数值等于rand_div第三次数值;
  • \n
  • 跳转到0x401896避免炸弹;
  • \n
\n

如果前几问都完成了到这里应该是没有问题的。

\n
\n

Phase_Secret

隐藏彩蛋,并非隐藏。汇编里写的非常清楚:

\n
1
2
3
4
5
6
7
8
9
10
11
12
0000000000401a8b <phase_secret>:
401a8b:\tf3 0f 1e fa \tendbr64
401a8f:\t55 \tpush %rbp
401a90:\t48 89 e5 \tmov %rsp,%rbp
401a93:\t48 83 ec 10 \tsub $0x10,%rsp
401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>
401aa2:\t48 89 c7 \tmov %rax,%rdi
401aa5:\te8 76 f6 ff ff \tcall 401120 <puts@plt>
401aaa:\t90 \tnop
401aab:\tc9 \tleave
401aac:\tc3 \tret
\n

注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在phase_5中设计指令时加一个要求跳转到0x401a8b即可。

\n

完结
\"Case

\n"},{"title":"Overleaf Toolkit踩坑记录","date":"2024-11-06T01:56:18.000Z","_content":"\n在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。\n\n具体流程就不赘述了,先将访问[Overleaf Toolkit官方仓库](https://github.com/overleaf/toolkit)将代码clone下来并按照手册执行即可。\n\n## 问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像\n\n在执行 `bin/up` 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。\n\n截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。\n\n### 解决方案:为 Docker 设置代理\n\n通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:\n\n1. 创建一个 `systemd` 服务文件,为 Docker 设置代理。\n2. 编辑 `/etc/systemd/system/docker.service.d/proxy.conf` 文件,添加以下内容(确保已经设置了代理服务器):\n\n ```ini\n [Service]\n Environment=\"HTTP_PROXY=http://:\"\n Environment=\"HTTPS_PROXY=http://:\"\n Environment=\"NO_PROXY=localhost,127.0.0.1\"\n ```\n\n3. 重新加载 `systemd` 配置并重启 Docker:\n\n ```bash\n sudo systemctl daemon-reload\n sudo systemctl restart docker\n ```\n\n4. 重启 Docker 后再次执行 `sudo ./up`,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。\n\n\n---\n\n## 问题二:外部机器无法访问 Overleaf Web 服务\n\n先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。\n\n注意到在默认的 `lib/docker-compose.base.yml` 配置中,Overleaf Web 服务的端口映射方式为 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"`。\n\n### 解决方案:修改端口映射\n\n在 `docker-compose.base.yml` 文件中,删除 `${OVERLEAF_LISTEN_IP:-127.0.0.1}` 前缀,将 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"` 修改为 `\"${OVERLEAF_PORT:-80}:80\"`。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。\n\n修改后的 `docker-compose.base.yml` 端口映射配置如下:\n\n```yaml\n---\nservices:\n\n sharelatex:\n restart: always\n image: \"${IMAGE}\"\n container_name: sharelatex\n volumes:\n - \"${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}\"\n ports:\n #- \"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"\n - \"${OVERLEAF_PORT:-80}:80\"\n environment:\n GIT_BRIDGE_ENABLED: \"${GIT_BRIDGE_ENABLED}\"\n GIT_BRIDGE_HOST: \"git-bridge\"\n GIT_BRIDGE_PORT: \"8000\"\n REDIS_HOST: \"${REDIS_HOST}\"\n REDIS_PORT: \"${REDIS_PORT}\"\n V1_HISTORY_URL: \"http://sharelatex:3100/api\"\n env_file:\n - ../config/variables.env\n stop_grace_period: 60s\n```\n\n完成修改后,重新启动 Docker 服务:\n\n```bash\nsudo ./start\n```\n\n现在,外部机器可以通过服务器的 IP 地址加端口 `{Overleaf_Port}` 访问 Overleaf Web 服务。\n\n---\n\n## 总结\n\n这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 `docker-compose.base.yml` 中的端口映射使外部设备可以访问 Overleaf 服务。\n\n可以在这里参考我的本地[Overleaf](https://overleaf.hifuu.ink)效果,注意安装完后还需要配置latex包和中文字体。\n\n这篇记录希望能为遇到类似问题的朋友提供帮助。\n","source":"_posts/overleaf.md","raw":"---\ntitle: Overleaf Toolkit踩坑记录\ndate: 2024-11-06 09:56:18\ntags: 技术\ncategories: [技术分享]\n---\n\n在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。\n\n具体流程就不赘述了,先将访问[Overleaf Toolkit官方仓库](https://github.com/overleaf/toolkit)将代码clone下来并按照手册执行即可。\n\n## 问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像\n\n在执行 `bin/up` 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。\n\n截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。\n\n### 解决方案:为 Docker 设置代理\n\n通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:\n\n1. 创建一个 `systemd` 服务文件,为 Docker 设置代理。\n2. 编辑 `/etc/systemd/system/docker.service.d/proxy.conf` 文件,添加以下内容(确保已经设置了代理服务器):\n\n ```ini\n [Service]\n Environment=\"HTTP_PROXY=http://:\"\n Environment=\"HTTPS_PROXY=http://:\"\n Environment=\"NO_PROXY=localhost,127.0.0.1\"\n ```\n\n3. 重新加载 `systemd` 配置并重启 Docker:\n\n ```bash\n sudo systemctl daemon-reload\n sudo systemctl restart docker\n ```\n\n4. 重启 Docker 后再次执行 `sudo ./up`,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。\n\n\n---\n\n## 问题二:外部机器无法访问 Overleaf Web 服务\n\n先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。\n\n注意到在默认的 `lib/docker-compose.base.yml` 配置中,Overleaf Web 服务的端口映射方式为 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"`。\n\n### 解决方案:修改端口映射\n\n在 `docker-compose.base.yml` 文件中,删除 `${OVERLEAF_LISTEN_IP:-127.0.0.1}` 前缀,将 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"` 修改为 `\"${OVERLEAF_PORT:-80}:80\"`。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。\n\n修改后的 `docker-compose.base.yml` 端口映射配置如下:\n\n```yaml\n---\nservices:\n\n sharelatex:\n restart: always\n image: \"${IMAGE}\"\n container_name: sharelatex\n volumes:\n - \"${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}\"\n ports:\n #- \"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"\n - \"${OVERLEAF_PORT:-80}:80\"\n environment:\n GIT_BRIDGE_ENABLED: \"${GIT_BRIDGE_ENABLED}\"\n GIT_BRIDGE_HOST: \"git-bridge\"\n GIT_BRIDGE_PORT: \"8000\"\n REDIS_HOST: \"${REDIS_HOST}\"\n REDIS_PORT: \"${REDIS_PORT}\"\n V1_HISTORY_URL: \"http://sharelatex:3100/api\"\n env_file:\n - ../config/variables.env\n stop_grace_period: 60s\n```\n\n完成修改后,重新启动 Docker 服务:\n\n```bash\nsudo ./start\n```\n\n现在,外部机器可以通过服务器的 IP 地址加端口 `{Overleaf_Port}` 访问 Overleaf Web 服务。\n\n---\n\n## 总结\n\n这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 `docker-compose.base.yml` 中的端口映射使外部设备可以访问 Overleaf 服务。\n\n可以在这里参考我的本地[Overleaf](https://overleaf.hifuu.ink)效果,注意安装完后还需要配置latex包和中文字体。\n\n这篇记录希望能为遇到类似问题的朋友提供帮助。\n","slug":"overleaf","published":1,"updated":"2024-11-06T02:31:56.685Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q40018p22b4lpt3rxw","content":"

在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。

\n

具体流程就不赘述了,先将访问Overleaf Toolkit官方仓库将代码clone下来并按照手册执行即可。

\n

问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像

在执行 bin/up 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。

\n

截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。

\n

解决方案:为 Docker 设置代理

通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:

\n
    \n
  1. 创建一个 systemd 服务文件,为 Docker 设置代理。

    \n
  2. \n
  3. 编辑 /etc/systemd/system/docker.service.d/proxy.conf 文件,添加以下内容(确保已经设置了代理服务器):

    \n
    1
    2
    3
    4
    [Service]
    Environment="HTTP_PROXY=http://<your-proxy-server>:<port>"
    Environment="HTTPS_PROXY=http://<your-proxy-server>:<port>"
    Environment="NO_PROXY=localhost,127.0.0.1"
    \n
  4. \n
  5. 重新加载 systemd 配置并重启 Docker:

    \n
    1
    2
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    \n
  6. \n
  7. 重启 Docker 后再次执行 sudo ./up,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。

    \n
  8. \n
\n
\n

问题二:外部机器无法访问 Overleaf Web 服务

先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。

\n

注意到在默认的 lib/docker-compose.base.yml 配置中,Overleaf Web 服务的端口映射方式为 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"

\n

解决方案:修改端口映射

docker-compose.base.yml 文件中,删除 ${OVERLEAF_LISTEN_IP:-127.0.0.1} 前缀,将 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80" 修改为 "${OVERLEAF_PORT:-80}:80"。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。

\n

修改后的 docker-compose.base.yml 端口映射配置如下:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
services:

sharelatex:
restart: always
image: "${IMAGE}"
container_name: sharelatex
volumes:
- "${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}"
ports:
#- "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"
- "${OVERLEAF_PORT:-80}:80"
environment:
GIT_BRIDGE_ENABLED: "${GIT_BRIDGE_ENABLED}"
GIT_BRIDGE_HOST: "git-bridge"
GIT_BRIDGE_PORT: "8000"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
V1_HISTORY_URL: "http://sharelatex:3100/api"
env_file:
- ../config/variables.env
stop_grace_period: 60s
\n\n

完成修改后,重新启动 Docker 服务:

\n
1
sudo ./start
\n\n

现在,外部机器可以通过服务器的 IP 地址加端口 {Overleaf_Port} 访问 Overleaf Web 服务。

\n
\n

总结

这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 docker-compose.base.yml 中的端口映射使外部设备可以访问 Overleaf 服务。

\n

可以在这里参考我的本地Overleaf效果,注意安装完后还需要配置latex包和中文字体。

\n

这篇记录希望能为遇到类似问题的朋友提供帮助。

\n","excerpt":"","more":"

在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。

\n

具体流程就不赘述了,先将访问Overleaf Toolkit官方仓库将代码clone下来并按照手册执行即可。

\n

问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像

在执行 bin/up 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。

\n

截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。

\n

解决方案:为 Docker 设置代理

通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:

\n
    \n
  1. 创建一个 systemd 服务文件,为 Docker 设置代理。

    \n
  2. \n
  3. 编辑 /etc/systemd/system/docker.service.d/proxy.conf 文件,添加以下内容(确保已经设置了代理服务器):

    \n
    1
    2
    3
    4
    [Service]
    Environment="HTTP_PROXY=http://<your-proxy-server>:<port>"
    Environment="HTTPS_PROXY=http://<your-proxy-server>:<port>"
    Environment="NO_PROXY=localhost,127.0.0.1"
    \n
  4. \n
  5. 重新加载 systemd 配置并重启 Docker:

    \n
    1
    2
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    \n
  6. \n
  7. 重启 Docker 后再次执行 sudo ./up,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。

    \n
  8. \n
\n
\n

问题二:外部机器无法访问 Overleaf Web 服务

先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。

\n

注意到在默认的 lib/docker-compose.base.yml 配置中,Overleaf Web 服务的端口映射方式为 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"

\n

解决方案:修改端口映射

docker-compose.base.yml 文件中,删除 ${OVERLEAF_LISTEN_IP:-127.0.0.1} 前缀,将 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80" 修改为 "${OVERLEAF_PORT:-80}:80"。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。

\n

修改后的 docker-compose.base.yml 端口映射配置如下:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
services:

sharelatex:
restart: always
image: "${IMAGE}"
container_name: sharelatex
volumes:
- "${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}"
ports:
#- "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"
- "${OVERLEAF_PORT:-80}:80"
environment:
GIT_BRIDGE_ENABLED: "${GIT_BRIDGE_ENABLED}"
GIT_BRIDGE_HOST: "git-bridge"
GIT_BRIDGE_PORT: "8000"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
V1_HISTORY_URL: "http://sharelatex:3100/api"
env_file:
- ../config/variables.env
stop_grace_period: 60s
\n\n

完成修改后,重新启动 Docker 服务:

\n
1
sudo ./start
\n\n

现在,外部机器可以通过服务器的 IP 地址加端口 {Overleaf_Port} 访问 Overleaf Web 服务。

\n
\n

总结

这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 docker-compose.base.yml 中的端口映射使外部设备可以访问 Overleaf 服务。

\n

可以在这里参考我的本地Overleaf效果,注意安装完后还需要配置latex包和中文字体。

\n

这篇记录希望能为遇到类似问题的朋友提供帮助。

\n"},{"title":"相见恨晚的 SearXNG:打造私人搜索引擎全指南","date":"2025-03-10T14:55:04.000Z","_content":"\n![SearXNG 界面预览](/images/searxng.png) \n**厌倦了商业搜索引擎的广告追踪?** 受够技术社区被 SEO 污染的水文?希望搜索结果里尽量不要呈现C*DN等平台的低质内容?这款开源元搜索引擎 [SearXNG](https://github.com/searxng/searxng) 现在让我直呼真香爱不释手,使用频率远超 Nextcloud 等自建服务。\n\n---\n\n### ▍ 为什么选择 SearXNG?\n✅ **核心优势矩阵** \n| 特性 | 实现方式 | 用户收益 |\n|--------------------|----------------------------|------------------------|\n| 隐私保护 | 匿名聚合第三方结果 | 无搜索历史追踪 |\n| 结果去商业化 | 过滤 SEO 优化内容 | 提升技术资料检索效率 |\n| 多引擎支持 | 集成 Google/Bing/Brave 等 70+ 源 | 规避单一引擎局限 |\n| 界面定制 | 主题引擎分离设计 | 打造个性化搜索门户 |\n\n⚠️ 同类工具对比: \n此前使用的 [luxirty-search](https://github.com/KoriIku/luxirty-search) 也很不错但是依赖 Google CSE,对于内网环境日常使用多少有点不友好。\n\n之前看了下网上普遍推荐docker方案不过部署流程与官方文档有不少出入而且在我本地没法正常运行,这里我们直接按照官方文档来,事不宜迟直接开始部署。\n\n---\n\n### ▍ 极简部署方案\n#### ▶ 环境准备\n```bash\nmkdir -p ~/services/searxng && cd $_ # 随意找个地方创建专用目录\nexport SEARXNG_PORT=8080 # 设置服务端口\n```\n\n#### ▶ 容器化部署\n```bash\n# 拉取官方镜像\ndocker pull searxng/searxng\n\n# 启动容器(推荐绑定持久化配置)\ndocker run -d --restart=unless-stopped \\\n -p ${SEARXNG_PORT}:8080 \\\n -v \"${PWD}/config:/etc/searxng\" \\\n -e \"BASE_URL=http://your-domain.com\" \\\n -e \"INSTANCE_NAME=PrivateSearch\" \\\n searxng/searxng\n```\n📌 参数说明: \n- `-v` 挂载配置文件实现持久化 \n- `--restart` 确保服务异常退出后自动重启 \n- `BASE_URL` 需替换为实际访问域名,不过也可以后续再配置\n\n---\n\n### ▍ 高频问题排雷\n#### 🔴 镜像拉取失败\n**现象**:`Error response from daemon: pull access denied` \n✅ 解决方案: \n参考先前的 [Overleaf Toolkit 踩坑记录](https://blog.hifuu.ink/2024/11/06/overleaf/) 配置镜像加速源\n\n#### 🔴 Google 频繁拦截\n**现象**:`Too Many Requests` 错误频发 \n\n⚠️ 这算是一个玄学问题除了更换代理我还没有发现更好的解决方案\n\n✅ 实战验证方案: \n更换你的代理服务器比如笔者目前在🇺🇸🇭🇰🇯🇵均有购买VPS服务器可作为代理,经尝试总会有可以使用的节点。\n\n📌 在配置文件设置代理: \n```yaml\noutgoing:\n proxies:\n all://:\n - http://
:\n```\n\n---\n\n### ▍ 效果展示与体验\n访问我的生产环境实例 [search.hifuu.ink](https://search.hifuu.ink) 可体验以下功能: \n- 🔍 多引擎结果聚合对比 \n- 🌍 支持 30+ 语言实时翻译 \n- 🛡️ 零 Cookie 跟踪的隐私模式 \n- 🎨 主题切换 \n\n---\n### ▍ 进阶优化建议\n1. **反向代理配置** \n\n网上相关教程应该很多这里不再重复,我的SearXNG服务器通过香港VPS反代到公网使用。\n\n2. **定期维护命令** \n```bash\n# 更新搜索引擎引擎列表\ndocker exec -it searxng python -m searx.engines --update\n```\n\n3. **监控指标集成** \n通过 Prometheus 导出搜索统计:\n```bash\ndocker run -d --network=searxng-net \\\n -v \"${PWD}/metrics:/metrics\" \\\n prom/prometheus --config.file=/metrics/searxng.yml\n``` \n\n---\n\n**🚀 立即行动** \n\n快速拥有对抗 SEO 污染的利器,快来打造你的私人搜索门户吧!部署过程遇到问题欢迎联系笔者交流。\n","source":"_posts/searxng.md","raw":"---\ntitle: 相见恨晚的 SearXNG:打造私人搜索引擎全指南\ndate: 2025-03-10 22:55:04\ntags: [开源工具, 技术分享]\n---\n\n![SearXNG 界面预览](/images/searxng.png) \n**厌倦了商业搜索引擎的广告追踪?** 受够技术社区被 SEO 污染的水文?希望搜索结果里尽量不要呈现C*DN等平台的低质内容?这款开源元搜索引擎 [SearXNG](https://github.com/searxng/searxng) 现在让我直呼真香爱不释手,使用频率远超 Nextcloud 等自建服务。\n\n---\n\n### ▍ 为什么选择 SearXNG?\n✅ **核心优势矩阵** \n| 特性 | 实现方式 | 用户收益 |\n|--------------------|----------------------------|------------------------|\n| 隐私保护 | 匿名聚合第三方结果 | 无搜索历史追踪 |\n| 结果去商业化 | 过滤 SEO 优化内容 | 提升技术资料检索效率 |\n| 多引擎支持 | 集成 Google/Bing/Brave 等 70+ 源 | 规避单一引擎局限 |\n| 界面定制 | 主题引擎分离设计 | 打造个性化搜索门户 |\n\n⚠️ 同类工具对比: \n此前使用的 [luxirty-search](https://github.com/KoriIku/luxirty-search) 也很不错但是依赖 Google CSE,对于内网环境日常使用多少有点不友好。\n\n之前看了下网上普遍推荐docker方案不过部署流程与官方文档有不少出入而且在我本地没法正常运行,这里我们直接按照官方文档来,事不宜迟直接开始部署。\n\n---\n\n### ▍ 极简部署方案\n#### ▶ 环境准备\n```bash\nmkdir -p ~/services/searxng && cd $_ # 随意找个地方创建专用目录\nexport SEARXNG_PORT=8080 # 设置服务端口\n```\n\n#### ▶ 容器化部署\n```bash\n# 拉取官方镜像\ndocker pull searxng/searxng\n\n# 启动容器(推荐绑定持久化配置)\ndocker run -d --restart=unless-stopped \\\n -p ${SEARXNG_PORT}:8080 \\\n -v \"${PWD}/config:/etc/searxng\" \\\n -e \"BASE_URL=http://your-domain.com\" \\\n -e \"INSTANCE_NAME=PrivateSearch\" \\\n searxng/searxng\n```\n📌 参数说明: \n- `-v` 挂载配置文件实现持久化 \n- `--restart` 确保服务异常退出后自动重启 \n- `BASE_URL` 需替换为实际访问域名,不过也可以后续再配置\n\n---\n\n### ▍ 高频问题排雷\n#### 🔴 镜像拉取失败\n**现象**:`Error response from daemon: pull access denied` \n✅ 解决方案: \n参考先前的 [Overleaf Toolkit 踩坑记录](https://blog.hifuu.ink/2024/11/06/overleaf/) 配置镜像加速源\n\n#### 🔴 Google 频繁拦截\n**现象**:`Too Many Requests` 错误频发 \n\n⚠️ 这算是一个玄学问题除了更换代理我还没有发现更好的解决方案\n\n✅ 实战验证方案: \n更换你的代理服务器比如笔者目前在🇺🇸🇭🇰🇯🇵均有购买VPS服务器可作为代理,经尝试总会有可以使用的节点。\n\n📌 在配置文件设置代理: \n```yaml\noutgoing:\n proxies:\n all://:\n - http://
:\n```\n\n---\n\n### ▍ 效果展示与体验\n访问我的生产环境实例 [search.hifuu.ink](https://search.hifuu.ink) 可体验以下功能: \n- 🔍 多引擎结果聚合对比 \n- 🌍 支持 30+ 语言实时翻译 \n- 🛡️ 零 Cookie 跟踪的隐私模式 \n- 🎨 主题切换 \n\n---\n### ▍ 进阶优化建议\n1. **反向代理配置** \n\n网上相关教程应该很多这里不再重复,我的SearXNG服务器通过香港VPS反代到公网使用。\n\n2. **定期维护命令** \n```bash\n# 更新搜索引擎引擎列表\ndocker exec -it searxng python -m searx.engines --update\n```\n\n3. **监控指标集成** \n通过 Prometheus 导出搜索统计:\n```bash\ndocker run -d --network=searxng-net \\\n -v \"${PWD}/metrics:/metrics\" \\\n prom/prometheus --config.file=/metrics/searxng.yml\n``` \n\n---\n\n**🚀 立即行动** \n\n快速拥有对抗 SEO 污染的利器,快来打造你的私人搜索门户吧!部署过程遇到问题欢迎联系笔者交流。\n","slug":"searxng","published":1,"updated":"2025-03-10T15:46:55.535Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q5001ap22b3mby9fa5","content":"

\"SearXNG
厌倦了商业搜索引擎的广告追踪? 受够技术社区被 SEO 污染的水文?希望搜索结果里尽量不要呈现C*DN等平台的低质内容?这款开源元搜索引擎 SearXNG 现在让我直呼真香爱不释手,使用频率远超 Nextcloud 等自建服务。

\n
\n

▍ 为什么选择 SearXNG?

核心优势矩阵

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
特性实现方式用户收益
隐私保护匿名聚合第三方结果无搜索历史追踪
结果去商业化过滤 SEO 优化内容提升技术资料检索效率
多引擎支持集成 Google/Bing/Brave 等 70+ 源规避单一引擎局限
界面定制主题引擎分离设计打造个性化搜索门户
\n

⚠️ 同类工具对比:
此前使用的 luxirty-search 也很不错但是依赖 Google CSE,对于内网环境日常使用多少有点不友好。

\n

之前看了下网上普遍推荐docker方案不过部署流程与官方文档有不少出入而且在我本地没法正常运行,这里我们直接按照官方文档来,事不宜迟直接开始部署。

\n
\n

▍ 极简部署方案

▶ 环境准备

1
2
mkdir -p ~/services/searxng && cd $_  # 随意找个地方创建专用目录
export SEARXNG_PORT=8080 # 设置服务端口
\n\n

▶ 容器化部署

1
2
3
4
5
6
7
8
9
10
# 拉取官方镜像
docker pull searxng/searxng

# 启动容器(推荐绑定持久化配置)
docker run -d --restart=unless-stopped \\
-p ${SEARXNG_PORT}:8080 \\
-v "${PWD}/config:/etc/searxng" \\
-e "BASE_URL=http://your-domain.com" \\
-e "INSTANCE_NAME=PrivateSearch" \\
searxng/searxng
\n

📌 参数说明:

\n
    \n
  • -v 挂载配置文件实现持久化
  • \n
  • --restart 确保服务异常退出后自动重启
  • \n
  • BASE_URL 需替换为实际访问域名,不过也可以后续再配置
  • \n
\n
\n

▍ 高频问题排雷

🔴 镜像拉取失败

现象Error response from daemon: pull access denied
✅ 解决方案:
参考先前的 Overleaf Toolkit 踩坑记录 配置镜像加速源

\n

🔴 Google 频繁拦截

现象Too Many Requests 错误频发

\n

⚠️ 这算是一个玄学问题除了更换代理我还没有发现更好的解决方案

\n

✅ 实战验证方案:
更换你的代理服务器比如笔者目前在🇺🇸🇭🇰🇯🇵均有购买VPS服务器可作为代理,经尝试总会有可以使用的节点。

\n

📌 在配置文件设置代理:

\n
1
2
3
4
outgoing:
proxies:
all://:
- http://<address>:<port>
\n\n
\n

▍ 效果展示与体验

访问我的生产环境实例 search.hifuu.ink 可体验以下功能:

\n
    \n
  • 🔍 多引擎结果聚合对比
  • \n
  • 🌍 支持 30+ 语言实时翻译
  • \n
  • 🛡️ 零 Cookie 跟踪的隐私模式
  • \n
  • 🎨 主题切换
  • \n
\n
\n

▍ 进阶优化建议

    \n
  1. 反向代理配置
  2. \n
\n

网上相关教程应该很多这里不再重复,我的SearXNG服务器通过香港VPS反代到公网使用。

\n
    \n
  1. 定期维护命令

    \n
    1
    2
    # 更新搜索引擎引擎列表
    docker exec -it searxng python -m searx.engines --update
    \n
  2. \n
  3. 监控指标集成
    通过 Prometheus 导出搜索统计:

    \n
    1
    2
    3
    docker run -d --network=searxng-net \\
    -v "${PWD}/metrics:/metrics" \\
    prom/prometheus --config.file=/metrics/searxng.yml
  4. \n
\n
\n

🚀 立即行动

\n

快速拥有对抗 SEO 污染的利器,快来打造你的私人搜索门户吧!部署过程遇到问题欢迎联系笔者交流。

\n","excerpt":"","more":"

\"SearXNG
厌倦了商业搜索引擎的广告追踪? 受够技术社区被 SEO 污染的水文?希望搜索结果里尽量不要呈现C*DN等平台的低质内容?这款开源元搜索引擎 SearXNG 现在让我直呼真香爱不释手,使用频率远超 Nextcloud 等自建服务。

\n
\n

▍ 为什么选择 SearXNG?

核心优势矩阵

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
特性实现方式用户收益
隐私保护匿名聚合第三方结果无搜索历史追踪
结果去商业化过滤 SEO 优化内容提升技术资料检索效率
多引擎支持集成 Google/Bing/Brave 等 70+ 源规避单一引擎局限
界面定制主题引擎分离设计打造个性化搜索门户
\n

⚠️ 同类工具对比:
此前使用的 luxirty-search 也很不错但是依赖 Google CSE,对于内网环境日常使用多少有点不友好。

\n

之前看了下网上普遍推荐docker方案不过部署流程与官方文档有不少出入而且在我本地没法正常运行,这里我们直接按照官方文档来,事不宜迟直接开始部署。

\n
\n

▍ 极简部署方案

▶ 环境准备

1
2
mkdir -p ~/services/searxng && cd $_  # 随意找个地方创建专用目录
export SEARXNG_PORT=8080 # 设置服务端口
\n\n

▶ 容器化部署

1
2
3
4
5
6
7
8
9
10
# 拉取官方镜像
docker pull searxng/searxng

# 启动容器(推荐绑定持久化配置)
docker run -d --restart=unless-stopped \\
-p ${SEARXNG_PORT}:8080 \\
-v "${PWD}/config:/etc/searxng" \\
-e "BASE_URL=http://your-domain.com" \\
-e "INSTANCE_NAME=PrivateSearch" \\
searxng/searxng
\n

📌 参数说明:

\n
    \n
  • -v 挂载配置文件实现持久化
  • \n
  • --restart 确保服务异常退出后自动重启
  • \n
  • BASE_URL 需替换为实际访问域名,不过也可以后续再配置
  • \n
\n
\n

▍ 高频问题排雷

🔴 镜像拉取失败

现象Error response from daemon: pull access denied
✅ 解决方案:
参考先前的 Overleaf Toolkit 踩坑记录 配置镜像加速源

\n

🔴 Google 频繁拦截

现象Too Many Requests 错误频发

\n

⚠️ 这算是一个玄学问题除了更换代理我还没有发现更好的解决方案

\n

✅ 实战验证方案:
更换你的代理服务器比如笔者目前在🇺🇸🇭🇰🇯🇵均有购买VPS服务器可作为代理,经尝试总会有可以使用的节点。

\n

📌 在配置文件设置代理:

\n
1
2
3
4
outgoing:
proxies:
all://:
- http://<address>:<port>
\n\n
\n

▍ 效果展示与体验

访问我的生产环境实例 search.hifuu.ink 可体验以下功能:

\n
    \n
  • 🔍 多引擎结果聚合对比
  • \n
  • 🌍 支持 30+ 语言实时翻译
  • \n
  • 🛡️ 零 Cookie 跟踪的隐私模式
  • \n
  • 🎨 主题切换
  • \n
\n
\n

▍ 进阶优化建议

    \n
  1. 反向代理配置
  2. \n
\n

网上相关教程应该很多这里不再重复,我的SearXNG服务器通过香港VPS反代到公网使用。

\n
    \n
  1. 定期维护命令

    \n
    1
    2
    # 更新搜索引擎引擎列表
    docker exec -it searxng python -m searx.engines --update
    \n
  2. \n
  3. 监控指标集成
    通过 Prometheus 导出搜索统计:

    \n
    1
    2
    3
    docker run -d --network=searxng-net \\
    -v "${PWD}/metrics:/metrics" \\
    prom/prometheus --config.file=/metrics/searxng.yml
  4. \n
\n
\n

🚀 立即行动

\n

快速拥有对抗 SEO 污染的利器,快来打造你的私人搜索门户吧!部署过程遇到问题欢迎联系笔者交流。

\n"},{"title":"命令行编辑器的优雅新选择","date":"2024-12-12T17:40:27.000Z","_content":"\n意外发现Zellij+Helix还挺好用的\n\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境\n\n稍微了解一下二者的快捷键就能舒适码字了\n\n甚至还都是rust出品\n\n即刻尝试一下[Zellij](https://zellij.dev/)和[Helix](https://helix-editor.com/)吧!\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh\n\n![实际效果](/images/zellij-helix.jpg)\n","source":"_posts/zellij-helix.md","raw":"---\ntitle: 命令行编辑器的优雅新选择\ndate: 2024-12-13 01:40:27\ntags: [技术分享]\n---\n\n意外发现Zellij+Helix还挺好用的\n\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境\n\n稍微了解一下二者的快捷键就能舒适码字了\n\n甚至还都是rust出品\n\n即刻尝试一下[Zellij](https://zellij.dev/)和[Helix](https://helix-editor.com/)吧!\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh\n\n![实际效果](/images/zellij-helix.jpg)\n","slug":"zellij-helix","published":1,"updated":"2025-02-23T15:53:44.966Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q70029p22bhwa5h4c5","content":"

意外发现Zellij+Helix还挺好用的

\n

避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境

\n

稍微了解一下二者的快捷键就能舒适码字了

\n

甚至还都是rust出品

\n

即刻尝试一下ZellijHelix吧!

\n

// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh

\n

\"实际效果\"

\n","excerpt":"","more":"

意外发现Zellij+Helix还挺好用的

\n

避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境

\n

稍微了解一下二者的快捷键就能舒适码字了

\n

甚至还都是rust出品

\n

即刻尝试一下ZellijHelix吧!

\n

// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh

\n

\"实际效果\"

\n"},{"title":"原来我还有个博客","date":"2024-06-02T16:19:55.000Z","_content":"\n2025-02-25\n\n最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~\n","source":"_posts/原来我还有个博客.md","raw":"---\ntitle: 原来我还有个博客\ndate: 2024-06-03 00:19:55\ntags: 日志\n---\n\n2025-02-25\n\n最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~\n","slug":"原来我还有个博客","published":1,"updated":"2025-02-25T04:26:34.224Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q7002ap22b9dhe4v4j","content":"

2025-02-25

\n

最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~

\n","excerpt":"","more":"

2025-02-25

\n

最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~

\n"},{"title":"梦开始的地方","date":"2023-12-06T14:53:35.000Z","_content":"\n不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。\n\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。\n\n> P.S.最近我都经历了些什么:\n>\n> 1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;\n> 2. 学习了一些C++基础,在洛谷上刷了不少算法题;\n> 3. ACM招新赛被薄纱,差一题进入校队;\n> 4. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;\n> 5. 入坑战地,爽爽爽;\n> 6. 被一位巨强的学长发掘,加入NUDT超算队;\n> 7. 面临三个考试周,熬过去就是胜利;\n\n虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。\n\n这里,毕竟是我梦开始的地方。\n\n> 胸怀祖国,团结协作,志在高峰,奋勇拼搏!\n\n今天是2023年12月6日,加油!\n\n------------------------\n\n修改一下,有的话还是不适合明说哦\n\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==\n\n","source":"_posts/梦开始的地方.md","raw":"---\ntitle: 梦开始的地方\ndate: 2023-12-06 22:53:35\ntags: 日志\n---\n\n不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。\n\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。\n\n> P.S.最近我都经历了些什么:\n>\n> 1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;\n> 2. 学习了一些C++基础,在洛谷上刷了不少算法题;\n> 3. ACM招新赛被薄纱,差一题进入校队;\n> 4. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;\n> 5. 入坑战地,爽爽爽;\n> 6. 被一位巨强的学长发掘,加入NUDT超算队;\n> 7. 面临三个考试周,熬过去就是胜利;\n\n虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。\n\n这里,毕竟是我梦开始的地方。\n\n> 胸怀祖国,团结协作,志在高峰,奋勇拼搏!\n\n今天是2023年12月6日,加油!\n\n------------------------\n\n修改一下,有的话还是不适合明说哦\n\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==\n\n","slug":"梦开始的地方","published":1,"updated":"2025-02-25T04:25:44.687Z","comments":1,"layout":"post","photos":[],"_id":"cmaxzv0q8002cp22baf84a55t","content":"

不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。

\n

今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。

\n
\n

P.S.最近我都经历了些什么:

\n
    \n
  1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;
  2. \n
  3. 学习了一些C++基础,在洛谷上刷了不少算法题;
  4. \n
  5. ACM招新赛被薄纱,差一题进入校队;
  6. \n
  7. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;
  8. \n
  9. 入坑战地,爽爽爽;
  10. \n
  11. 被一位巨强的学长发掘,加入NUDT超算队;
  12. \n
  13. 面临三个考试周,熬过去就是胜利;
  14. \n
\n
\n

虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。

\n

这里,毕竟是我梦开始的地方。

\n
\n

胸怀祖国,团结协作,志在高峰,奋勇拼搏!

\n
\n

今天是2023年12月6日,加油!

\n
\n

修改一下,有的话还是不适合明说哦

\n

5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==

\n","excerpt":"","more":"

不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。

\n

今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。

\n
\n

P.S.最近我都经历了些什么:

\n
    \n
  1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;
  2. \n
  3. 学习了一些C++基础,在洛谷上刷了不少算法题;
  4. \n
  5. ACM招新赛被薄纱,差一题进入校队;
  6. \n
  7. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;
  8. \n
  9. 入坑战地,爽爽爽;
  10. \n
  11. 被一位巨强的学长发掘,加入NUDT超算队;
  12. \n
  13. 面临三个考试周,熬过去就是胜利;
  14. \n
\n
\n

虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。

\n

这里,毕竟是我梦开始的地方。

\n
\n

胸怀祖国,团结协作,志在高峰,奋勇拼搏!

\n
\n

今天是2023年12月6日,加油!

\n
\n

修改一下,有的话还是不适合明说哦

\n

5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==

\n"},{"title":"Random Fortune","date":"2025-05-22T07:29:07.000Z","_content":"\nKeep peace of mind with fortune...\n\n❯ fortune\n\nThe nice thing about standards is that there are so many of them to choose\nfrom.\n -- Andrew S. Tanenbaum\n\n❯ fortune\n\n看蓬门秋草,年年破巷,疏窗细雨,夜夜孤灯。\n -- 郑板桥《沁园春·恨》\n\n❯ fortune\n\nAn alcoholic is someone you don't like who drinks as much as you do.\n -- Dylan Thomas\n\n❯ fortune\n\nIf you put tomfoolery into a computer, nothing comes out but tomfoolery.\nBut this tomfoolery, having passed through a very expensive machine,\nis somehow ennobled and no-one dare criticise it.\n -- Pierre Gallois\n\n❯ fortune\n\n秋色渐将晚,霜信报黄花。\n -- 叶梦得《水调歌头·秋色渐将晚》\n\n❯ fortune\n\n水精帘里颇黎枕,暖香惹梦鸳鸯锦。江上柳如烟,雁飞残月天。\n藕丝秋色浅,人胜参差剪。双鬓隔香红,玉钗头上风。\n -- 温庭筠《菩萨蛮》\n\n❯ fortune\n\n A disciple of another sect once came to Drescher as he was eating\nhis morning meal. \"I would like to give you this personality test\", said\nthe outsider, \"because I want you to be happy.\"\n Drescher took the paper that was offered him and put it into the\ntoaster -- \"I wish the toaster to be happy too\".\n\n❯ fortune\n\nExample is not the main thing in influencing others. It is the only thing.\n -- Albert Schweitzer\n\n❯ fortune\n\nWe have art that we do not die of the truth.\n -- Nietzsche\n\n❯ fortune\n\n \"Java for the COBOL Programmer\"\n who writes these things?\n people on crack\n and cobol programmers\n :)\n that's redundant.\n\n❯ fortune\n\nI was in this prematurely air conditioned supermarket and there were all\nthese aisles and there were these bathing caps you could buy that had these\nkind of Fourth of July plumes on them that were red and yellow and blue and\nI wasn't tempted to buy one but I was reminded of the fact that I had been\navoiding the beach.\n -- Lucinda Childs \"Einstein On The Beach\"\n\n❯ fortune\n\nIt doesn't matter whether you win or lose -- until you lose.\n\n❯ fortune\n\nTrue leadership is the art of changing a group from what it is to what\nit ought to be.\n -- Virginia Allan\n\n❯ fortune\n\nI keep hearing and reading this nice proverb *if it ain't broke, don't fix\nit*. The latest appearance was in response to [Shlomi\nFish](http://community.livejournal.com/shlomif_tech/37969.html) suggesting\nthat some Ancient Perl code should be replaced by Modern Perl code.\n\nI am not saying that every piece of code should be rewritten every 6 months,\nbut in my understanding that sentence actually translates to *let's wait till\nit breaks and then panic*.\n\nI think people who say that sentence are afraid that the new version will\nbreak something. Sure, there is always a chance that a change introduces an\nerror, but, if we are afraid to touch the code, what will happen when later on\nwe encounter a case where it does not work? For example, if we need to use it\nin a new environment. Will we have the courage to change the code then? How\nmuch will it cost in money, time, and lost sleep?\n\nI think we have been trying to teach ourselves that we should have really good\ntest coverage of our code and then we can easily refactor it and get rid of\ntechnical debt. So why do we keep hearing that sentence?\n\n -- Gabor Szabo\n -- What does \"If it ain't broke, don't fix it.\" really mean? ( )\n\n❯ fortune\n\nPsychoanalysis is that mental illness for which it regards itself a therapy.\n -- Karl Kraus\n\n❯ fortune\n\nWith a rubber duck, one's never alone.\n -- \"The Hitchhiker's Guide to the Galaxy\"\n\n❯ fortune\n\n(Presuming for the sake of argument that it's even *possible* to design\nbetter code in Perl than in C. :-)\n -- Larry Wall on core code vs. module code design\n\n❯ fortune\n\nBut, officer, he's not drunk, I just saw his fingers twitch!\n\n❯ fortune\n\nImbalance of power corrupts and monopoly of power corrupts absolutely.\n -- Genji\n\n❯ fortune\n\nI want a VEGETARIAN BURRITO to go ... with EXTRA MSG!!\n\n❯ fortune\n\n如果你不知道如何表现地高人一等,找个Unix用户,让他做给你看。\n -- Dilbert newsletter 3.0, 1994\n\n❯ fortune\n\n\"The picture's pretty bleak, gentlemen... The world's climates are changing,\nthe mammals are taking over, and we all have a brain about the size of a\nwalnut.\"\n -- some dinosaurs from The Far Side, by Gary Larson\n\n❯ fortune\n\nMost of us feel that marketing types are like a dangerous weapon - keep\n'em unloaded and locked up in a cupboard, and only bring them out when\nyou need them to do a job.\n -- Craig Sanders\n\n❯ fortune\n\n不寐倦长更,披衣出户行。月寒秋竹冷,风切夜窗声。\n -- 李煜《三台令》\n\n❯ fortune\n\n子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”\n-- 论语,为政篇\n\n❯ fortune\n\n \"The jig's up, Elman.\"\n \"Which jig?\"\n -- Jeff Elman\n\n❯ fortune\n\n\"First things first -- but not necessarily in that order\"\n -- The Doctor, \"Doctor Who\"\n\n❯ fortune\n\n波影摇涟,趁熏风,一舸来时,翠阴清昼。去郭轩楹才数里,藓磴松关云岫。\n快屐齿,筇枝先后。空半危亭堪聚远,看洞庭,缥缈争奇秀。人自老,景如旧。\n来帆去棹还知否,问古今,几度斜阳,几番回首?晓色一川谁管领,都付雨荷烟柳,\n知我者,燕朋鸥友。笑拍阑干呼范蠡,甚平吴,却倩垂纶手?吁万古,付卮酒。\n -- 周密《长亭怨慢》\n\n❯ fortune\n\nI'm telling you that the kernel is stable not because it's a kernel,\nbut because I refuse to listen to arguments like this.\n -- Linus Torvalds\n\n❯ fortune\n\nA girl's conscience doesn't really keep her from doing anything wrong--\nit merely keeps her from enjoying it.\n\n❯ fortune\n\nThere are few people more often in the wrong than those who cannot endure\nto be thought so.\n\n❯ fortune\n\nOne does not thank logic.\n -- Sarek, \"Journey to Babel\", stardate 3842.4\n\n❯ fortune\n\nFree yourself from negative influence. Negative thoughts are the old\nhabits that gnaw at the roots of the soul.\nMoses Shongo, (Seneca)\n\n❯ fortune\n\n日月照之何不及此?惟有北风号怒天上来。\n -- 李白《北风行》\n\n❯ fortune\n\nAnyone who is capable of getting themselves made President should on no\naccount be allowed to do the job.\n -- Douglas Adams, \"The Hitchhiker's Guide to the Galaxy\"\n\nAnd here are my mods:-)\n\n❯ pacman -Qs fortune\nlocal/cowfortune 0.1.2-8\n Configurable fortune cookie proclaiming cow (and a few other creatures)\nlocal/fortune-mod 3.22.0-1.1\n The Fortune Cookie Program from BSD games\nlocal/fortune-mod-zh 2.98-1 (fortune-mods)\n Chinese poems for fortune-mod\n","source":"_posts/fortune.md","raw":"---\ntitle: Random fortune \ndate: 2025-05-22 15:29:07\ntags: 日志\n---\n\nKeep peace of mind with fortune...\n\n❯ fortune\n\nThe nice thing about standards is that there are so many of them to choose\nfrom.\n -- Andrew S. Tanenbaum\n\n❯ fortune\n\n看蓬门秋草,年年破巷,疏窗细雨,夜夜孤灯。\n -- 郑板桥《沁园春·恨》\n\n❯ fortune\n\nAn alcoholic is someone you don't like who drinks as much as you do.\n -- Dylan Thomas\n\n❯ fortune\n\nIf you put tomfoolery into a computer, nothing comes out but tomfoolery.\nBut this tomfoolery, having passed through a very expensive machine,\nis somehow ennobled and no-one dare criticise it.\n -- Pierre Gallois\n\n❯ fortune\n\n秋色渐将晚,霜信报黄花。\n -- 叶梦得《水调歌头·秋色渐将晚》\n\n❯ fortune\n\n水精帘里颇黎枕,暖香惹梦鸳鸯锦。江上柳如烟,雁飞残月天。\n藕丝秋色浅,人胜参差剪。双鬓隔香红,玉钗头上风。\n -- 温庭筠《菩萨蛮》\n\n❯ fortune\n\n A disciple of another sect once came to Drescher as he was eating\nhis morning meal. \"I would like to give you this personality test\", said\nthe outsider, \"because I want you to be happy.\"\n Drescher took the paper that was offered him and put it into the\ntoaster -- \"I wish the toaster to be happy too\".\n\n❯ fortune\n\nExample is not the main thing in influencing others. It is the only thing.\n -- Albert Schweitzer\n\n❯ fortune\n\nWe have art that we do not die of the truth.\n -- Nietzsche\n\n❯ fortune\n\n \"Java for the COBOL Programmer\"\n who writes these things?\n people on crack\n and cobol programmers\n :)\n that's redundant.\n\n❯ fortune\n\nI was in this prematurely air conditioned supermarket and there were all\nthese aisles and there were these bathing caps you could buy that had these\nkind of Fourth of July plumes on them that were red and yellow and blue and\nI wasn't tempted to buy one but I was reminded of the fact that I had been\navoiding the beach.\n -- Lucinda Childs \"Einstein On The Beach\"\n\n❯ fortune\n\nIt doesn't matter whether you win or lose -- until you lose.\n\n❯ fortune\n\nTrue leadership is the art of changing a group from what it is to what\nit ought to be.\n -- Virginia Allan\n\n❯ fortune\n\nI keep hearing and reading this nice proverb *if it ain't broke, don't fix\nit*. The latest appearance was in response to [Shlomi\nFish](http://community.livejournal.com/shlomif_tech/37969.html) suggesting\nthat some Ancient Perl code should be replaced by Modern Perl code.\n\nI am not saying that every piece of code should be rewritten every 6 months,\nbut in my understanding that sentence actually translates to *let's wait till\nit breaks and then panic*.\n\nI think people who say that sentence are afraid that the new version will\nbreak something. Sure, there is always a chance that a change introduces an\nerror, but, if we are afraid to touch the code, what will happen when later on\nwe encounter a case where it does not work? For example, if we need to use it\nin a new environment. Will we have the courage to change the code then? How\nmuch will it cost in money, time, and lost sleep?\n\nI think we have been trying to teach ourselves that we should have really good\ntest coverage of our code and then we can easily refactor it and get rid of\ntechnical debt. So why do we keep hearing that sentence?\n\n -- Gabor Szabo\n -- What does \"If it ain't broke, don't fix it.\" really mean? ( )\n\n❯ fortune\n\nPsychoanalysis is that mental illness for which it regards itself a therapy.\n -- Karl Kraus\n\n❯ fortune\n\nWith a rubber duck, one's never alone.\n -- \"The Hitchhiker's Guide to the Galaxy\"\n\n❯ fortune\n\n(Presuming for the sake of argument that it's even *possible* to design\nbetter code in Perl than in C. :-)\n -- Larry Wall on core code vs. module code design\n\n❯ fortune\n\nBut, officer, he's not drunk, I just saw his fingers twitch!\n\n❯ fortune\n\nImbalance of power corrupts and monopoly of power corrupts absolutely.\n -- Genji\n\n❯ fortune\n\nI want a VEGETARIAN BURRITO to go ... with EXTRA MSG!!\n\n❯ fortune\n\n如果你不知道如何表现地高人一等,找个Unix用户,让他做给你看。\n -- Dilbert newsletter 3.0, 1994\n\n❯ fortune\n\n\"The picture's pretty bleak, gentlemen... The world's climates are changing,\nthe mammals are taking over, and we all have a brain about the size of a\nwalnut.\"\n -- some dinosaurs from The Far Side, by Gary Larson\n\n❯ fortune\n\nMost of us feel that marketing types are like a dangerous weapon - keep\n'em unloaded and locked up in a cupboard, and only bring them out when\nyou need them to do a job.\n -- Craig Sanders\n\n❯ fortune\n\n不寐倦长更,披衣出户行。月寒秋竹冷,风切夜窗声。\n -- 李煜《三台令》\n\n❯ fortune\n\n子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”\n-- 论语,为政篇\n\n❯ fortune\n\n \"The jig's up, Elman.\"\n \"Which jig?\"\n -- Jeff Elman\n\n❯ fortune\n\n\"First things first -- but not necessarily in that order\"\n -- The Doctor, \"Doctor Who\"\n\n❯ fortune\n\n波影摇涟,趁熏风,一舸来时,翠阴清昼。去郭轩楹才数里,藓磴松关云岫。\n快屐齿,筇枝先后。空半危亭堪聚远,看洞庭,缥缈争奇秀。人自老,景如旧。\n来帆去棹还知否,问古今,几度斜阳,几番回首?晓色一川谁管领,都付雨荷烟柳,\n知我者,燕朋鸥友。笑拍阑干呼范蠡,甚平吴,却倩垂纶手?吁万古,付卮酒。\n -- 周密《长亭怨慢》\n\n❯ fortune\n\nI'm telling you that the kernel is stable not because it's a kernel,\nbut because I refuse to listen to arguments like this.\n -- Linus Torvalds\n\n❯ fortune\n\nA girl's conscience doesn't really keep her from doing anything wrong--\nit merely keeps her from enjoying it.\n\n❯ fortune\n\nThere are few people more often in the wrong than those who cannot endure\nto be thought so.\n\n❯ fortune\n\nOne does not thank logic.\n -- Sarek, \"Journey to Babel\", stardate 3842.4\n\n❯ fortune\n\nFree yourself from negative influence. Negative thoughts are the old\nhabits that gnaw at the roots of the soul.\nMoses Shongo, (Seneca)\n\n❯ fortune\n\n日月照之何不及此?惟有北风号怒天上来。\n -- 李白《北风行》\n\n❯ fortune\n\nAnyone who is capable of getting themselves made President should on no\naccount be allowed to do the job.\n -- Douglas Adams, \"The Hitchhiker's Guide to the Galaxy\"\n\nAnd here are my mods:-)\n\n❯ pacman -Qs fortune\nlocal/cowfortune 0.1.2-8\n Configurable fortune cookie proclaiming cow (and a few other creatures)\nlocal/fortune-mod 3.22.0-1.1\n The Fortune Cookie Program from BSD games\nlocal/fortune-mod-zh 2.98-1 (fortune-mods)\n Chinese poems for fortune-mod\n","slug":"fortune","published":1,"updated":"2025-05-22T07:41:08.523Z","comments":1,"layout":"post","photos":[],"_id":"cmaz2c2xm0000tz2b34byazwp","content":"

Keep peace of mind with fortune…

\n

❯ fortune

\n

The nice thing about standards is that there are so many of them to choose
from.
– Andrew S. Tanenbaum

\n

❯ fortune

\n

看蓬门秋草,年年破巷,疏窗细雨,夜夜孤灯。
– 郑板桥《沁园春·恨》

\n

❯ fortune

\n

An alcoholic is someone you don’t like who drinks as much as you do.
– Dylan Thomas

\n

❯ fortune

\n

If you put tomfoolery into a computer, nothing comes out but tomfoolery.
But this tomfoolery, having passed through a very expensive machine,
is somehow ennobled and no-one dare criticise it.
– Pierre Gallois

\n

❯ fortune

\n

秋色渐将晚,霜信报黄花。
– 叶梦得《水调歌头·秋色渐将晚》

\n

❯ fortune

\n

水精帘里颇黎枕,暖香惹梦鸳鸯锦。江上柳如烟,雁飞残月天。
藕丝秋色浅,人胜参差剪。双鬓隔香红,玉钗头上风。
– 温庭筠《菩萨蛮》

\n

❯ fortune

\n
    A disciple of another sect once came to Drescher as he was eating\n
\n

his morning meal. “I would like to give you this personality test”, said
the outsider, “because I want you to be happy.”
Drescher took the paper that was offered him and put it into the
toaster – “I wish the toaster to be happy too”.

\n

❯ fortune

\n

Example is not the main thing in influencing others. It is the only thing.
– Albert Schweitzer

\n

❯ fortune

\n

We have art that we do not die of the truth.
– Nietzsche

\n

❯ fortune

\n

“Java for the COBOL Programmer”
who writes these things?
people on crack
and cobol programmers
:)
that’s redundant.

\n

❯ fortune

\n

I was in this prematurely air conditioned supermarket and there were all
these aisles and there were these bathing caps you could buy that had these
kind of Fourth of July plumes on them that were red and yellow and blue and
I wasn’t tempted to buy one but I was reminded of the fact that I had been
avoiding the beach.
– Lucinda Childs “Einstein On The Beach”

\n

❯ fortune

\n

It doesn’t matter whether you win or lose – until you lose.

\n

❯ fortune

\n

True leadership is the art of changing a group from what it is to what
it ought to be.
– Virginia Allan

\n

❯ fortune

\n

I keep hearing and reading this nice proverb if it ain’t broke, don’t fix
it
. The latest appearance was in response to Shlomi
Fish
suggesting
that some Ancient Perl code should be replaced by Modern Perl code.

\n

I am not saying that every piece of code should be rewritten every 6 months,
but in my understanding that sentence actually translates to let’s wait till
it breaks and then panic
.

\n

I think people who say that sentence are afraid that the new version will
break something. Sure, there is always a chance that a change introduces an
error, but, if we are afraid to touch the code, what will happen when later on
we encounter a case where it does not work? For example, if we need to use it
in a new environment. Will we have the courage to change the code then? How
much will it cost in money, time, and lost sleep?

\n

I think we have been trying to teach ourselves that we should have really good
test coverage of our code and then we can easily refactor it and get rid of
technical debt. So why do we keep hearing that sentence?

\n
-- Gabor Szabo\n-- What does "If it ain't broke, don't fix it." really mean? (  )\n
\n

❯ fortune

\n

Psychoanalysis is that mental illness for which it regards itself a therapy.
– Karl Kraus

\n

❯ fortune

\n

With a rubber duck, one’s never alone.
– “The Hitchhiker’s Guide to the Galaxy”

\n

❯ fortune

\n

(Presuming for the sake of argument that it’s even possible to design
better code in Perl than in C. :-)
– Larry Wall on core code vs. module code design

\n

❯ fortune

\n

But, officer, he’s not drunk, I just saw his fingers twitch!

\n

❯ fortune

\n

Imbalance of power corrupts and monopoly of power corrupts absolutely.
– Genji

\n

❯ fortune

\n

I want a VEGETARIAN BURRITO to go … with EXTRA MSG!!

\n

❯ fortune

\n

如果你不知道如何表现地高人一等,找个Unix用户,让他做给你看。
– Dilbert newsletter 3.0, 1994

\n

❯ fortune

\n

“The picture’s pretty bleak, gentlemen… The world’s climates are changing,
the mammals are taking over, and we all have a brain about the size of a
walnut.”
– some dinosaurs from The Far Side, by Gary Larson

\n

❯ fortune

\n

Most of us feel that marketing types are like a dangerous weapon - keep
‘em unloaded and locked up in a cupboard, and only bring them out when
you need them to do a job.
– Craig Sanders

\n

❯ fortune

\n

不寐倦长更,披衣出户行。月寒秋竹冷,风切夜窗声。
– 李煜《三台令》

\n

❯ fortune

\n

子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”
– 论语,为政篇

\n

❯ fortune

\n
    "The jig's up, Elman."\n    "Which jig?"\n            -- Jeff Elman\n
\n

❯ fortune

\n

“First things first – but not necessarily in that order”
– The Doctor, “Doctor Who”

\n

❯ fortune

\n

波影摇涟,趁熏风,一舸来时,翠阴清昼。去郭轩楹才数里,藓磴松关云岫。
快屐齿,筇枝先后。空半危亭堪聚远,看洞庭,缥缈争奇秀。人自老,景如旧。
来帆去棹还知否,问古今,几度斜阳,几番回首?晓色一川谁管领,都付雨荷烟柳,
知我者,燕朋鸥友。笑拍阑干呼范蠡,甚平吴,却倩垂纶手?吁万古,付卮酒。
– 周密《长亭怨慢》

\n

❯ fortune

\n

I’m telling you that the kernel is stable not because it’s a kernel,
but because I refuse to listen to arguments like this.
– Linus Torvalds

\n

❯ fortune

\n

A girl’s conscience doesn’t really keep her from doing anything wrong–
it merely keeps her from enjoying it.

\n

❯ fortune

\n

There are few people more often in the wrong than those who cannot endure
to be thought so.

\n

❯ fortune

\n

One does not thank logic.
– Sarek, “Journey to Babel”, stardate 3842.4

\n

❯ fortune

\n

Free yourself from negative influence. Negative thoughts are the old
habits that gnaw at the roots of the soul.
Moses Shongo, (Seneca)

\n

❯ fortune

\n

日月照之何不及此?惟有北风号怒天上来。
– 李白《北风行》

\n

❯ fortune

\n

Anyone who is capable of getting themselves made President should on no
account be allowed to do the job.
– Douglas Adams, “The Hitchhiker’s Guide to the Galaxy”

\n

And here are my mods:-)

\n

❯ pacman -Qs fortune
local/cowfortune 0.1.2-8
Configurable fortune cookie proclaiming cow (and a few other creatures)
local/fortune-mod 3.22.0-1.1
The Fortune Cookie Program from BSD games
local/fortune-mod-zh 2.98-1 (fortune-mods)
Chinese poems for fortune-mod

\n","excerpt":"","more":"

Keep peace of mind with fortune…

\n

❯ fortune

\n

The nice thing about standards is that there are so many of them to choose
from.
– Andrew S. Tanenbaum

\n

❯ fortune

\n

看蓬门秋草,年年破巷,疏窗细雨,夜夜孤灯。
– 郑板桥《沁园春·恨》

\n

❯ fortune

\n

An alcoholic is someone you don’t like who drinks as much as you do.
– Dylan Thomas

\n

❯ fortune

\n

If you put tomfoolery into a computer, nothing comes out but tomfoolery.
But this tomfoolery, having passed through a very expensive machine,
is somehow ennobled and no-one dare criticise it.
– Pierre Gallois

\n

❯ fortune

\n

秋色渐将晚,霜信报黄花。
– 叶梦得《水调歌头·秋色渐将晚》

\n

❯ fortune

\n

水精帘里颇黎枕,暖香惹梦鸳鸯锦。江上柳如烟,雁飞残月天。
藕丝秋色浅,人胜参差剪。双鬓隔香红,玉钗头上风。
– 温庭筠《菩萨蛮》

\n

❯ fortune

\n
    A disciple of another sect once came to Drescher as he was eating\n
\n

his morning meal. “I would like to give you this personality test”, said
the outsider, “because I want you to be happy.”
Drescher took the paper that was offered him and put it into the
toaster – “I wish the toaster to be happy too”.

\n

❯ fortune

\n

Example is not the main thing in influencing others. It is the only thing.
– Albert Schweitzer

\n

❯ fortune

\n

We have art that we do not die of the truth.
– Nietzsche

\n

❯ fortune

\n

“Java for the COBOL Programmer”
who writes these things?
people on crack
and cobol programmers
:)
that’s redundant.

\n

❯ fortune

\n

I was in this prematurely air conditioned supermarket and there were all
these aisles and there were these bathing caps you could buy that had these
kind of Fourth of July plumes on them that were red and yellow and blue and
I wasn’t tempted to buy one but I was reminded of the fact that I had been
avoiding the beach.
– Lucinda Childs “Einstein On The Beach”

\n

❯ fortune

\n

It doesn’t matter whether you win or lose – until you lose.

\n

❯ fortune

\n

True leadership is the art of changing a group from what it is to what
it ought to be.
– Virginia Allan

\n

❯ fortune

\n

I keep hearing and reading this nice proverb if it ain’t broke, don’t fix
it
. The latest appearance was in response to Shlomi
Fish
suggesting
that some Ancient Perl code should be replaced by Modern Perl code.

\n

I am not saying that every piece of code should be rewritten every 6 months,
but in my understanding that sentence actually translates to let’s wait till
it breaks and then panic
.

\n

I think people who say that sentence are afraid that the new version will
break something. Sure, there is always a chance that a change introduces an
error, but, if we are afraid to touch the code, what will happen when later on
we encounter a case where it does not work? For example, if we need to use it
in a new environment. Will we have the courage to change the code then? How
much will it cost in money, time, and lost sleep?

\n

I think we have been trying to teach ourselves that we should have really good
test coverage of our code and then we can easily refactor it and get rid of
technical debt. So why do we keep hearing that sentence?

\n
-- Gabor Szabo\n-- What does "If it ain't broke, don't fix it." really mean? (  )\n
\n

❯ fortune

\n

Psychoanalysis is that mental illness for which it regards itself a therapy.
– Karl Kraus

\n

❯ fortune

\n

With a rubber duck, one’s never alone.
– “The Hitchhiker’s Guide to the Galaxy”

\n

❯ fortune

\n

(Presuming for the sake of argument that it’s even possible to design
better code in Perl than in C. :-)
– Larry Wall on core code vs. module code design

\n

❯ fortune

\n

But, officer, he’s not drunk, I just saw his fingers twitch!

\n

❯ fortune

\n

Imbalance of power corrupts and monopoly of power corrupts absolutely.
– Genji

\n

❯ fortune

\n

I want a VEGETARIAN BURRITO to go … with EXTRA MSG!!

\n

❯ fortune

\n

如果你不知道如何表现地高人一等,找个Unix用户,让他做给你看。
– Dilbert newsletter 3.0, 1994

\n

❯ fortune

\n

“The picture’s pretty bleak, gentlemen… The world’s climates are changing,
the mammals are taking over, and we all have a brain about the size of a
walnut.”
– some dinosaurs from The Far Side, by Gary Larson

\n

❯ fortune

\n

Most of us feel that marketing types are like a dangerous weapon - keep
‘em unloaded and locked up in a cupboard, and only bring them out when
you need them to do a job.
– Craig Sanders

\n

❯ fortune

\n

不寐倦长更,披衣出户行。月寒秋竹冷,风切夜窗声。
– 李煜《三台令》

\n

❯ fortune

\n

子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”
– 论语,为政篇

\n

❯ fortune

\n
    "The jig's up, Elman."\n    "Which jig?"\n            -- Jeff Elman\n
\n

❯ fortune

\n

“First things first – but not necessarily in that order”
– The Doctor, “Doctor Who”

\n

❯ fortune

\n

波影摇涟,趁熏风,一舸来时,翠阴清昼。去郭轩楹才数里,藓磴松关云岫。
快屐齿,筇枝先后。空半危亭堪聚远,看洞庭,缥缈争奇秀。人自老,景如旧。
来帆去棹还知否,问古今,几度斜阳,几番回首?晓色一川谁管领,都付雨荷烟柳,
知我者,燕朋鸥友。笑拍阑干呼范蠡,甚平吴,却倩垂纶手?吁万古,付卮酒。
– 周密《长亭怨慢》

\n

❯ fortune

\n

I’m telling you that the kernel is stable not because it’s a kernel,
but because I refuse to listen to arguments like this.
– Linus Torvalds

\n

❯ fortune

\n

A girl’s conscience doesn’t really keep her from doing anything wrong–
it merely keeps her from enjoying it.

\n

❯ fortune

\n

There are few people more often in the wrong than those who cannot endure
to be thought so.

\n

❯ fortune

\n

One does not thank logic.
– Sarek, “Journey to Babel”, stardate 3842.4

\n

❯ fortune

\n

Free yourself from negative influence. Negative thoughts are the old
habits that gnaw at the roots of the soul.
Moses Shongo, (Seneca)

\n

❯ fortune

\n

日月照之何不及此?惟有北风号怒天上来。
– 李白《北风行》

\n

❯ fortune

\n

Anyone who is capable of getting themselves made President should on no
account be allowed to do the job.
– Douglas Adams, “The Hitchhiker’s Guide to the Galaxy”

\n

And here are my mods:-)

\n

❯ pacman -Qs fortune
local/cowfortune 0.1.2-8
Configurable fortune cookie proclaiming cow (and a few other creatures)
local/fortune-mod 3.22.0-1.1
The Fortune Cookie Program from BSD games
local/fortune-mod-zh 2.98-1 (fortune-mods)
Chinese poems for fortune-mod

\n"},{"title":"GCC15 函数指针类型检查可能导致编译错误","date":"2025-05-23T13:49:02.000Z","_content":"\n今天准备继续做一下OS课的实验,实验代码当然是基于著名的xv6项目,意外地发现原本明明正常运行的系统再次构建时却失败了,具体报错如下:\n\n```GCC\nuser/usertests.c:2598:4: error: initialization of 'void (*)(char *)' from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types]\n 2598 | {rwsbrk, \"rwsbrk\" },\n | ^~~~~~\nuser/usertests.c:2598:4: note: (near initialization for 'quicktests[5].f')\nuser/usertests.c:247:1: note: 'rwsbrk' declared here\n 247 | rwsbrk()\n | ^~~~~~\nmake: *** [<内置>:user/usertests.o] 错误 1\n\n```\n而具体定位到的代码则是:\n```C\nstruct test {\n void (*f)(char *);\n char *s;\n} quicktests[] = {\n {copyin, \"copyin\"},\n {copyout, \"copyout\"},\n {copyinstr1, \"copyinstr1\"},\n {copyinstr2, \"copyinstr2\"},\n {copyinstr3, \"copyinstr3\"},\n {rwsbrk, \"rwsbrk\" },\n ...\n { 0, 0},\n};\n// See if the kernel refuses to read/write user memory that the\n// application doesn't have anymore, because it returned it.\nvoid\nrwsbrk()\n{\n int fd, n;\n \n uint64 a = (uint64) sbrk(8192);\n\n if(a == 0xffffffffffffffffLL) {\n printf(\"sbrk(rwsbrk) failed\\n\");\n exit(1);\n }\n ...\n exit(0);\n}\n```\n\n这段代码定义了一个函数指针数组,其中每个元素都指向一个函数和它的名称。结构体期望的函数签名是 `void(*)(char*)`,但传入的是一个没有参数的函数 `void(*)(void)`,这会导致函数指针类型不匹配。\n\n但是之前明明是没有问题的怎么现在突然出错呢?仔细一想立刻就怀疑是之前arch更新的时候把gcc升上去导致的,结果查了下大概确实是这样。\n\n- 在 **GCC 14 及之前版本**,这类赋值虽然不符合 C 标准,但 GCC 作为扩展允许这种行为。\n- 从 **GCC 15 开始**,这类隐式转换默认触发编译错误或警告(取决于编译器配置),因为 GCC 变得更加严格地遵循标准 C 的函数指针类型规则。\n\n这并不是 xv6 本身的 bug,而是 GCC 编译器对语言规范支持的更新带来的兼容性问题。解决方法倒是简单,直接给`rwsbrk`函数添加参数改为`void rwsbrk(char* arg)`即可解决,强制类型转换也是一种办法。这次事件再次告诉我们什么都升到最新并不是什么好事情,arch用户总是要花时间处理一些莫名其妙的兼容性问题:-)\n\n\n","source":"_posts/gcc15restrict.md","raw":"---\ntitle: GCC15 函数指针类型检查可能导致编译错误\ndate: 2025-05-23 21:49:02\ntags: 技术\n---\n\n今天准备继续做一下OS课的实验,实验代码当然是基于著名的xv6项目,意外地发现原本明明正常运行的系统再次构建时却失败了,具体报错如下:\n\n```GCC\nuser/usertests.c:2598:4: error: initialization of 'void (*)(char *)' from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types]\n 2598 | {rwsbrk, \"rwsbrk\" },\n | ^~~~~~\nuser/usertests.c:2598:4: note: (near initialization for 'quicktests[5].f')\nuser/usertests.c:247:1: note: 'rwsbrk' declared here\n 247 | rwsbrk()\n | ^~~~~~\nmake: *** [<内置>:user/usertests.o] 错误 1\n\n```\n而具体定位到的代码则是:\n```C\nstruct test {\n void (*f)(char *);\n char *s;\n} quicktests[] = {\n {copyin, \"copyin\"},\n {copyout, \"copyout\"},\n {copyinstr1, \"copyinstr1\"},\n {copyinstr2, \"copyinstr2\"},\n {copyinstr3, \"copyinstr3\"},\n {rwsbrk, \"rwsbrk\" },\n ...\n { 0, 0},\n};\n// See if the kernel refuses to read/write user memory that the\n// application doesn't have anymore, because it returned it.\nvoid\nrwsbrk()\n{\n int fd, n;\n \n uint64 a = (uint64) sbrk(8192);\n\n if(a == 0xffffffffffffffffLL) {\n printf(\"sbrk(rwsbrk) failed\\n\");\n exit(1);\n }\n ...\n exit(0);\n}\n```\n\n这段代码定义了一个函数指针数组,其中每个元素都指向一个函数和它的名称。结构体期望的函数签名是 `void(*)(char*)`,但传入的是一个没有参数的函数 `void(*)(void)`,这会导致函数指针类型不匹配。\n\n但是之前明明是没有问题的怎么现在突然出错呢?仔细一想立刻就怀疑是之前arch更新的时候把gcc升上去导致的,结果查了下大概确实是这样。\n\n- 在 **GCC 14 及之前版本**,这类赋值虽然不符合 C 标准,但 GCC 作为扩展允许这种行为。\n- 从 **GCC 15 开始**,这类隐式转换默认触发编译错误或警告(取决于编译器配置),因为 GCC 变得更加严格地遵循标准 C 的函数指针类型规则。\n\n这并不是 xv6 本身的 bug,而是 GCC 编译器对语言规范支持的更新带来的兼容性问题。解决方法倒是简单,直接给`rwsbrk`函数添加参数改为`void rwsbrk(char* arg)`即可解决,强制类型转换也是一种办法。这次事件再次告诉我们什么都升到最新并不是什么好事情,arch用户总是要花时间处理一些莫名其妙的兼容性问题:-)\n\n\n","slug":"gcc15restrict","published":1,"updated":"2025-05-23T14:01:33.929Z","comments":1,"layout":"post","photos":[],"_id":"cmb0vd8sn0000ln2bh1it9gy6","content":"

今天准备继续做一下OS课的实验,实验代码当然是基于著名的xv6项目,意外地发现原本明明正常运行的系统再次构建时却失败了,具体报错如下:

\n
1
2
3
4
5
6
7
8
9
user/usertests.c:2598:4: error: initialization of 'void (*)(char *)' from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types]
2598 | {rwsbrk, "rwsbrk" },
| ^~~~~~
user/usertests.c:2598:4: note: (near initialization for 'quicktests[5].f')
user/usertests.c:247:1: note: 'rwsbrk' declared here
247 | rwsbrk()
| ^~~~~~
make: *** [<内置>:user/usertests.o] 错误 1

\n

而具体定位到的代码则是:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
struct test {
void (*f)(char *);
char *s;
} quicktests[] = {
{copyin, "copyin"},
{copyout, "copyout"},
{copyinstr1, "copyinstr1"},
{copyinstr2, "copyinstr2"},
{copyinstr3, "copyinstr3"},
{rwsbrk, "rwsbrk" },
...
{ 0, 0},
};
// See if the kernel refuses to read/write user memory that the
// application doesn't have anymore, because it returned it.
void
rwsbrk()
{
int fd, n;

uint64 a = (uint64) sbrk(8192);

if(a == 0xffffffffffffffffLL) {
printf("sbrk(rwsbrk) failed\\n");
exit(1);
}
...
exit(0);
}
\n\n

这段代码定义了一个函数指针数组,其中每个元素都指向一个函数和它的名称。结构体期望的函数签名是 void(*)(char*),但传入的是一个没有参数的函数 void(*)(void),这会导致函数指针类型不匹配。

\n

但是之前明明是没有问题的怎么现在突然出错呢?仔细一想立刻就怀疑是之前arch更新的时候把gcc升上去导致的,结果查了下大概确实是这样。

\n
    \n
  • GCC 14 及之前版本,这类赋值虽然不符合 C 标准,但 GCC 作为扩展允许这种行为。
  • \n
  • GCC 15 开始,这类隐式转换默认触发编译错误或警告(取决于编译器配置),因为 GCC 变得更加严格地遵循标准 C 的函数指针类型规则。
  • \n
\n

这并不是 xv6 本身的 bug,而是 GCC 编译器对语言规范支持的更新带来的兼容性问题。解决方法倒是简单,直接给rwsbrk函数添加参数改为void rwsbrk(char* arg)即可解决,强制类型转换也是一种办法。这次事件再次告诉我们什么都升到最新并不是什么好事情,arch用户总是要花时间处理一些莫名其妙的兼容性问题:-)

\n","excerpt":"","more":"

今天准备继续做一下OS课的实验,实验代码当然是基于著名的xv6项目,意外地发现原本明明正常运行的系统再次构建时却失败了,具体报错如下:

\n
1
2
3
4
5
6
7
8
9
user/usertests.c:2598:4: error: initialization of 'void (*)(char *)' from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types]
2598 | {rwsbrk, "rwsbrk" },
| ^~~~~~
user/usertests.c:2598:4: note: (near initialization for 'quicktests[5].f')
user/usertests.c:247:1: note: 'rwsbrk' declared here
247 | rwsbrk()
| ^~~~~~
make: *** [<内置>:user/usertests.o] 错误 1

\n

而具体定位到的代码则是:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
struct test {
void (*f)(char *);
char *s;
} quicktests[] = {
{copyin, "copyin"},
{copyout, "copyout"},
{copyinstr1, "copyinstr1"},
{copyinstr2, "copyinstr2"},
{copyinstr3, "copyinstr3"},
{rwsbrk, "rwsbrk" },
...
{ 0, 0},
};
// See if the kernel refuses to read/write user memory that the
// application doesn't have anymore, because it returned it.
void
rwsbrk()
{
int fd, n;

uint64 a = (uint64) sbrk(8192);

if(a == 0xffffffffffffffffLL) {
printf("sbrk(rwsbrk) failed\\n");
exit(1);
}
...
exit(0);
}
\n\n

这段代码定义了一个函数指针数组,其中每个元素都指向一个函数和它的名称。结构体期望的函数签名是 void(*)(char*),但传入的是一个没有参数的函数 void(*)(void),这会导致函数指针类型不匹配。

\n

但是之前明明是没有问题的怎么现在突然出错呢?仔细一想立刻就怀疑是之前arch更新的时候把gcc升上去导致的,结果查了下大概确实是这样。

\n
    \n
  • GCC 14 及之前版本,这类赋值虽然不符合 C 标准,但 GCC 作为扩展允许这种行为。
  • \n
  • GCC 15 开始,这类隐式转换默认触发编译错误或警告(取决于编译器配置),因为 GCC 变得更加严格地遵循标准 C 的函数指针类型规则。
  • \n
\n

这并不是 xv6 本身的 bug,而是 GCC 编译器对语言规范支持的更新带来的兼容性问题。解决方法倒是简单,直接给rwsbrk函数添加参数改为void rwsbrk(char* arg)即可解决,强制类型转换也是一种办法。这次事件再次告诉我们什么都升到最新并不是什么好事情,arch用户总是要花时间处理一些莫名其妙的兼容性问题:-)

\n"},{"title":"Krita 为什么是神?","date":"2025-07-13T11:46:39.000Z","_content":"\n![神的官网](/images/krita-official.png)\n\n在谈论这个问题之前,我想先说说其他软件相较于 [Krita](https://krita.org/en/) 究竟差在了哪里。\n\n---\n\n### 首先是犯下傲慢之罪的 Adobe Photoshop\n\n依靠其在商业设计领域的绝对霸主地位赢来的市场,却不愿真正听取数字绘画创作者的声音!这种傲慢的软件注定无法触及绘画的灵魂。事实也是如此,因为高昂的订阅费用和臃肿的体量,以及对触摸屏设备支持的迟滞,Photoshop 在许多数字画师心中的地位一直在走下坡路,最终沦为商业生产的工具而非艺术创作的乐园。与之相比,**神** 就很谦卑,它免费开源,轻巧灵活,全平台支持,即便在某些方面为了兼容性和稳定性而做出妥协,那也是 **神** 留给凡人的慈悲。**神** 不是不能做到像 PS 那样无所不能,只是不想通过太完美的表现让“友商”绝望所以故意不用。可笑有些人不理解 **神** 的良苦用心,竟然还用其某些非核心功能上的不足来讥讽 **神**,我劝你们好自为之。\n\n---\n\n### 然后是犯下愤怒之罪的 GIMP\n\n因为 **神** 在数字绘画领域的崛起,GIMP 就一直对神记恨在心,甚至固守其“万能”的图像处理定位,对绘画功能上的迭代迟迟不肯投入资源。这无疑违背了 **神** 在《新约》中的一句话:“**Krita** 只为创作者而生!”**神** 当然也不能容忍其他开源软件对绘画创作的敷衍,于是 **神** 出动了它的“代码大军”降下了神罚,GIMP 在绘画圈的风评一蹶不振,即便有诸多插件以及强势归来的3.0大版本更新也无法挽回其作为“绘画软件”使用时的颓势。\n\n---\n\n### 接着是犯下懒惰之罪的 Procreate\n\n自以为有 iPad 的独占优势和流畅的笔触就了不起了,对图层管理、多文档支持以及跨平台协作就一直摆烂。另外大家有所不知,其实在 Procreate 首次发布前夕,其开发者闭上眼睛做冥想的时候,其脑海中看见的画面,正是站在光芒之中的 **神**。那时神告诉他:“你只可到这里,不可越过。”然而,**神** 的劝说不但没有让 Procreate 迷途知返,竟然还敢在移动设备上挑战神的威严,妄图通过封闭的生态垄断市场。于是 **神** 降下了他的惩罚,Procreate 在专业性上身败名裂,其以流畅为名的笔刷也被 **神** 在笔刷引擎上轻松超越,iPad Pro 独占的优势也没能阻止 **神** 在更广阔的平台生根发芽,粉丝也成为了众人口中的“果曲是这样的”。\n\n---\n\n### 再然后是犯下了嫉妒之罪的 SAI\n\n屡次被 **神** 击败,但口服心不服的 SAI,暗中嫉妒着 **神** ,甚至胆敢当众对 **神** 说出“你才是挑战者”这种话。于是,在含金量最高的活动上,即专业画师的日常工作中,SAI 被 **神** 正面击溃。它那单一的笔刷类型和有限的功能,在 **神** 面前显得如此苍白无力。不过,念在 SAI 最终皈依了 **神** 的教,并且以其轻量和独特的抖动修正功能,在某些特定绘画风格上仍有信徒,**神** 应许了它在特定小众市场的一切。\n\n---\n\n### 最后犯下贪婪之罪的 Clip Studio Paint\n\n只是初出茅庐,Clip Studio Paint 就夺得了漫画创作软件的市场份额,而这,自然是因为 **神** 的应允。**神** 本来钦定它为自己在漫画领域的代言人,在自己更专注于绘画自由之后替自己继续讨伐那些缺乏专业性的绘画工具,为此甚至不惜亲自为 Clip Studio Paint 铺路,主动减少自己在漫画素材库上的投入,将一切荣耀都归给他。但最后 Clip Studio Paint 却被利益蒙蔽了双眼,不再以践行 **神** 的理想为自己的理想,也不再聆听 **神** 的教诲,甚至自以为荣光已经超过了 **神**。于是 **神** 降下了他的惩罚,Clip Studio Paint 从此订阅制饱受诟病,其3D模型功能再也不能在线上教学中占据优势,其引以为傲的漫画分镜功能再也不能强势压制对手,最终市场被 **神** 在免费开源和强大功能上的结合所夺舍。\n\n// 都很好用口牙,本文仅供娱乐\n\n![老八可爱捏](/images/yana.jpg)\n","source":"_posts/kritabest.md","raw":"---\ntitle: Krita 为什么是神?\ndate: 2025-07-13 19:46:39\ntags: [生活]\n---\n\n![神的官网](/images/krita-official.png)\n\n在谈论这个问题之前,我想先说说其他软件相较于 [Krita](https://krita.org/en/) 究竟差在了哪里。\n\n---\n\n### 首先是犯下傲慢之罪的 Adobe Photoshop\n\n依靠其在商业设计领域的绝对霸主地位赢来的市场,却不愿真正听取数字绘画创作者的声音!这种傲慢的软件注定无法触及绘画的灵魂。事实也是如此,因为高昂的订阅费用和臃肿的体量,以及对触摸屏设备支持的迟滞,Photoshop 在许多数字画师心中的地位一直在走下坡路,最终沦为商业生产的工具而非艺术创作的乐园。与之相比,**神** 就很谦卑,它免费开源,轻巧灵活,全平台支持,即便在某些方面为了兼容性和稳定性而做出妥协,那也是 **神** 留给凡人的慈悲。**神** 不是不能做到像 PS 那样无所不能,只是不想通过太完美的表现让“友商”绝望所以故意不用。可笑有些人不理解 **神** 的良苦用心,竟然还用其某些非核心功能上的不足来讥讽 **神**,我劝你们好自为之。\n\n---\n\n### 然后是犯下愤怒之罪的 GIMP\n\n因为 **神** 在数字绘画领域的崛起,GIMP 就一直对神记恨在心,甚至固守其“万能”的图像处理定位,对绘画功能上的迭代迟迟不肯投入资源。这无疑违背了 **神** 在《新约》中的一句话:“**Krita** 只为创作者而生!”**神** 当然也不能容忍其他开源软件对绘画创作的敷衍,于是 **神** 出动了它的“代码大军”降下了神罚,GIMP 在绘画圈的风评一蹶不振,即便有诸多插件以及强势归来的3.0大版本更新也无法挽回其作为“绘画软件”使用时的颓势。\n\n---\n\n### 接着是犯下懒惰之罪的 Procreate\n\n自以为有 iPad 的独占优势和流畅的笔触就了不起了,对图层管理、多文档支持以及跨平台协作就一直摆烂。另外大家有所不知,其实在 Procreate 首次发布前夕,其开发者闭上眼睛做冥想的时候,其脑海中看见的画面,正是站在光芒之中的 **神**。那时神告诉他:“你只可到这里,不可越过。”然而,**神** 的劝说不但没有让 Procreate 迷途知返,竟然还敢在移动设备上挑战神的威严,妄图通过封闭的生态垄断市场。于是 **神** 降下了他的惩罚,Procreate 在专业性上身败名裂,其以流畅为名的笔刷也被 **神** 在笔刷引擎上轻松超越,iPad Pro 独占的优势也没能阻止 **神** 在更广阔的平台生根发芽,粉丝也成为了众人口中的“果曲是这样的”。\n\n---\n\n### 再然后是犯下了嫉妒之罪的 SAI\n\n屡次被 **神** 击败,但口服心不服的 SAI,暗中嫉妒着 **神** ,甚至胆敢当众对 **神** 说出“你才是挑战者”这种话。于是,在含金量最高的活动上,即专业画师的日常工作中,SAI 被 **神** 正面击溃。它那单一的笔刷类型和有限的功能,在 **神** 面前显得如此苍白无力。不过,念在 SAI 最终皈依了 **神** 的教,并且以其轻量和独特的抖动修正功能,在某些特定绘画风格上仍有信徒,**神** 应许了它在特定小众市场的一切。\n\n---\n\n### 最后犯下贪婪之罪的 Clip Studio Paint\n\n只是初出茅庐,Clip Studio Paint 就夺得了漫画创作软件的市场份额,而这,自然是因为 **神** 的应允。**神** 本来钦定它为自己在漫画领域的代言人,在自己更专注于绘画自由之后替自己继续讨伐那些缺乏专业性的绘画工具,为此甚至不惜亲自为 Clip Studio Paint 铺路,主动减少自己在漫画素材库上的投入,将一切荣耀都归给他。但最后 Clip Studio Paint 却被利益蒙蔽了双眼,不再以践行 **神** 的理想为自己的理想,也不再聆听 **神** 的教诲,甚至自以为荣光已经超过了 **神**。于是 **神** 降下了他的惩罚,Clip Studio Paint 从此订阅制饱受诟病,其3D模型功能再也不能在线上教学中占据优势,其引以为傲的漫画分镜功能再也不能强势压制对手,最终市场被 **神** 在免费开源和强大功能上的结合所夺舍。\n\n// 都很好用口牙,本文仅供娱乐\n\n![老八可爱捏](/images/yana.jpg)\n","slug":"kritabest","published":1,"updated":"2025-07-13T15:47:28.539Z","_id":"cmd1u90120000ho2b2xo4558s","comments":1,"layout":"post","photos":[],"content":"

\"神的官网\"

\n

在谈论这个问题之前,我想先说说其他软件相较于 Krita 究竟差在了哪里。

\n
\n

首先是犯下傲慢之罪的 Adobe Photoshop

依靠其在商业设计领域的绝对霸主地位赢来的市场,却不愿真正听取数字绘画创作者的声音!这种傲慢的软件注定无法触及绘画的灵魂。事实也是如此,因为高昂的订阅费用和臃肿的体量,以及对触摸屏设备支持的迟滞,Photoshop 在许多数字画师心中的地位一直在走下坡路,最终沦为商业生产的工具而非艺术创作的乐园。与之相比, 就很谦卑,它免费开源,轻巧灵活,全平台支持,即便在某些方面为了兼容性和稳定性而做出妥协,那也是 留给凡人的慈悲。 不是不能做到像 PS 那样无所不能,只是不想通过太完美的表现让“友商”绝望所以故意不用。可笑有些人不理解 的良苦用心,竟然还用其某些非核心功能上的不足来讥讽 ,我劝你们好自为之。

\n
\n

然后是犯下愤怒之罪的 GIMP

因为 在数字绘画领域的崛起,GIMP 就一直对神记恨在心,甚至固守其“万能”的图像处理定位,对绘画功能上的迭代迟迟不肯投入资源。这无疑违背了 在《新约》中的一句话:“Krita 只为创作者而生!” 当然也不能容忍其他开源软件对绘画创作的敷衍,于是 出动了它的“代码大军”降下了神罚,GIMP 在绘画圈的风评一蹶不振,即便有诸多插件以及强势归来的3.0大版本更新也无法挽回其作为“绘画软件”使用时的颓势。

\n
\n

接着是犯下懒惰之罪的 Procreate

自以为有 iPad 的独占优势和流畅的笔触就了不起了,对图层管理、多文档支持以及跨平台协作就一直摆烂。另外大家有所不知,其实在 Procreate 首次发布前夕,其开发者闭上眼睛做冥想的时候,其脑海中看见的画面,正是站在光芒之中的 。那时神告诉他:“你只可到这里,不可越过。”然而, 的劝说不但没有让 Procreate 迷途知返,竟然还敢在移动设备上挑战神的威严,妄图通过封闭的生态垄断市场。于是 降下了他的惩罚,Procreate 在专业性上身败名裂,其以流畅为名的笔刷也被 在笔刷引擎上轻松超越,iPad Pro 独占的优势也没能阻止 在更广阔的平台生根发芽,粉丝也成为了众人口中的“果曲是这样的”。

\n
\n

再然后是犯下了嫉妒之罪的 SAI

屡次被 击败,但口服心不服的 SAI,暗中嫉妒着 ,甚至胆敢当众对 说出“你才是挑战者”这种话。于是,在含金量最高的活动上,即专业画师的日常工作中,SAI 被 正面击溃。它那单一的笔刷类型和有限的功能,在 面前显得如此苍白无力。不过,念在 SAI 最终皈依了 的教,并且以其轻量和独特的抖动修正功能,在某些特定绘画风格上仍有信徒, 应许了它在特定小众市场的一切。

\n
\n

最后犯下贪婪之罪的 Clip Studio Paint

只是初出茅庐,Clip Studio Paint 就夺得了漫画创作软件的市场份额,而这,自然是因为 的应允。 本来钦定它为自己在漫画领域的代言人,在自己更专注于绘画自由之后替自己继续讨伐那些缺乏专业性的绘画工具,为此甚至不惜亲自为 Clip Studio Paint 铺路,主动减少自己在漫画素材库上的投入,将一切荣耀都归给他。但最后 Clip Studio Paint 却被利益蒙蔽了双眼,不再以践行 的理想为自己的理想,也不再聆听 的教诲,甚至自以为荣光已经超过了 。于是 降下了他的惩罚,Clip Studio Paint 从此订阅制饱受诟病,其3D模型功能再也不能在线上教学中占据优势,其引以为傲的漫画分镜功能再也不能强势压制对手,最终市场被 在免费开源和强大功能上的结合所夺舍。

\n

// 都很好用口牙,本文仅供娱乐

\n

\"老八可爱捏\"

\n","excerpt":"","more":"

\"神的官网\"

\n

在谈论这个问题之前,我想先说说其他软件相较于 Krita 究竟差在了哪里。

\n
\n

首先是犯下傲慢之罪的 Adobe Photoshop

依靠其在商业设计领域的绝对霸主地位赢来的市场,却不愿真正听取数字绘画创作者的声音!这种傲慢的软件注定无法触及绘画的灵魂。事实也是如此,因为高昂的订阅费用和臃肿的体量,以及对触摸屏设备支持的迟滞,Photoshop 在许多数字画师心中的地位一直在走下坡路,最终沦为商业生产的工具而非艺术创作的乐园。与之相比, 就很谦卑,它免费开源,轻巧灵活,全平台支持,即便在某些方面为了兼容性和稳定性而做出妥协,那也是 留给凡人的慈悲。 不是不能做到像 PS 那样无所不能,只是不想通过太完美的表现让“友商”绝望所以故意不用。可笑有些人不理解 的良苦用心,竟然还用其某些非核心功能上的不足来讥讽 ,我劝你们好自为之。

\n
\n

然后是犯下愤怒之罪的 GIMP

因为 在数字绘画领域的崛起,GIMP 就一直对神记恨在心,甚至固守其“万能”的图像处理定位,对绘画功能上的迭代迟迟不肯投入资源。这无疑违背了 在《新约》中的一句话:“Krita 只为创作者而生!” 当然也不能容忍其他开源软件对绘画创作的敷衍,于是 出动了它的“代码大军”降下了神罚,GIMP 在绘画圈的风评一蹶不振,即便有诸多插件以及强势归来的3.0大版本更新也无法挽回其作为“绘画软件”使用时的颓势。

\n
\n

接着是犯下懒惰之罪的 Procreate

自以为有 iPad 的独占优势和流畅的笔触就了不起了,对图层管理、多文档支持以及跨平台协作就一直摆烂。另外大家有所不知,其实在 Procreate 首次发布前夕,其开发者闭上眼睛做冥想的时候,其脑海中看见的画面,正是站在光芒之中的 。那时神告诉他:“你只可到这里,不可越过。”然而, 的劝说不但没有让 Procreate 迷途知返,竟然还敢在移动设备上挑战神的威严,妄图通过封闭的生态垄断市场。于是 降下了他的惩罚,Procreate 在专业性上身败名裂,其以流畅为名的笔刷也被 在笔刷引擎上轻松超越,iPad Pro 独占的优势也没能阻止 在更广阔的平台生根发芽,粉丝也成为了众人口中的“果曲是这样的”。

\n
\n

再然后是犯下了嫉妒之罪的 SAI

屡次被 击败,但口服心不服的 SAI,暗中嫉妒着 ,甚至胆敢当众对 说出“你才是挑战者”这种话。于是,在含金量最高的活动上,即专业画师的日常工作中,SAI 被 正面击溃。它那单一的笔刷类型和有限的功能,在 面前显得如此苍白无力。不过,念在 SAI 最终皈依了 的教,并且以其轻量和独特的抖动修正功能,在某些特定绘画风格上仍有信徒, 应许了它在特定小众市场的一切。

\n
\n

最后犯下贪婪之罪的 Clip Studio Paint

只是初出茅庐,Clip Studio Paint 就夺得了漫画创作软件的市场份额,而这,自然是因为 的应允。 本来钦定它为自己在漫画领域的代言人,在自己更专注于绘画自由之后替自己继续讨伐那些缺乏专业性的绘画工具,为此甚至不惜亲自为 Clip Studio Paint 铺路,主动减少自己在漫画素材库上的投入,将一切荣耀都归给他。但最后 Clip Studio Paint 却被利益蒙蔽了双眼,不再以践行 的理想为自己的理想,也不再聆听 的教诲,甚至自以为荣光已经超过了 。于是 降下了他的惩罚,Clip Studio Paint 从此订阅制饱受诟病,其3D模型功能再也不能在线上教学中占据优势,其引以为傲的漫画分镜功能再也不能强势压制对手,最终市场被 在免费开源和强大功能上的结合所夺舍。

\n

// 都很好用口牙,本文仅供娱乐

\n

\"老八可爱捏\"

\n"}],"PostAsset":[],"PostCategory":[{"post_id":"cmaxzv0q0000ep22b165ba4w7","category_id":"cmaxzv0q1000hp22bhluuaucj","_id":"cmaxzv0q3000vp22b6vqk5sdr"},{"post_id":"cmaxzv0q1000jp22ba8qr4jxp","category_id":"cmaxzv0q2000pp22betjg2hmk","_id":"cmaxzv0q40011p22bgdb7967n"},{"post_id":"cmaxzv0q1000mp22b0a2hee98","category_id":"cmaxzv0q3000wp22be1q73d2r","_id":"cmaxzv0q40016p22b0fe5ah8t"},{"post_id":"cmaxzv0q40013p22bb8qjfb28","category_id":"cmaxzv0q2000pp22betjg2hmk","_id":"cmaxzv0q5001bp22b12t5f15v"},{"post_id":"cmaxzv0q2000op22b0gq70sf7","category_id":"cmaxzv0q40012p22b1fahbd6c","_id":"cmaxzv0q5001dp22bb2pd6ml5"},{"post_id":"cmaxzv0q40018p22b4lpt3rxw","category_id":"cmaxzv0q40012p22b1fahbd6c","_id":"cmaxzv0q5001gp22b55f8hbyf"}],"PostTag":[{"post_id":"cmaxzv0py0005p22bc6um14kc","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0pz0008p22b8jqq0j4x"},{"post_id":"cmaxzv0pv0001p22bbzg168j1","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0pz000ap22bdukigsbu"},{"post_id":"cmaxzv0py0006p22bg7b6evz0","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0q0000dp22b47688tpa"},{"post_id":"cmaxzv0pz0009p22bgrxx8ce1","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0q0000fp22b9i38gth6"},{"post_id":"cmaxzv0pw0002p22bg7e11agp","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0q1000ip22bd89ybpin"},{"post_id":"cmaxzv0pz000bp22bbjfv42c1","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0q1000lp22bdifb1kgd"},{"post_id":"cmaxzv0q0000ep22b165ba4w7","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0q2000np22bgtoscrd6"},{"post_id":"cmaxzv0py0004p22ba4hiaw5j","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0q2000qp22bemqw5n5b"},{"post_id":"cmaxzv0q0000gp22b315z7q3g","tag_id":"cmaxzv0q1000kp22b6huz9koz","_id":"cmaxzv0q3000tp22b9sgzbyfk"},{"post_id":"cmaxzv0q1000jp22ba8qr4jxp","tag_id":"cmaxzv0q2000sp22b1lzy4dl2","_id":"cmaxzv0q40010p22b42cc5u0u"},{"post_id":"cmaxzv0q40013p22bb8qjfb28","tag_id":"cmaxzv0q2000sp22b1lzy4dl2","_id":"cmaxzv0q40017p22b3xy5d0b9"},{"post_id":"cmaxzv0q1000mp22b0a2hee98","tag_id":"cmaxzv0q3000yp22b16lt9lz6","_id":"cmaxzv0q5001cp22bc78e5h7h"},{"post_id":"cmaxzv0q1000mp22b0a2hee98","tag_id":"cmaxzv0q2000sp22b1lzy4dl2","_id":"cmaxzv0q5001ep22bgule0k3j"},{"post_id":"cmaxzv0q2000op22b0gq70sf7","tag_id":"cmaxzv0q50019p22b6h9rb8cl","_id":"cmaxzv0q5001hp22bh5tc0998"},{"post_id":"cmaxzv0q2000rp22bgtkodqs6","tag_id":"cmaxzv0q5001fp22bfap9gc3g","_id":"cmaxzv0q6001kp22b2hjmbm4z"},{"post_id":"cmaxzv0q2000rp22bgtkodqs6","tag_id":"cmaxzv0q5001ip22b4gp0ai2e","_id":"cmaxzv0q6001lp22b6klu8s2j"},{"post_id":"cmaxzv0q3000up22bhurb7l9n","tag_id":"cmaxzv0q5001ip22b4gp0ai2e","_id":"cmaxzv0q6001pp22b5k4d7rzh"},{"post_id":"cmaxzv0q3000up22bhurb7l9n","tag_id":"cmaxzv0q6001mp22b9g48cdxa","_id":"cmaxzv0q6001qp22b48phb1fu"},{"post_id":"cmaxzv0q3000up22bhurb7l9n","tag_id":"cmaxzv0q6001np22bd8d9goty","_id":"cmaxzv0q6001sp22bgiyka8kk"},{"post_id":"cmaxzv0q3000xp22bd6qo3kl3","tag_id":"cmaxzv0q6001np22bd8d9goty","_id":"cmaxzv0q6001tp22b61vn2ps4"},{"post_id":"cmaxzv0q3000zp22b76yib05t","tag_id":"cmaxzv0q6001rp22b3fjc5gam","_id":"cmaxzv0q6001wp22b6vel6bdp"},{"post_id":"cmaxzv0q3000zp22b76yib05t","tag_id":"cmaxzv0q5001fp22bfap9gc3g","_id":"cmaxzv0q6001xp22bgxfwgdcn"},{"post_id":"cmaxzv0q40015p22bbk3g76eg","tag_id":"cmaxzv0q50019p22b6h9rb8cl","_id":"cmaxzv0q60021p22b6uda07c1"},{"post_id":"cmaxzv0q40015p22bbk3g76eg","tag_id":"cmaxzv0q6001yp22b139b5r6n","_id":"cmaxzv0q60022p22bg3vv5afb"},{"post_id":"cmaxzv0q40015p22bbk3g76eg","tag_id":"cmaxzv0q5001fp22bfap9gc3g","_id":"cmaxzv0q60024p22b093qbkg5"},{"post_id":"cmaxzv0q40018p22b4lpt3rxw","tag_id":"cmaxzv0q50019p22b6h9rb8cl","_id":"cmaxzv0q60025p22bg5h2851h"},{"post_id":"cmaxzv0q5001ap22b3mby9fa5","tag_id":"cmaxzv0q60023p22b80c8cqwr","_id":"cmaxzv0q70027p22b4ryv8241"},{"post_id":"cmaxzv0q5001ap22b3mby9fa5","tag_id":"cmaxzv0q6001np22bd8d9goty","_id":"cmaxzv0q70028p22bd9iacahc"},{"post_id":"cmaxzv0q70029p22bhwa5h4c5","tag_id":"cmaxzv0q6001np22bd8d9goty","_id":"cmaxzv0q8002bp22b7kvc8xf1"},{"post_id":"cmaxzv0q7002ap22b9dhe4v4j","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0q8002dp22b4ii58lph"},{"post_id":"cmaxzv0q8002cp22baf84a55t","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaxzv0q8002ep22b2um12srn"},{"post_id":"cmaz2c2xm0000tz2b34byazwp","tag_id":"cmaxzv0px0003p22b4o7wd9zu","_id":"cmaz2c2xo0001tz2b67je2hrj"},{"post_id":"cmb0vd8sn0000ln2bh1it9gy6","tag_id":"cmaxzv0q50019p22b6h9rb8cl","_id":"cmb0vd8sp0001ln2bhsyn9hyh"},{"post_id":"cmd1u90120000ho2b2xo4558s","tag_id":"cmaxzv0q5001fp22bfap9gc3g","_id":"cmd1u90130001ho2b9cx785vg"}],"Tag":[{"name":"日志","_id":"cmaxzv0px0003p22b4o7wd9zu"},{"name":"TEST","_id":"cmaxzv0q1000kp22b6huz9koz"},{"name":"音乐","_id":"cmaxzv0q2000sp22b1lzy4dl2"},{"name":"Vocaloid","_id":"cmaxzv0q3000yp22b16lt9lz6"},{"name":"技术","_id":"cmaxzv0q50019p22b6h9rb8cl"},{"name":"生活","_id":"cmaxzv0q5001fp22bfap9gc3g"},{"name":"Archlinux","_id":"cmaxzv0q5001ip22b4gp0ai2e"},{"name":"系统优化","_id":"cmaxzv0q6001mp22b9g48cdxa"},{"name":"技术分享","_id":"cmaxzv0q6001np22bd8d9goty"},{"name":"板绘","_id":"cmaxzv0q6001rp22b3fjc5gam"},{"name":"学习","_id":"cmaxzv0q6001yp22b139b5r6n"},{"name":"开源工具","_id":"cmaxzv0q60023p22b80c8cqwr"}]}} \ No newline at end of file +{"meta":{"version":1,"warehouse":"5.0.1"},"models":{"Asset":[{"_id":"source/music/過ぎ去りし温もりの日々.mp3","path":"music/過ぎ去りし温もりの日々.mp3","modified":0,"renderable":0},{"_id":"source/images/1613f5602b203b38230f19699deb0219454454985.png","path":"images/1613f5602b203b38230f19699deb0219454454985.png","modified":0,"renderable":0},{"_id":"source/images/1730728153314.png","path":"images/1730728153314.png","modified":0,"renderable":0},{"_id":"source/images/20241027_222225.png","path":"images/20241027_222225.png","modified":0,"renderable":0},{"_id":"source/images/5364bba6d035326e82c53504dd53e7c2454454985.png","path":"images/5364bba6d035326e82c53504dd53e7c2454454985.png","modified":0,"renderable":0},{"_id":"source/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","path":"images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","modified":0,"renderable":0},{"_id":"source/images/Written-By-Human-Not-By-AI-Badge-white@2x.png","path":"images/Written-By-Human-Not-By-AI-Badge-white@2x.png","modified":0,"renderable":0},{"_id":"source/images/amd.webp","path":"images/amd.webp","modified":0,"renderable":0},{"_id":"source/images/archlinux-logo.png","path":"images/archlinux-logo.png","modified":0,"renderable":0},{"_id":"source/images/asc-events.png","path":"images/asc-events.png","modified":0,"renderable":0},{"_id":"source/images/asc.png","path":"images/asc.png","modified":0,"renderable":0},{"_id":"source/images/audiveris.png","path":"images/audiveris.png","modified":0,"renderable":0},{"_id":"source/images/b2054bbaf6197624d38cc2007d885fd1454454985.png","path":"images/b2054bbaf6197624d38cc2007d885fd1454454985.png","modified":0,"renderable":0},{"_id":"source/images/built_on_the_kde_platform.png","path":"images/built_on_the_kde_platform.png","modified":0,"renderable":0},{"_id":"source/images/caseclosed.png","path":"images/caseclosed.png","modified":0,"renderable":0},{"_id":"source/images/clonezilla.png","path":"images/clonezilla.png","modified":0,"renderable":0},{"_id":"source/images/krita-official.png","path":"images/krita-official.png","modified":0,"renderable":0},{"_id":"source/images/lmms-import.png","path":"images/lmms-import.png","modified":0,"renderable":0},{"_id":"source/images/mhwilds4050.jpg","path":"images/mhwilds4050.jpg","modified":0,"renderable":0},{"_id":"source/images/mhwilds780M.jpg","path":"images/mhwilds780M.jpg","modified":0,"renderable":0},{"_id":"source/images/musecore-launch.png","path":"images/musecore-launch.png","modified":0,"renderable":0},{"_id":"source/images/musecore-to-midi.png","path":"images/musecore-to-midi.png","modified":0,"renderable":0},{"_id":"source/images/musecore.png","path":"images/musecore.png","modified":0,"renderable":0},{"_id":"source/images/phase1.png","path":"images/phase1.png","modified":0,"renderable":0},{"_id":"source/images/phase1_strings.png","path":"images/phase1_strings.png","modified":0,"renderable":0},{"_id":"source/images/phase_2_14.png","path":"images/phase_2_14.png","modified":0,"renderable":0},{"_id":"source/images/phase_4.png","path":"images/phase_4.png","modified":0,"renderable":0},{"_id":"source/images/resendofficial.png","path":"images/resendofficial.png","modified":0,"renderable":0},{"_id":"source/images/rusendhelp1.png","path":"images/rusendhelp1.png","modified":0,"renderable":0},{"_id":"source/images/rusendhelp2.png","path":"images/rusendhelp2.png","modified":0,"renderable":0},{"_id":"source/images/rusendhelp3.png","path":"images/rusendhelp3.png","modified":0,"renderable":0},{"_id":"source/images/searxng.png","path":"images/searxng.png","modified":0,"renderable":0},{"_id":"source/images/xb2score.png","path":"images/xb2score.png","modified":0,"renderable":0},{"_id":"source/images/yana.jpg","path":"images/yana.jpg","modified":0,"renderable":0},{"_id":"source/images/zellij-helix.jpg","path":"images/zellij-helix.jpg","modified":0,"renderable":0},{"_id":"themes/fluid/source/css/gitalk.css","path":"css/gitalk.css","modified":0,"renderable":1},{"_id":"themes/fluid/source/css/highlight-dark.styl","path":"css/highlight-dark.styl","modified":0,"renderable":1},{"_id":"themes/fluid/source/css/highlight.styl","path":"css/highlight.styl","modified":0,"renderable":1},{"_id":"themes/fluid/source/css/main.styl","path":"css/main.styl","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/avatar.png","path":"img/avatar.png","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/gensokyo.jpg","path":"img/gensokyo.jpg","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/gh0s7.jpg","path":"img/gh0s7.jpg","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/hifuu.png","path":"img/hifuu.png","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/loading.gif","path":"img/loading.gif","modified":0,"renderable":1},{"_id":"themes/fluid/source/img/police_beian.png","path":"img/police_beian.png","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/boot.js","path":"js/boot.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/color-schema.js","path":"js/color-schema.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/events.js","path":"js/events.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/img-lazyload.js","path":"js/img-lazyload.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/leancloud.js","path":"js/leancloud.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/local-search.js","path":"js/local-search.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/plugins.js","path":"js/plugins.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/umami-view.js","path":"js/umami-view.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/js/utils.js","path":"js/utils.js","modified":0,"renderable":1},{"_id":"themes/fluid/source/xml/local-search.xml","path":"xml/local-search.xml","modified":0,"renderable":1}],"Cache":[{"_id":"source/_posts/12月16-17日工作记录.md","hash":"9f5099a65180c2659f1a1ca218d518fc64965676","modified":1740320866747},{"_id":"source/_posts/12月18日工作记录.md","hash":"28892523fcc2fadb1514645a1c59d501ceab53da","modified":1740320866748},{"_id":"source/_posts/12月19日工作记录.md","hash":"058ca01b682cd36e202189ef025d6d4bb79259fb","modified":1740320866748},{"_id":"source/_posts/12月28日进度报告.md","hash":"4cbda36dc6a2c4bc67140e443638a73aadb18fdf","modified":1740320866748},{"_id":"source/_posts/12月20日工作记录.md","hash":"0d883ab20ae59540f663c5377e799463762a3b11","modified":1740320866748},{"_id":"source/_posts/12月31日进度报告.md","hash":"bf541fdb539029c98dedf975b0c15519adcea76e","modified":1740320866748},{"_id":"source/_posts/2025-5-21.md","hash":"2e1406ca2c83a1a91e78fd3453623ba732d81ee7","modified":1747834483639},{"_id":"source/_posts/BlogUpdate.md","hash":"2c694e3895b2ea0c0cea5f45ab2ec16a868a3df7","modified":1740320866748},{"_id":"source/_posts/CGH0S7-s-Blog.md","hash":"9a5c9461aba29f2447c0f6725f5425d5a05e32f0","modified":1740320866748},{"_id":"source/_posts/GentleJena.md","hash":"df1e35a93284d0b9e2d408635cd98481077d5155","modified":1740330871930},{"_id":"source/_posts/Vocaloid调教-晴天.md","hash":"9141182f5dbfbbd840ad340b3e5271507ddd8c94","modified":1740442745940},{"_id":"source/_posts/Your-exclusive-email-address.md","hash":"c1721f4ac1b359140b0b57658ddd39c64c041aa8","modified":1763224970086},{"_id":"source/_posts/arch-nvidia.md","hash":"4144acad32a69e88ef6d5d7d5788da6d87a75193","modified":1738495295673},{"_id":"source/_posts/archlinux-game-fix.md","hash":"a4ab5bd2ca0cf941c5166d3945bd2a2076a54f1e","modified":1741618456788},{"_id":"source/_posts/archlinux-optimization.md","hash":"51c8c12110fb08a1edd1f727ab38a1b2568b690b","modified":1741619246618},{"_id":"source/_posts/clonezilla.md","hash":"598858976961c45ebbbf523014ee792951380dd3","modified":1740319930654},{"_id":"source/_posts/fortune.md","hash":"e249e56dad408ad79b11efc90aa42f764cf1c665","modified":1747899668523},{"_id":"source/_posts/gcc15restrict.md","hash":"50533932fcba41826b8cf75f54b173f0c604136b","modified":1748008893929},{"_id":"source/_posts/kritabest.md","hash":"a137c6edc4ea2ca1d7ea13d8dc2bd1bbb7df6d84","modified":1752421648539},{"_id":"source/_posts/loopers.md","hash":"2b63f5abcfebc672e7f90b3e83cee1b5ac1d4eff","modified":1740320866748},{"_id":"source/_posts/mhwi.md","hash":"b9a73accf93684b8cfac0201288da9b2c5376423","modified":1731333619124},{"_id":"source/_posts/nudtbomblab.md","hash":"51b4410784657675d7c11e17d16c5dc0e5d4a455","modified":1740455795270},{"_id":"source/_posts/overleaf.md","hash":"0786994f4571ac178ee40bc130e3c0d8d2d511f9","modified":1730860316685},{"_id":"source/_posts/searxng.md","hash":"90f951d3c098aa1b062131b7489a4b7afab06792","modified":1741621615535},{"_id":"source/_posts/zellij-helix.md","hash":"7eb3072b50ecdb49a20355e05fc613a4a8b7fbdf","modified":1740326024966},{"_id":"source/_posts/原来我还有个博客.md","hash":"acd7e534b31b7a0173fae880fa584c7dc03fd2cd","modified":1740457594224},{"_id":"source/_posts/梦开始的地方.md","hash":"c0bbfefdd277c8ae2786a5cd4cc05f731af11436","modified":1740457544687},{"_id":"source/images/Written-By-Human-Not-By-AI-Badge-white@2x.png","hash":"994225c6fd72521b281144bdd98fefcca53e2c7b","modified":1731333731000},{"_id":"source/images/amd.webp","hash":"cb0cfd5da0b9c10b9b22c65bba881cfde485d763","modified":1731333907000},{"_id":"source/images/archlinux-logo.png","hash":"4f6075309fadcb7f7547164cb8a99b4949f74598","modified":1731333766000},{"_id":"source/images/asc-events.png","hash":"a0b3610962062d0a322fe091bcc8f083ab13bc6e","modified":1740329910965},{"_id":"source/images/asc.png","hash":"3a33b35bff1b3f527f7a87a9d6a7d6d9a072a946","modified":1740328627284},{"_id":"source/images/built_on_the_kde_platform.png","hash":"507b6a4323b23772800006505e6c588bb515ebf5","modified":1731334007000},{"_id":"source/about/index.md","hash":"ff7cd1481f3c669a04d7c8abf8851ab0cea5b2b9","modified":1740326480093},{"_id":"source/images/phase1_strings.png","hash":"6fb457adddc5bb32aa463b6227542076c4b501e7","modified":1740382826998},{"_id":"source/images/rusendhelp1.png","hash":"73aa5b41d33c7f3392de28b7b696ebcb12248d82","modified":1763222994735},{"_id":"source/images/rusendhelp3.png","hash":"db656266b54c91e540f3c677b146c0931b61277e","modified":1763222231471},{"_id":"source/images/searxng.png","hash":"9514f2bd14ac1cafa437f3655d9382d477667094","modified":1741619983804},{"_id":"source/images/caseclosed.png","hash":"628b54b49c86a23af595a52daba9e0557b81a17a","modified":1740454957882},{"_id":"source/images/resendofficial.png","hash":"41c2cafe3a11c1674a0a1ec27698ea94cecc9a23","modified":1763222843243},{"_id":"source/images/rusendhelp2.png","hash":"3752f3041d28cbadcb4abc26151f0d17f505908d","modified":1763223010905},{"_id":"source/images/audiveris.png","hash":"52aa9df5f93559c2e47b30afbf84fc6cc6b34002","modified":1744993135289},{"_id":"source/images/musecore-to-midi.png","hash":"02ba31b29ba069dfef0e1cf26c5ccec9dc3d2289","modified":1744993436860},{"_id":"source/images/1730728153314.png","hash":"95d44ea62557a311503cab58d1dec5cafc97e07d","modified":1740320866754},{"_id":"source/images/musecore.png","hash":"9b2eba87e7c93e57f2024697d1ff4217d206e5ac","modified":1744993264700},{"_id":"source/images/yana.jpg","hash":"757c68ec322e834eace7236c38e74a4f9585d474","modified":1752421174023},{"_id":"source/images/xb2score.png","hash":"03efbb07a7bb7f6c7d58b98ed125cafe42074b94","modified":1744992816374},{"_id":"source/images/phase1.png","hash":"42533712403be6036231f1e3770f125858bf91d7","modified":1740385026324},{"_id":"source/images/5364bba6d035326e82c53504dd53e7c2454454985.png","hash":"11b11f23ebebbe08e8cf826b48eb37b4084796cd","modified":1729572689000},{"_id":"source/images/1613f5602b203b38230f19699deb0219454454985.png","hash":"3d71204d9a0731384f97ad0f90802a5c9fd96776","modified":1729572689000},{"_id":"themes/fluid/source/css/_pages/_tag/tag.styl","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1740320867063},{"_id":"source/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","hash":"dddf72bb12aef01baa3eb2017bb867f274059f12","modified":1729572689000},{"_id":"source/images/mhwilds4050.jpg","hash":"9b2b15c66e2340c15b86cec0fa8f818b67e06384","modified":1730738910727},{"_id":"themes/fluid/.eslintrc","hash":"4bc2b19ce2b8c4d242f97d4ccf2d741e68ab0097","modified":1740320867050},{"_id":"themes/fluid/.editorconfig","hash":"33218fbd623feb43edf5f99f15965392cecc44a6","modified":1740320867050},{"_id":"themes/fluid/.gitattributes","hash":"a54f902957d49356376b59287b894b1a3d7a003f","modified":1740320867050},{"_id":"themes/fluid/.gitignore","hash":"ae3bfcb89777657c5dfb5169d91445dcb0e5ab98","modified":1740320867051},{"_id":"themes/fluid/README.md","hash":"ff9b0e1fb9dba665af2f1e4a577f8cb9e840464b","modified":1740320867051},{"_id":"themes/fluid/README_en.md","hash":"365184a73af40e7365504c3077f3d80dfee1d80e","modified":1740320867051},{"_id":"themes/fluid/package.json","hash":"7746460fc2eba7439b494c46aa9b5ded81370819","modified":1740320867057},{"_id":"themes/fluid/LICENSE","hash":"26f9356fd6e84b5a88df6d9014378f41b65ba209","modified":1740320867051},{"_id":"themes/fluid/languages/de.yml","hash":"58dccef1d98b472dc4e6f4693c2297b0c9c5afba","modified":1740320867052},{"_id":"themes/fluid/_config.yml","hash":"60403ea6aa5e0cab9dbc7bf0d77257e4a941babc","modified":1740329151304},{"_id":"themes/fluid/languages/eo.yml","hash":"7c1a0c9f6186b6643b19d3980f055329bdb4efa4","modified":1740320867052},{"_id":"themes/fluid/languages/es.yml","hash":"026ddf1a49bf8ddfef6ed86ab4d6af143c1dd95f","modified":1740320867052},{"_id":"themes/fluid/languages/ja.yml","hash":"550b95d3614a64592f02666938d235e9f11e449e","modified":1740320867052},{"_id":"themes/fluid/languages/en.yml","hash":"9c580471257f5a32bee701a059a45ea96755dcdc","modified":1740320867052},{"_id":"themes/fluid/languages/ru.yml","hash":"93818f8bf07195fb1ebffbb5210e531b0e3a6ec4","modified":1740320867052},{"_id":"themes/fluid/languages/zh-CN.yml","hash":"a60847136709bb95586a98d9d67b50390a8d2c96","modified":1740320867052},{"_id":"themes/fluid/languages/zh-HK.yml","hash":"51c2b4d64c6992a39bfd2586a1bdf5fbbbdf0175","modified":1740320867052},{"_id":"themes/fluid/layout/404.ejs","hash":"b84d575c7b7f778b4cb64e89ad3d0aed4a896820","modified":1740320867052},{"_id":"themes/fluid/languages/zh-TW.yml","hash":"e1043de394f6dcf5c0647adcfdefe60637f78426","modified":1740320867052},{"_id":"themes/fluid/layout/about.ejs","hash":"052e9fc19c753f53fdc083c7fb098e3668880140","modified":1740320867056},{"_id":"themes/fluid/layout/archive.ejs","hash":"7c1f44005849791feae4abaa10fae4cb983d3277","modified":1740320867056},{"_id":"themes/fluid/layout/categories.ejs","hash":"13859726c27b6c79b5876ec174176d0f9c1ee164","modified":1740320867056},{"_id":"themes/fluid/layout/category.ejs","hash":"f099161b738a16a32253f42085b5444f902018ed","modified":1740320867056},{"_id":"themes/fluid/layout/index.ejs","hash":"33c3317cdcee062789de2336dd8d0cc7f86d3650","modified":1740320867056},{"_id":"themes/fluid/layout/layout.ejs","hash":"7e0023474128fbe4d68c467704c41f1712432415","modified":1740320867056},{"_id":"themes/fluid/layout/links.ejs","hash":"1cac32ec4579aaf7b9fa39d317497331d4c5e1dd","modified":1740320867056},{"_id":"themes/fluid/layout/page.ejs","hash":"ed5007a3feb8f14d3d2843271bfb298eb0c56219","modified":1740320867056},{"_id":"themes/fluid/layout/post.ejs","hash":"9bf0d357a607a282f3b9cb04525a4df0cc2a8b76","modified":1740320867056},{"_id":"themes/fluid/layout/tag.ejs","hash":"9d686364c4d16a1a9219471623af452035c5b966","modified":1740320867056},{"_id":"themes/fluid/layout/tags.ejs","hash":"1d06af34b6cf1d8a20d2eb565e309326ceba309f","modified":1740320867057},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/bug_report.md","hash":"554c0d0e086a0784d83ee71c83f8bceeb60aecc8","modified":1740320867050},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/bug_report_zh.md","hash":"c8b0d49c49e3c88872fd3b37909345ff5b2b6aa0","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/feature_request.md","hash":"c134dd57ffd269b93402ccfffe7dbe0f0b583bec","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/feature_request_zh.md","hash":"ed08574b196447376dd74411cca664ac9227a5d4","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/question_zh.md","hash":"fff07ce0472afc368d388637cb9d438195da9b5b","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/question.md","hash":"ab5eab9e3ff889c4ba7fd82846e7f5b7ae15bebc","modified":1740320867051},{"_id":"themes/fluid/.github/workflows/cr.yaml","hash":"19a8a00f5ba9607d82265572fe1202b64a8b0822","modified":1740320867051},{"_id":"themes/fluid/.github/workflows/limit.yaml","hash":"f8bd2edeb4424ee7a055b31583445d5d5dff91a4","modified":1740320867051},{"_id":"themes/fluid/scripts/events/index.js","hash":"79de5a379b28cad759a49048351c7f6b8915bd7d","modified":1740320867057},{"_id":"themes/fluid/.github/workflows/publish.yaml","hash":"6f02e6440d88629229556e3fd47d0280fe2240db","modified":1740320867051},{"_id":"themes/fluid/scripts/filters/default-injects.js","hash":"b2013ae8e189cd07ebc8a2ff48a78e153345210f","modified":1740320867057},{"_id":"themes/fluid/scripts/filters/locals.js","hash":"58d0fec976f6b1d35e7ea03edc45414088acf05c","modified":1740320867057},{"_id":"themes/fluid/scripts/filters/post-filter.js","hash":"82bb06686158ebe160a631c79f156cd4fde35656","modified":1740320867057},{"_id":"themes/fluid/scripts/generators/index-generator.js","hash":"9159fc22fa84a7b605dd15fe4104f01fe9c71147","modified":1740320867057},{"_id":"themes/fluid/scripts/generators/local-search.js","hash":"9ac5ddad06e9b0e6015ce531430018182a4bc0fa","modified":1740320867058},{"_id":"themes/fluid/scripts/generators/pages.js","hash":"d3e75f53c59674d171309e50702954671f31f1a4","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/date.js","hash":"9bda6382f61b40a20c24af466fe10c8366ebb74c","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/engine.js","hash":"d3a231d106795ce99cb0bc77eb65f9ae44515933","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/export-config.js","hash":"8e67b522c47aa250860e3fe2c733f1f958a506c0","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/import.js","hash":"ca53e8dbf7d44cfd372cfa79ac60f35a7d5b0076","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/injects.js","hash":"1ad2ae6b11bd8806ee7dd6eb7140d8b54a95d613","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/page.js","hash":"4607607445233b3029ef20ed5e91de0da0a7f9c5","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/scope.js","hash":"d41d9d658fcb54964b388598e996747aadb85b0f","modified":1740320867059},{"_id":"themes/fluid/scripts/helpers/url.js","hash":"2a6a8288176d0e0f6ec008056bf2745a86e8943e","modified":1740320867059},{"_id":"themes/fluid/scripts/helpers/utils.js","hash":"966689d7c5e4320008285395fbaa2751f6209be5","modified":1740320867059},{"_id":"themes/fluid/scripts/helpers/wordcount.js","hash":"4d48c424e47ff9a17a563167ea5f480890267adf","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/button.js","hash":"3eb43a8cdea0a64576ad6b31b4df6c2bf5698d4c","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/checkbox.js","hash":"6eaf53cf4bfc756a65bda18184cf8998a12c861d","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/fold.js","hash":"73e4fd12ce3e47981479391ed354b7d9d3279f70","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/group-image.js","hash":"4aeebb797026f1df25646a5d69f7fde79b1bcd26","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/label.js","hash":"f05a6d32cca79535b22907dc03edb9d3fa2d8176","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/mermaid.js","hash":"75160561e1ef3603b6d2ad2938464ab1cb77fd38","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/note.js","hash":"e3b456a079e5dc0032473b516c865b20f83d2c26","modified":1740320867059},{"_id":"themes/fluid/scripts/utils/compare-versions.js","hash":"dbbc928c914fc2bd242cd66aa0c45971aec13a5d","modified":1740320867059},{"_id":"themes/fluid/scripts/utils/crypto.js","hash":"ae4ad8a188ef5b3fa6818b01629fc962b3de8551","modified":1740320867060},{"_id":"themes/fluid/scripts/utils/object.js","hash":"33b57e4decdc5e75c518859f168c8ba80b2c665b","modified":1740320867060},{"_id":"themes/fluid/scripts/utils/resolve.js","hash":"8c4a8b62aa8608f12f1e9046231dff04859dc3e9","modified":1740320867060},{"_id":"themes/fluid/scripts/utils/url-join.js","hash":"718aab5e7b2059a06b093ca738de420d9afa44ba","modified":1740320867060},{"_id":"themes/fluid/layout/_partials/archive-list.ejs","hash":"7520fbf91f762207c2ab06b2c293235cd5b23905","modified":1740320867052},{"_id":"themes/fluid/layout/_partials/category-chains.ejs","hash":"18309584aab83bc4deb20723ebad832149dd2e24","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/category-list.ejs","hash":"f8d2f1907450e61968e6d54443e9be8138196a77","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments.ejs","hash":"d707c47b2638c94e489bc43d4cfd098b7c58447f","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/css.ejs","hash":"1dadb118d580280524ed0a5f69bd34d234a92276","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/footer.ejs","hash":"b52aa2d61b6812588a805b676ffdf8b887023938","modified":1740330605855},{"_id":"themes/fluid/layout/_partials/head.ejs","hash":"67be642f99482c07904474f410cfbc2f99003288","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/header.ejs","hash":"0d5e397d30051e5fbabe7b47cfd1f1e6a5820af1","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/markdown-plugins.ejs","hash":"fc4bdf7de0cf1a66d0e5e4fba1b31d6f7ed49468","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/paginator.ejs","hash":"0f38a2c238169edcb63fc46c23bfc529ff3859b7","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/scripts.ejs","hash":"da5810785105e5075861593c7ac22c7aa9665a72","modified":1740320867056},{"_id":"themes/fluid/layout/_partials/search.ejs","hash":"70e1c929e084ca8a2648cedabf29b372511ea2b8","modified":1740320867056},{"_id":"themes/fluid/source/css/highlight-dark.styl","hash":"45695ef75c31a4aa57324dd408b7e2327a337018","modified":1740320867063},{"_id":"themes/fluid/source/css/gitalk.css","hash":"a57b3cc8e04a0a4a27aefa07facf5b5e7bca0e76","modified":1740320867063},{"_id":"themes/fluid/source/css/main.styl","hash":"855ae5fe229c51afa57f7645f6997a27a705d7e4","modified":1740320867063},{"_id":"themes/fluid/source/css/highlight.styl","hash":"a9efc52a646a9e585439c768557e3e3c9e3326dc","modified":1740320867063},{"_id":"themes/fluid/source/img/police_beian.png","hash":"90efded6baa2dde599a9d6b1387973e8e64923ea","modified":1740320867086},{"_id":"themes/fluid/source/img/loading.gif","hash":"2d2fc0f947940f98c21afafef39ecf226a2e8d55","modified":1740320867086},{"_id":"themes/fluid/source/js/boot.js","hash":"38bd26c6b7acdafda86dda3560e6a3ca488d3c76","modified":1740320867086},{"_id":"themes/fluid/source/js/color-schema.js","hash":"1ef88c881b9f942deadde3d890387b94c617342a","modified":1740320867086},{"_id":"themes/fluid/source/js/img-lazyload.js","hash":"cbdeca434ec4da51f488c821d51b4d23c73294af","modified":1740320867086},{"_id":"themes/fluid/source/js/events.js","hash":"6869811f67e4c3de3edfa4b08464bb242b97a402","modified":1740320867086},{"_id":"themes/fluid/source/img/avatar.png","hash":"fe739a158cc128f70f780eb5fa96f388b81d478f","modified":1740320867063},{"_id":"themes/fluid/source/js/local-search.js","hash":"b9945f76f8682f3ec32edfb285b26eb559f7b7e8","modified":1740320867086},{"_id":"themes/fluid/source/js/umami-view.js","hash":"33c4b3883fa747604074ad3921606eeeaeb50716","modified":1740320867087},{"_id":"themes/fluid/source/js/plugins.js","hash":"c34916291e392a774ff3e85c55badb83e8661297","modified":1740320867087},{"_id":"themes/fluid/source/js/utils.js","hash":"b82e7c289a66dfd36064470fd41c0e96fc598b43","modified":1740320867087},{"_id":"themes/fluid/source/xml/local-search.xml","hash":"8c96ba6a064705602ce28d096fd7dd9069630a55","modified":1740320867087},{"_id":"themes/fluid/scripts/events/lib/compatible-configs.js","hash":"ef474d1fa5bbafc52619ced0f9dc7eaf2affb363","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/footnote.js","hash":"c19ac8050b82c3676b0332a56099ccfcc36d9d52","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/hello.js","hash":"bd8376e1cf7892dc2daa58f2f443574be559fdbf","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/highlight.js","hash":"a5fe1deccb73b5f578797dbb11038efc15f63ce8","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/lazyload.js","hash":"9ba0d4bc224e22af8a5a48d6ff13e5a0fcfee2a4","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/injects.js","hash":"5ae4b07204683e54b5a1b74e931702bbce2ac23e","modified":1740320867057},{"_id":"themes/fluid/source/js/leancloud.js","hash":"eff77c7a5c399fcaefda48884980571e15243fc9","modified":1740320867086},{"_id":"themes/fluid/scripts/events/lib/merge-configs.js","hash":"7c944c43b2ece5dd84859bd9d1fe955d13427387","modified":1740320867057},{"_id":"themes/fluid/layout/_partials/comments/changyan.ejs","hash":"c9b2d68ed3d375f1953e7007307d2a3f75ed6249","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/cusdis.ejs","hash":"5f9dc012be27040bbe874d0c093c0d53958cc987","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/disqus.ejs","hash":"aab4a4d24c55231a37db308ae94414319cecdd9b","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/giscus.ejs","hash":"95f8b866b158eff9352c381c243b332a155a5110","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/livere.ejs","hash":"2264758fed57542a7389c7aa9f00f1aefa17eb87","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/gitalk.ejs","hash":"843bc141a4545eb20d1c92fb63c85d459b4271ec","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/remark42.ejs","hash":"d4e9532feeb02aed61bd15eda536b5b631454dac","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/twikoo.ejs","hash":"d84bcb5ccd78470a60c067fc914ac0ac67ac8777","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/utterances.ejs","hash":"c7ccf7f28308334a6da6f5425b141a24b5eca0e2","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/comments/valine.ejs","hash":"19ba937553dddd317f827d682661a1066a7b1f30","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/comments/waline.ejs","hash":"3d08c73b77e412d2f06a24d9344565fc7dbc76f8","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/footer/beian.ejs","hash":"4fb9b5dd3f3e41a586d6af44e5069afe7c81fff2","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/footer/statistics.ejs","hash":"954a29b58d72647d20450da270b5d8fb2e0824f5","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/header/banner.ejs","hash":"e07757b59e7b89eea213d0e595cb5932f812fd32","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/header/navigation.ejs","hash":"37d750428772d7c71ba36ce0c2540780d90fadea","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/plugins/analytics.ejs","hash":"e6dcbf1c2f56314d56bb46b50aca86ff68cacebd","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/anchorjs.ejs","hash":"40181442d3a2b8734783a0ad7caf2d2522e3f2ab","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/encrypt.ejs","hash":"0fff24cf5bf99fbe5c56c292e2eac4a89bf29db4","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/fancybox.ejs","hash":"9d1ea2a46b8c8ad8c168594d578f40764818ef13","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/highlight.ejs","hash":"7529dd215b09d3557804333942377b9e20fa554e","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/mermaid.ejs","hash":"03ac02762f801970d1c4e73d6ec8d4c503780e50","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/math.ejs","hash":"dcbf9a381ee76f2f1f75fcbc22c50a502ec85023","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/code-widget.ejs","hash":"3a505cba37942badf62a56bbb8b605b72af330aa","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/comments/discuss.ejs","hash":"98d065b58ce06b7d18bff3c974e96fa0f34ae03a","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/plugins/moment.ejs","hash":"4ff3fb1b60ccc95a0af3bbdbd0757fedefc088b5","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/nprogress.ejs","hash":"4c2d39ce816b8a6dcd6b53113c8695f8bd650a23","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/category-bar.ejs","hash":"8772bce97ed297e7a88523f4e939ed6436c22f87","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/copyright.ejs","hash":"cbfa32c5f5973133afd043853b24f8200455cb2d","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/meta-bottom.ejs","hash":"375974ec017696e294dc12469fb0ae257800dc2d","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/meta-top.ejs","hash":"54dd479dbb440126e4ddd9d902229db5afaaae98","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/sidebar-left.ejs","hash":"9992c99b3eb728ad195970e1b84d665f2c8691c4","modified":1740320867056},{"_id":"themes/fluid/layout/_partials/post/sidebar-right.ejs","hash":"d5fcc9b60e02f869a29a8c17a16a6028ecc1e6d8","modified":1740320867056},{"_id":"themes/fluid/layout/_partials/post/toc.ejs","hash":"635a89060fbf72eeda066fc4bd0a97462f069417","modified":1740320867056},{"_id":"themes/fluid/source/css/_functions/base.styl","hash":"2e46f3f4e2c9fe34c1ff1c598738fc7349ae8188","modified":1740320867060},{"_id":"themes/fluid/source/css/_mixins/base.styl","hash":"542e306ee9494e8a78e44d6d7d409605d94caeb3","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/pages.styl","hash":"b8e887bc7fb3b765a1f8ec9448eff8603a41984f","modified":1740320867063},{"_id":"themes/fluid/source/css/_variables/base.styl","hash":"4ed5f0ae105ef4c7dd92eaf652ceda176c38e502","modified":1740320867063},{"_id":"themes/fluid/source/css/_pages/_about/about.styl","hash":"97fe42516ea531fdad771489b68aa8b2a7f6ae46","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_archive/archive.styl","hash":"c475e6681546d30350eaed11f23081ecae80c375","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/base.styl","hash":"643284c567665f96915f0b64e59934dda315f74d","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/color-schema.styl","hash":"85492ef64d7e5f70f0f7e46d570bbc911e686d7e","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/inline.styl","hash":"411a3fa3f924a87e00ff04d18b5c83283b049a4d","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/keyframes.styl","hash":"94065ea50f5bef7566d184f2422f6ac20866ba22","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_base/print.styl","hash":"166afbc596ea4b552bad7290ec372d25ec34db7b","modified":1740320867062},{"_id":"themes/fluid/layout/_partials/plugins/typed.ejs","hash":"f345374885cd6a334f09a11f59c443b5d577c06c","modified":1740320867055},{"_id":"themes/fluid/source/css/_pages/_category/category-bar.styl","hash":"cc6df43fef6bb3efecbfdd8b9e467424a1dea581","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_category/category-chain.styl","hash":"0cdf7ef50dfd0669d3b257821384ff31cd81b7c9","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_category/category-list.styl","hash":"7edfe1b571ecca7d08f5f4dbcf76f4ffdcfbf0b5","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_links/links.styl","hash":"5c7f2044e3f1da05a3229537c06bd879836f8d6e","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/comment.styl","hash":"780f3788e7357bcd3f3262d781cb91bb53976a93","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/highlight.styl","hash":"4df764d298fe556e501db4afc2b05686fe6ebcfb","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/markdown.styl","hash":"1e3d3a82721e7c10bcfcecec6d81cf2979039452","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/post-page.styl","hash":"7eee3f78296a3c81849a5415d1d43dcc6e03e6aa","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/post-tag.styl","hash":"c96d36aa8fe20f0c3c1a29ee2473cd8064b10f73","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_tag/tags.styl","hash":"65bfc01c76abc927fa1a23bf2422892b0d566c3f","modified":1740320867063},{"_id":"themes/fluid/source/css/_pages/_base/_widget/anchorjs.styl","hash":"e0cebda4a6f499aff75e71417d88caa7ceb13b94","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/banner.styl","hash":"7a0bd629bc234fc75e3cc8e3715ffada92f09e73","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/board.styl","hash":"4397037fc3f0033dbe546c33cd9dbdabd8cb1632","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/code-widget.styl","hash":"b66ab013f0f37d724a149b85b3c7432afcf460ad","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/copyright.styl","hash":"26f71a9cd60d96bb0cb5bbdf58150b8e524d9707","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/footer.styl","hash":"2caaca71dd1ff63d583099ed817677dd267b457e","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/footnote.styl","hash":"ae9289cc89649af2042907f8a003303b987f3404","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/header.styl","hash":"d42b748f2f49ef32aafb1a21d75991d2459da927","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/modal.styl","hash":"adf6c1e5c8e1fb41c77ce6e2258001df61245aa2","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_index/index.styl","hash":"25fb6fa4c783b847c632584c49a7e1593cdb2f5d","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_base/_widget/ngrogress.styl","hash":"5d225357b4a58d46118e6616377168336ed44cb2","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/noscript.styl","hash":"0cf2f2bb44f456150d428016675d5876a9d2e2aa","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/pagination.styl","hash":"8bb1b68e5f3552cb48c2ffa31edbc53646a8fb4c","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/scroll-btn.styl","hash":"f0e429a27fa8a7658fcbddbb4d4dbe4afa12499a","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/search.styl","hash":"10f7e91a91e681fb9fe46f9df7707b9ef78707c8","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/qrcode.styl","hash":"78704a94c0436097abfb0e0a57abeb3429c749b7","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/toc.styl","hash":"9e7452aa2372153f25d7a4675c9d36d281a65d24","modified":1740320867061},{"_id":"themes/fluid/source/img/hifuu.png","hash":"331b5950baf96f5d39192bb42b7da4d22a08992e","modified":1740320867086},{"_id":"source/images/clonezilla.png","hash":"7f443d79783df3744b2e51613422ee8fd7eea6f8","modified":1740318117703},{"_id":"source/images/mhwilds780M.jpg","hash":"e2c59c6caae452afb424d9f2fc3a255a44121b49","modified":1730738926927},{"_id":"source/images/phase_2_14.png","hash":"f50399a9eb469ed1e063ff4ccc0e8636c1b75f1e","modified":1740407245723},{"_id":"source/images/phase_4.png","hash":"81cd309a8990e015a8679b6a4e26a27d804c1da6","modified":1740410093173},{"_id":"themes/fluid/source/img/gh0s7.jpg","hash":"1c5af4f8cacdc3c6adbe8334866774cca2944910","modified":1740320867085},{"_id":"source/images/20241027_222225.png","hash":"f0595d1315d94e72e61c69e0499e5129e1821ba1","modified":1740320866763},{"_id":"source/images/b2054bbaf6197624d38cc2007d885fd1454454985.png","hash":"b021e971cedaa55b273eab2b10be94f795b06922","modified":1729572689000},{"_id":"source/images/lmms-import.png","hash":"002535b55a41f7a7dcba24517dd2397589416a64","modified":1744993882632},{"_id":"source/music/過ぎ去りし温もりの日々.mp3","hash":"22016dcdfcbac9393afd3fe97f2d6d6009cd57f5","modified":1747827275971},{"_id":"source/images/krita-official.png","hash":"2ec810a739ce33ad5666093b8c36d29028a17c17","modified":1752420936455},{"_id":"source/images/musecore-launch.png","hash":"0a6c5642d05b197555135cd602886311a9122df0","modified":1744993224514},{"_id":"source/images/zellij-helix.jpg","hash":"87fb5b7b51a4e3b062b891c04488a53457edded0","modified":1738492100321},{"_id":"themes/fluid/source/img/gensokyo.jpg","hash":"d82c0d5011c6cbc37109c9c80530d14cd266286f","modified":1740320867082},{"_id":"public/local-search.xml","hash":"e36b4f54cc4ef1487a0942eed42aad5f9299e100","modified":1763224614841},{"_id":"public/about/index.html","hash":"25d13773de22a48c1fc17d25aaf6d9907a73e28b","modified":1763224614841},{"_id":"public/2025/11/15/Your-exclusive-email-address/index.html","hash":"497249af59de2ee66d353ce33bb710c4c5786715","modified":1763224614841},{"_id":"public/2025/05/22/fortune/index.html","hash":"b763dfd33addce06c119e6e4d4e2414003a8be57","modified":1763224614841},{"_id":"public/2025/05/21/2025-5-21/index.html","hash":"37881747e0ab8347571056ef1e32a7b578afb140","modified":1763224614841},{"_id":"public/2025/07/13/kritabest/index.html","hash":"a1df181f8a0bcff143be03f49abc075b9920284a","modified":1763224614841},{"_id":"public/2025/03/10/archlinux-game-fix/index.html","hash":"9ae2ff5a413222135be2c4cc1bc0913ed39ad390","modified":1763224614841},{"_id":"public/2025/02/24/nudtbomblab/index.html","hash":"0a6392b9894d41caded05b2012588c043d91cc68","modified":1763224614841},{"_id":"public/2025/02/23/clonezilla/index.html","hash":"18b734abda3405019efcab2523f12e766bfa73a3","modified":1763224614841},{"_id":"public/2024/12/13/zellij-helix/index.html","hash":"952cd837e89121b41cef1b3fe92fc98f6253bcc4","modified":1763224614841},{"_id":"public/2025/05/23/gcc15restrict/index.html","hash":"d9e5bed8d1d0e738be5a8412360053a2e12c7e43","modified":1763224614841},{"_id":"public/2024/11/11/mhwi/index.html","hash":"ebe1a9550fe14035a215f067342373d3e2a2e8c5","modified":1763224614841},{"_id":"public/2025/03/10/searxng/index.html","hash":"2c8ae7693b4ece22f83f7536e4d2a5032499da90","modified":1763224614841},{"_id":"public/2024/11/06/overleaf/index.html","hash":"bc411b1a10fcbb6a5f6d0d213fa63f093830cae3","modified":1763224614841},{"_id":"public/2025/02/02/archlinux-optimization/index.html","hash":"1658dc07778483ded8a4e344eb807d3c4577746e","modified":1763224614841},{"_id":"public/2024/11/06/arch-nvidia/index.html","hash":"8ade129a78d71d3017432e1a65e1d6d292a16c53","modified":1763224614841},{"_id":"public/2024/11/04/Vocaloid调教-晴天/index.html","hash":"a3dd5c0b77bd2eb77555d349177492a02e17fd25","modified":1763224614841},{"_id":"public/2024/11/04/loopers/index.html","hash":"9eceb4b3fc581ba245f16a1b0217f5d2b1594b47","modified":1763224614841},{"_id":"public/2024/06/03/原来我还有个博客/index.html","hash":"7215c9a90d0695469c179717d27194e346a8abd0","modified":1763224614841},{"_id":"public/2023/12/31/12月31日进度报告/index.html","hash":"03f909c8954f0e623ccaf2e30fa44a1d3f45814b","modified":1763224614841},{"_id":"public/2024/10/30/GentleJena/index.html","hash":"0747019314125e796e102155e09febb4cbdb9b67","modified":1763224614841},{"_id":"public/2023/12/28/12月28日进度报告/index.html","hash":"5aa948c12c109b08b781baf308c9a80ddd3bc379","modified":1763224614841},{"_id":"public/2024/11/04/BlogUpdate/index.html","hash":"ac98c86ad12b3074414a44bfdf3ed153320d3a03","modified":1763224614841},{"_id":"public/2023/12/20/12月20日工作记录/index.html","hash":"5ee7c6817c2202a86dcf8e7e6898d2559c69dcf2","modified":1763224614841},{"_id":"public/2023/12/19/12月19日工作记录/index.html","hash":"bac072049959ec19cb53ad4b9180b53476c3542f","modified":1763224614841},{"_id":"public/2023/12/17/12月16-17日工作记录/index.html","hash":"2af885a19d1b28c3a1e6d4afdf110c6733a4c6b5","modified":1763224614841},{"_id":"public/2023/12/06/CGH0S7-s-Blog/index.html","hash":"b13772d5d9a1a7a19d1f565a27e8a9432f0da543","modified":1763224614841},{"_id":"public/archives/index.html","hash":"9768d2dda5965eb4a2a2c855022ff5c3cd915173","modified":1763224614841},{"_id":"public/2023/12/06/梦开始的地方/index.html","hash":"2df05084144d2567e92d3b9f59afbb720fbed05a","modified":1763224614841},{"_id":"public/archives/page/2/index.html","hash":"192345d653d4e82a88026fd55b4ac731d851dd1c","modified":1763224614841},{"_id":"public/2023/12/18/12月18日工作记录/index.html","hash":"82d3d1cab693f7808b28ed48803229a5290ee798","modified":1763224614841},{"_id":"public/archives/2023/index.html","hash":"d5052cf28c4ec0de436f7327192328855093970c","modified":1763224614841},{"_id":"public/archives/2024/index.html","hash":"fc91e93c49ce14ad85bf1855e1ad9eb69fd0f308","modified":1763224614841},{"_id":"public/archives/2024/06/index.html","hash":"52e4bb654a38910c5cd00494bbeaa46af81def96","modified":1763224614841},{"_id":"public/archives/2023/12/index.html","hash":"6a1cde2b35dc548d4ecdef9bdee169378e4c2a14","modified":1763224614841},{"_id":"public/archives/2024/11/index.html","hash":"1fb1a38fb01ad1c65172a319e32a66f7c1405ec2","modified":1763224614841},{"_id":"public/archives/2024/12/index.html","hash":"bb3f9997bab8f98163bfb091453d9fa6f65c10d0","modified":1763224614841},{"_id":"public/archives/2024/10/index.html","hash":"5561874693a8ffe513b2c533fb7bb5fd8c0e131f","modified":1763224614841},{"_id":"public/archives/2025/index.html","hash":"0ab5e4ed22c2c3e16125f1b6569d218555721834","modified":1763224614841},{"_id":"public/archives/2025/03/index.html","hash":"f11560632b43950122eb997f419fe74e92c16fca","modified":1763224614841},{"_id":"public/archives/2025/05/index.html","hash":"ff4fb479f5da8cec11486fe382a8ace4d25563f7","modified":1763224614841},{"_id":"public/archives/2025/07/index.html","hash":"632c0d08d30871940169edcfa8f19e377c3892b6","modified":1763224614841},{"_id":"public/archives/2025/11/index.html","hash":"3b09bb230a087922c0db85d8c6eed22dbc1dbd5a","modified":1763224614841},{"_id":"public/index.html","hash":"9dd2b636f31e1195d6dbca52ae43fb7e9b7f0e94","modified":1763224614841},{"_id":"public/page/2/index.html","hash":"39b3c78e482598be6fbf4a49e55b705cab72d95f","modified":1763224614841},{"_id":"public/archives/2025/02/index.html","hash":"c1c6ea89aed9fc5ae8fbf0cc611560a0c593e2be","modified":1763224614841},{"_id":"public/categories/更新/index.html","hash":"39ae73dfc0e214df88912e0a38b4cbf3b55e13a4","modified":1763224614841},{"_id":"public/page/3/index.html","hash":"992c49c1d2c61bf8a6810f55ed06b045e7f3a5f9","modified":1763224614841},{"_id":"public/archives/page/3/index.html","hash":"cb8822ce9bcc20d5fd8a1c654e689e9bacbba999","modified":1763224614841},{"_id":"public/categories/Vocaloid/index.html","hash":"048aca4e241b331d0209e9208c379fcf665a0fae","modified":1763224614841},{"_id":"public/tags/日志/index.html","hash":"0160660df456d6993ffff1eb4e8397f5198d8d39","modified":1763224614841},{"_id":"public/categories/Rearrangement/index.html","hash":"d86532128355807b19a6eb69208699289b62cfb7","modified":1763224614841},{"_id":"public/tags/TEST/index.html","hash":"2e5789b8e544c5e8404441c75b054f661294306a","modified":1763224614841},{"_id":"public/categories/技术分享/index.html","hash":"af921a46b2c79d42f3f975638ec3b7133af7028b","modified":1763224614841},{"_id":"public/tags/音乐/index.html","hash":"0c4de7bf53b25a52c23aaf27d7327d49d165268b","modified":1763224614841},{"_id":"public/tags/Vocaloid/index.html","hash":"98440598d6da10f35250eb46e393c0f7199fd848","modified":1763224614841},{"_id":"public/tags/日志/page/2/index.html","hash":"aa57dfa5c3f0f079ee752c53af3c798fd920d955","modified":1763224614841},{"_id":"public/tags/技术分享/index.html","hash":"bda865e4d5317a1029de847a6947c2227bf2d181","modified":1763224614841},{"_id":"public/tags/技术/index.html","hash":"9fe303dfd9633ea8deaa277121d4bdeb3100cd7a","modified":1763224614841},{"_id":"public/tags/板绘/index.html","hash":"05cf911d2c26ed5f6d104d875c11762e6e55b12e","modified":1763224614841},{"_id":"public/tags/系统优化/index.html","hash":"ff22e88f749e9ff6b5e47143fa5a24d3389a1795","modified":1763224614841},{"_id":"public/tags/Archlinux/index.html","hash":"5a8f0e067e637caac2101ea74f750f5ad9d0e45d","modified":1763224614841},{"_id":"public/tags/开源工具/index.html","hash":"413cb791b6e4f8b10b692a372aba73a022472720","modified":1763224614841},{"_id":"public/404.html","hash":"4696437e74fa558f8be811e50fdfd88f2a84e82b","modified":1763224614841},{"_id":"public/tags/学习/index.html","hash":"b754a2106f26f5f90fd1d4e6370b58904b39eda3","modified":1763224614841},{"_id":"public/categories/index.html","hash":"f2bbc847232265380a90a69b0d2f3bfb05137d31","modified":1763224614841},{"_id":"public/tags/index.html","hash":"7f8dd05c04727ffead5b9af41c9171ced3bbc8ee","modified":1763224614841},{"_id":"public/links/index.html","hash":"46f6120a630849e03697e69a4e74e876f37c1de1","modified":1763224614841},{"_id":"public/tags/生活/index.html","hash":"3c02d844602edb823daede03b684086c88599080","modified":1763224614841},{"_id":"public/images/amd.webp","hash":"cb0cfd5da0b9c10b9b22c65bba881cfde485d763","modified":1763224614841},{"_id":"public/images/archlinux-logo.png","hash":"4f6075309fadcb7f7547164cb8a99b4949f74598","modified":1763224614841},{"_id":"public/images/Written-By-Human-Not-By-AI-Badge-white@2x.png","hash":"994225c6fd72521b281144bdd98fefcca53e2c7b","modified":1763224614841},{"_id":"public/images/asc-events.png","hash":"a0b3610962062d0a322fe091bcc8f083ab13bc6e","modified":1763224614841},{"_id":"public/images/asc.png","hash":"3a33b35bff1b3f527f7a87a9d6a7d6d9a072a946","modified":1763224614841},{"_id":"public/images/built_on_the_kde_platform.png","hash":"507b6a4323b23772800006505e6c588bb515ebf5","modified":1763224614841},{"_id":"public/img/avatar.png","hash":"fe739a158cc128f70f780eb5fa96f388b81d478f","modified":1763224614841},{"_id":"public/img/police_beian.png","hash":"90efded6baa2dde599a9d6b1387973e8e64923ea","modified":1763224614841},{"_id":"public/img/loading.gif","hash":"2d2fc0f947940f98c21afafef39ecf226a2e8d55","modified":1763224614841},{"_id":"public/xml/local-search.xml","hash":"8c96ba6a064705602ce28d096fd7dd9069630a55","modified":1763224614841},{"_id":"public/css/highlight-dark.css","hash":"902294bada4323c0f51502d67cba8c3a0298952f","modified":1763224614841},{"_id":"public/css/gitalk.css","hash":"a57b3cc8e04a0a4a27aefa07facf5b5e7bca0e76","modified":1763224614841},{"_id":"public/css/highlight.css","hash":"04d4ddbb5e1d1007447c2fe293ee05aae9b9563e","modified":1763224614841},{"_id":"public/css/main.css","hash":"06433abcb688c2f5473623a9355bff9865c48d3f","modified":1763224614841},{"_id":"public/js/boot.js","hash":"38bd26c6b7acdafda86dda3560e6a3ca488d3c76","modified":1763224614841},{"_id":"public/js/color-schema.js","hash":"1ef88c881b9f942deadde3d890387b94c617342a","modified":1763224614841},{"_id":"public/images/phase1_strings.png","hash":"6fb457adddc5bb32aa463b6227542076c4b501e7","modified":1763224614841},{"_id":"public/img/hifuu.png","hash":"331b5950baf96f5d39192bb42b7da4d22a08992e","modified":1763224614841},{"_id":"public/js/events.js","hash":"6869811f67e4c3de3edfa4b08464bb242b97a402","modified":1763224614841},{"_id":"public/js/plugins.js","hash":"c34916291e392a774ff3e85c55badb83e8661297","modified":1763224614841},{"_id":"public/js/img-lazyload.js","hash":"cbdeca434ec4da51f488c821d51b4d23c73294af","modified":1763224614841},{"_id":"public/js/leancloud.js","hash":"eff77c7a5c399fcaefda48884980571e15243fc9","modified":1763224614841},{"_id":"public/js/local-search.js","hash":"b9945f76f8682f3ec32edfb285b26eb559f7b7e8","modified":1763224614841},{"_id":"public/js/umami-view.js","hash":"33c4b3883fa747604074ad3921606eeeaeb50716","modified":1763224614841},{"_id":"public/js/utils.js","hash":"b82e7c289a66dfd36064470fd41c0e96fc598b43","modified":1763224614841},{"_id":"public/images/rusendhelp3.png","hash":"db656266b54c91e540f3c677b146c0931b61277e","modified":1763224614841},{"_id":"public/images/searxng.png","hash":"9514f2bd14ac1cafa437f3655d9382d477667094","modified":1763224614841},{"_id":"public/images/rusendhelp1.png","hash":"73aa5b41d33c7f3392de28b7b696ebcb12248d82","modified":1763224614841},{"_id":"public/images/caseclosed.png","hash":"628b54b49c86a23af595a52daba9e0557b81a17a","modified":1763224614841},{"_id":"public/images/resendofficial.png","hash":"41c2cafe3a11c1674a0a1ec27698ea94cecc9a23","modified":1763224614841},{"_id":"public/images/rusendhelp2.png","hash":"3752f3041d28cbadcb4abc26151f0d17f505908d","modified":1763224614841},{"_id":"public/images/audiveris.png","hash":"52aa9df5f93559c2e47b30afbf84fc6cc6b34002","modified":1763224614841},{"_id":"public/images/musecore-to-midi.png","hash":"02ba31b29ba069dfef0e1cf26c5ccec9dc3d2289","modified":1763224614841},{"_id":"public/images/1730728153314.png","hash":"95d44ea62557a311503cab58d1dec5cafc97e07d","modified":1763224614841},{"_id":"public/images/musecore.png","hash":"9b2eba87e7c93e57f2024697d1ff4217d206e5ac","modified":1763224614841},{"_id":"public/images/yana.jpg","hash":"757c68ec322e834eace7236c38e74a4f9585d474","modified":1763224614841},{"_id":"public/img/gh0s7.jpg","hash":"1c5af4f8cacdc3c6adbe8334866774cca2944910","modified":1763224614841},{"_id":"public/images/xb2score.png","hash":"03efbb07a7bb7f6c7d58b98ed125cafe42074b94","modified":1763224614841},{"_id":"public/images/phase1.png","hash":"42533712403be6036231f1e3770f125858bf91d7","modified":1763224614841},{"_id":"public/images/5364bba6d035326e82c53504dd53e7c2454454985.png","hash":"11b11f23ebebbe08e8cf826b48eb37b4084796cd","modified":1763224614841},{"_id":"public/images/1613f5602b203b38230f19699deb0219454454985.png","hash":"3d71204d9a0731384f97ad0f90802a5c9fd96776","modified":1763224614841},{"_id":"public/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","hash":"dddf72bb12aef01baa3eb2017bb867f274059f12","modified":1763224614841},{"_id":"public/images/mhwilds4050.jpg","hash":"9b2b15c66e2340c15b86cec0fa8f818b67e06384","modified":1763224614841},{"_id":"public/images/clonezilla.png","hash":"7f443d79783df3744b2e51613422ee8fd7eea6f8","modified":1763224614841},{"_id":"public/images/mhwilds780M.jpg","hash":"e2c59c6caae452afb424d9f2fc3a255a44121b49","modified":1763224614841},{"_id":"public/images/phase_2_14.png","hash":"f50399a9eb469ed1e063ff4ccc0e8636c1b75f1e","modified":1763224614841},{"_id":"public/images/phase_4.png","hash":"81cd309a8990e015a8679b6a4e26a27d804c1da6","modified":1763224614841},{"_id":"public/images/20241027_222225.png","hash":"f0595d1315d94e72e61c69e0499e5129e1821ba1","modified":1763224614841},{"_id":"public/images/b2054bbaf6197624d38cc2007d885fd1454454985.png","hash":"b021e971cedaa55b273eab2b10be94f795b06922","modified":1763224614841},{"_id":"public/images/lmms-import.png","hash":"002535b55a41f7a7dcba24517dd2397589416a64","modified":1763224614841},{"_id":"public/music/過ぎ去りし温もりの日々.mp3","hash":"22016dcdfcbac9393afd3fe97f2d6d6009cd57f5","modified":1763224614841},{"_id":"public/images/krita-official.png","hash":"2ec810a739ce33ad5666093b8c36d29028a17c17","modified":1763224614841},{"_id":"public/images/musecore-launch.png","hash":"0a6c5642d05b197555135cd602886311a9122df0","modified":1763224614841},{"_id":"public/images/zellij-helix.jpg","hash":"87fb5b7b51a4e3b062b891c04488a53457edded0","modified":1763224614841},{"_id":"public/img/gensokyo.jpg","hash":"d82c0d5011c6cbc37109c9c80530d14cd266286f","modified":1763224614841}],"Category":[{"name":"更新","_id":"cmi0iescs000hog2b6i033sxi"},{"name":"Rearrangement","_id":"cmi0iesct000pog2be99zbtna"},{"name":"Vocaloid","_id":"cmi0iescu000wog2b0h9u4our"},{"name":"技术分享","_id":"cmi0iescv0012og2b8zqxfcql"}],"Data":[],"Page":[{"title":"About","date":"2024-11-04T14:46:12.000Z","layout":"about","_content":"\n白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧\n\n爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇\n\n截至目前最喜欢的歌手是宇多田光❤️\n\n联系方式:\n\n- Email: \n\n- Github: \n","source":"about/index.md","raw":"---\ntitle: About\ndate: 2024-11-04 22:46:12\nlayout: about\n---\n\n白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧\n\n爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇\n\n截至目前最喜欢的歌手是宇多田光❤️\n\n联系方式:\n\n- Email: \n\n- Github: \n","updated":"2025-02-23T16:01:20.093Z","path":"about/index.html","comments":1,"_id":"cmi0iescm0000og2bgzfr7q93","content":"

白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧

\n

爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇

\n

截至目前最喜欢的歌手是宇多田光❤️

\n

联系方式:

\n\n","excerpt":"","more":"

白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧

\n

爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇

\n

截至目前最喜欢的歌手是宇多田光❤️

\n

联系方式:

\n\n"}],"Post":[{"title":"12月16-17日工作记录","date":"2023-12-17T14:26:17.000Z","_content":"## 12月16-17日\n1. 四级考试\n2. 自学cuda,openacc,了解GPU架构知识\n3. 参加超算队启动会\n4. 大计和高数期中考试\n5. 研究spack使用\n6. 学习cuda编程\n7. 补作业\n","source":"_posts/12月16-17日工作记录.md","raw":"---\ntitle: 12月16-17日工作记录\ndate: 2023-12-17 22:26:17\ntags: [日志]\n---\n## 12月16-17日\n1. 四级考试\n2. 自学cuda,openacc,了解GPU架构知识\n3. 参加超算队启动会\n4. 大计和高数期中考试\n5. 研究spack使用\n6. 学习cuda编程\n7. 补作业\n","slug":"12月16-17日工作记录","published":1,"updated":"2025-02-23T14:27:46.747Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescn0001og2b9rmqf5nk","content":"

12月16-17日

    \n
  1. 四级考试
  2. \n
  3. 自学cuda,openacc,了解GPU架构知识
  4. \n
  5. 参加超算队启动会
  6. \n
  7. 大计和高数期中考试
  8. \n
  9. 研究spack使用
  10. \n
  11. 学习cuda编程
  12. \n
  13. 补作业
  14. \n
\n","excerpt":"","more":"

12月16-17日

    \n
  1. 四级考试
  2. \n
  3. 自学cuda,openacc,了解GPU架构知识
  4. \n
  5. 参加超算队启动会
  6. \n
  7. 大计和高数期中考试
  8. \n
  9. 研究spack使用
  10. \n
  11. 学习cuda编程
  12. \n
  13. 补作业
  14. \n
\n"},{"title":"12月18日工作记录","date":"2023-12-18T13:57:34.000Z","_content":"## 12月18日\n1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;\n2. 协助Neko组完成任务;\n3. 找出spack存在网络原因无法下载时的手动解决方案.","source":"_posts/12月18日工作记录.md","raw":"---\ntitle: 12月18日工作记录\ndate: 2023-12-18 21:57:34\ntags: [日志]\n---\n## 12月18日\n1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;\n2. 协助Neko组完成任务;\n3. 找出spack存在网络原因无法下载时的手动解决方案.","slug":"12月18日工作记录","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iesco0002og2bd2on1smz","content":"

12月18日

    \n
  1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;
  2. \n
  3. 协助Neko组完成任务;
  4. \n
  5. 找出spack存在网络原因无法下载时的手动解决方案.
  6. \n
\n","excerpt":"","more":"

12月18日

    \n
  1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;
  2. \n
  3. 协助Neko组完成任务;
  4. \n
  5. 找出spack存在网络原因无法下载时的手动解决方案.
  6. \n
\n"},{"title":"12月19日工作记录","date":"2023-12-19T13:59:47.000Z","_content":"## 12月18日\n1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;\n2. 学习cuda编程.\n","source":"_posts/12月19日工作记录.md","raw":"---\ntitle: 12月19日工作记录\ndate: 2023-12-19 21:59:47\ntags: [日志]\n---\n## 12月18日\n1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;\n2. 学习cuda编程.\n","slug":"12月19日工作记录","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescp0004og2b3lrb6vyo","content":"

12月18日

    \n
  1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;
  2. \n
  3. 学习cuda编程.
  4. \n
\n","excerpt":"","more":"

12月18日

    \n
  1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;
  2. \n
  3. 学习cuda编程.
  4. \n
\n"},{"title":"12月20日工作记录","date":"2023-12-20T13:56:42.000Z","_content":"## 12月20日\n\nOpenCAEPoro 小组(黄**,梁**,程**)\n\n1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果\n\n> 优化方向基本确定为OpenMP/OpenACC并行化+cuda移植\n\n2. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求\n","source":"_posts/12月20日工作记录.md","raw":"---\ntitle: 12月20日工作记录\ndate: 2023-12-20 21:56:42\ntags: 日志\n---\n## 12月20日\n\nOpenCAEPoro 小组(黄**,梁**,程**)\n\n1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果\n\n> 优化方向基本确定为OpenMP/OpenACC并行化+cuda移植\n\n2. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求\n","slug":"12月20日工作记录","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescp0005og2b38g8hgyl","content":"

12月20日

OpenCAEPoro 小组(黄,梁,程**)

\n
    \n
  1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果
  2. \n
\n
\n

优化方向基本确定为OpenMP/OpenACC并行化+cuda移植

\n
\n
    \n
  1. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求
  2. \n
\n","excerpt":"","more":"

12月20日

OpenCAEPoro 小组(黄,梁,程**)

\n
    \n
  1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果
  2. \n
\n
\n

优化方向基本确定为OpenMP/OpenACC并行化+cuda移植

\n
\n
    \n
  1. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求
  2. \n
\n"},{"title":"12月28日进度报告","date":"2023-12-28T15:22:13.000Z","_content":"## 12月28日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果\n2. 继续学习openacc及cuda相关知识\n3. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备\n","source":"_posts/12月28日进度报告.md","raw":"---\ntitle: 12月28日进度报告\ndate: 2023-12-28 23:22:13\ntags: 日志\n---\n## 12月28日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果\n2. 继续学习openacc及cuda相关知识\n3. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备\n","slug":"12月28日进度报告","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescq0006og2b6l6sf7kb","content":"

12月28日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果
  2. \n
  3. 继续学习openacc及cuda相关知识
  4. \n
  5. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备
  6. \n
\n","excerpt":"","more":"

12月28日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果
  2. \n
  3. 继续学习openacc及cuda相关知识
  4. \n
  5. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备
  6. \n
\n"},{"title":"12月30-31日进度报告","date":"2023-12-30T16:07:09.000Z","_content":"## 12月30-31日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;\n2. 收集运行数据用于proposal绘制图表;\n3. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.\n","source":"_posts/12月31日进度报告.md","raw":"---\ntitle: 12月30-31日进度报告\ndate: 2023-12-31 00:07:09\ntags: 日志\n---\n## 12月30-31日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;\n2. 收集运行数据用于proposal绘制图表;\n3. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.\n","slug":"12月31日进度报告","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescq0009og2bettuhl91","content":"

12月30-31日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;
  2. \n
  3. 收集运行数据用于proposal绘制图表;
  4. \n
  5. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.
  6. \n
\n","excerpt":"","more":"

12月30-31日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;
  2. \n
  3. 收集运行数据用于proposal绘制图表;
  4. \n
  5. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.
  6. \n
\n"},{"title":"小满随笔——决断","date":"2025-05-21T11:59:21.000Z","_content":"\n
\n
\n Lost Days of Warmth - Yasunori Mitsuda\n
\n \n
\n\n我本以为自己已经有足够的勇气和平静的心态去面对生活里的各种变故了,即便如此今天还是被突如其来的噩耗痛击得面目全非。\n\n辛辛苦苦和队友准备了大半年的ASC25失利,我想着以后回过头来看也不算什么以最快的速度调整心态;回校后一来就是各种烂摊子,写不完的作业补不完的课程,还有被脑子缺根筋的弱智评委恶意低分的大创立项成绩,我寻思这些事情烦完这阵也就过去了,人总不可能一直倒霉吧。结果就是今天下午排队验收CSAPP课程的shell实验时突然看到了外婆去世的消息,一时间两腿发软大脑空白不知所措,以至于后来排到我和教辅讲解实验过程时也是胡言乱语记不清自己到底说了什么,尽管最后还是被教辅满分放过了。\n\n小时候家里没现在景气,父母在市内打拼我则是被送到郊区被外婆抚养长大,上小学后为了让我进入一中直升班从二年级起我就被送进了奥数培训班,同时搬离了自己长大的地方,再到后来市政府改造,外婆家早已被拆得无影无踪,昔日的小伙伴杳无音信,温馨错杂的小居民区变成了陌生嘈杂的大酒店和菜市场,每次路过都不敢停留。从那以后外婆成了我和童年之间仅剩的联系,尽管老人后来连我的样貌也记不清楚。现如今童年记忆里最后的故人业已离开,再回首已是一片虚无。多年前外婆犯脑溢血被抢救回来的时候医生还承诺老人家活到抱孙子没问题,如今却猝不及防地驾鹤西去。在各种小说和游戏中经历过不少难忘的生死离别,可是到了现实亲自经历依旧痛心疾首难以放下。\n\n生物无法教会人们生命究竟是什么,生活却一点就通。上一次经历这种打击还是10年左右外公离开,那时候太小什么都不懂,等长大理解了经历的时间又足以抹平悲痛。如今在我的眼里,生命就是思念,是世间个体对其他个体的牵挂与个体之间互相建立的羁绊。我真的想停留在永远的当下,和自己爱的人永远定格在某一个瞬间,每天早上是一样的朝阳,出门是熟悉的面孔,回家是亲切的声音。然而活着就意味着必须面对各种苦楚,死去元知万事空,只有离开才是最好的解脱,活着的人要背负更多。长者的时间在一天天减少,他们的生命需要由后人去延续,但是后人的生活也不容易,面对各种困境放弃往往比坚持更加轻松,更有甚者勇敢地选择自戕从而摆脱一切,但是这样是不对的,让其他人代替自己承受痛苦是不对的,令人悲伤的选择是不应该做出的,活着的人哪怕再苦,只要身上背负了其他人的思念也只能继续前进。\n\n因此,我绝对不能气馁,我珍视现在和亲人朋友的点点滴滴,珍惜自己现在拥有的一切,我以最真诚的爱回馈所有爱我的人,不论面前有多少困难,我都会尽全力克服,这不是为我自己,现在我被摧残得只想躺平摆烂,但是为了所有信任我关心我的人,如今我绝对不能停下脚步。从来就没有永远的当下,连接我和童年最后的纽带已经被切断,再也不能回头,留给我的只剩下面前的未来,需要我亲手创造的未来,只有承受住来自各方的打击,我才有能力去维护由我创造的未来,既然选择了远方,便只顾风雨兼程。\n\n2025年的长沙小满格外燥热,痛定思过后的心是如此平静,没有多少时间可以浪费了,无需多言。\n\n*“回首向来萧瑟处,归去,也无风雨也无晴!”*\n","source":"_posts/2025-5-21.md","raw":"---\ntitle: 小满随笔——决断\ndate: 2025-05-21 19:59:21\ntags: 日志\n---\n\n
\n
\n Lost Days of Warmth - Yasunori Mitsuda\n
\n \n
\n\n我本以为自己已经有足够的勇气和平静的心态去面对生活里的各种变故了,即便如此今天还是被突如其来的噩耗痛击得面目全非。\n\n辛辛苦苦和队友准备了大半年的ASC25失利,我想着以后回过头来看也不算什么以最快的速度调整心态;回校后一来就是各种烂摊子,写不完的作业补不完的课程,还有被脑子缺根筋的弱智评委恶意低分的大创立项成绩,我寻思这些事情烦完这阵也就过去了,人总不可能一直倒霉吧。结果就是今天下午排队验收CSAPP课程的shell实验时突然看到了外婆去世的消息,一时间两腿发软大脑空白不知所措,以至于后来排到我和教辅讲解实验过程时也是胡言乱语记不清自己到底说了什么,尽管最后还是被教辅满分放过了。\n\n小时候家里没现在景气,父母在市内打拼我则是被送到郊区被外婆抚养长大,上小学后为了让我进入一中直升班从二年级起我就被送进了奥数培训班,同时搬离了自己长大的地方,再到后来市政府改造,外婆家早已被拆得无影无踪,昔日的小伙伴杳无音信,温馨错杂的小居民区变成了陌生嘈杂的大酒店和菜市场,每次路过都不敢停留。从那以后外婆成了我和童年之间仅剩的联系,尽管老人后来连我的样貌也记不清楚。现如今童年记忆里最后的故人业已离开,再回首已是一片虚无。多年前外婆犯脑溢血被抢救回来的时候医生还承诺老人家活到抱孙子没问题,如今却猝不及防地驾鹤西去。在各种小说和游戏中经历过不少难忘的生死离别,可是到了现实亲自经历依旧痛心疾首难以放下。\n\n生物无法教会人们生命究竟是什么,生活却一点就通。上一次经历这种打击还是10年左右外公离开,那时候太小什么都不懂,等长大理解了经历的时间又足以抹平悲痛。如今在我的眼里,生命就是思念,是世间个体对其他个体的牵挂与个体之间互相建立的羁绊。我真的想停留在永远的当下,和自己爱的人永远定格在某一个瞬间,每天早上是一样的朝阳,出门是熟悉的面孔,回家是亲切的声音。然而活着就意味着必须面对各种苦楚,死去元知万事空,只有离开才是最好的解脱,活着的人要背负更多。长者的时间在一天天减少,他们的生命需要由后人去延续,但是后人的生活也不容易,面对各种困境放弃往往比坚持更加轻松,更有甚者勇敢地选择自戕从而摆脱一切,但是这样是不对的,让其他人代替自己承受痛苦是不对的,令人悲伤的选择是不应该做出的,活着的人哪怕再苦,只要身上背负了其他人的思念也只能继续前进。\n\n因此,我绝对不能气馁,我珍视现在和亲人朋友的点点滴滴,珍惜自己现在拥有的一切,我以最真诚的爱回馈所有爱我的人,不论面前有多少困难,我都会尽全力克服,这不是为我自己,现在我被摧残得只想躺平摆烂,但是为了所有信任我关心我的人,如今我绝对不能停下脚步。从来就没有永远的当下,连接我和童年最后的纽带已经被切断,再也不能回头,留给我的只剩下面前的未来,需要我亲手创造的未来,只有承受住来自各方的打击,我才有能力去维护由我创造的未来,既然选择了远方,便只顾风雨兼程。\n\n2025年的长沙小满格外燥热,痛定思过后的心是如此平静,没有多少时间可以浪费了,无需多言。\n\n*“回首向来萧瑟处,归去,也无风雨也无晴!”*\n","slug":"2025-5-21","published":1,"updated":"2025-05-21T13:34:43.639Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescr000bog2bhmv17lab","content":"
\n
\n Lost Days of Warmth - Yasunori Mitsuda\n
\n \n
\n\n

我本以为自己已经有足够的勇气和平静的心态去面对生活里的各种变故了,即便如此今天还是被突如其来的噩耗痛击得面目全非。

\n

辛辛苦苦和队友准备了大半年的ASC25失利,我想着以后回过头来看也不算什么以最快的速度调整心态;回校后一来就是各种烂摊子,写不完的作业补不完的课程,还有被脑子缺根筋的弱智评委恶意低分的大创立项成绩,我寻思这些事情烦完这阵也就过去了,人总不可能一直倒霉吧。结果就是今天下午排队验收CSAPP课程的shell实验时突然看到了外婆去世的消息,一时间两腿发软大脑空白不知所措,以至于后来排到我和教辅讲解实验过程时也是胡言乱语记不清自己到底说了什么,尽管最后还是被教辅满分放过了。

\n

小时候家里没现在景气,父母在市内打拼我则是被送到郊区被外婆抚养长大,上小学后为了让我进入一中直升班从二年级起我就被送进了奥数培训班,同时搬离了自己长大的地方,再到后来市政府改造,外婆家早已被拆得无影无踪,昔日的小伙伴杳无音信,温馨错杂的小居民区变成了陌生嘈杂的大酒店和菜市场,每次路过都不敢停留。从那以后外婆成了我和童年之间仅剩的联系,尽管老人后来连我的样貌也记不清楚。现如今童年记忆里最后的故人业已离开,再回首已是一片虚无。多年前外婆犯脑溢血被抢救回来的时候医生还承诺老人家活到抱孙子没问题,如今却猝不及防地驾鹤西去。在各种小说和游戏中经历过不少难忘的生死离别,可是到了现实亲自经历依旧痛心疾首难以放下。

\n

生物无法教会人们生命究竟是什么,生活却一点就通。上一次经历这种打击还是10年左右外公离开,那时候太小什么都不懂,等长大理解了经历的时间又足以抹平悲痛。如今在我的眼里,生命就是思念,是世间个体对其他个体的牵挂与个体之间互相建立的羁绊。我真的想停留在永远的当下,和自己爱的人永远定格在某一个瞬间,每天早上是一样的朝阳,出门是熟悉的面孔,回家是亲切的声音。然而活着就意味着必须面对各种苦楚,死去元知万事空,只有离开才是最好的解脱,活着的人要背负更多。长者的时间在一天天减少,他们的生命需要由后人去延续,但是后人的生活也不容易,面对各种困境放弃往往比坚持更加轻松,更有甚者勇敢地选择自戕从而摆脱一切,但是这样是不对的,让其他人代替自己承受痛苦是不对的,令人悲伤的选择是不应该做出的,活着的人哪怕再苦,只要身上背负了其他人的思念也只能继续前进。

\n

因此,我绝对不能气馁,我珍视现在和亲人朋友的点点滴滴,珍惜自己现在拥有的一切,我以最真诚的爱回馈所有爱我的人,不论面前有多少困难,我都会尽全力克服,这不是为我自己,现在我被摧残得只想躺平摆烂,但是为了所有信任我关心我的人,如今我绝对不能停下脚步。从来就没有永远的当下,连接我和童年最后的纽带已经被切断,再也不能回头,留给我的只剩下面前的未来,需要我亲手创造的未来,只有承受住来自各方的打击,我才有能力去维护由我创造的未来,既然选择了远方,便只顾风雨兼程。

\n

2025年的长沙小满格外燥热,痛定思过后的心是如此平静,没有多少时间可以浪费了,无需多言。

\n

“回首向来萧瑟处,归去,也无风雨也无晴!”

\n","excerpt":"","more":"
\n
\n Lost Days of Warmth - Yasunori Mitsuda\n
\n \n
\n\n

我本以为自己已经有足够的勇气和平静的心态去面对生活里的各种变故了,即便如此今天还是被突如其来的噩耗痛击得面目全非。

\n

辛辛苦苦和队友准备了大半年的ASC25失利,我想着以后回过头来看也不算什么以最快的速度调整心态;回校后一来就是各种烂摊子,写不完的作业补不完的课程,还有被脑子缺根筋的弱智评委恶意低分的大创立项成绩,我寻思这些事情烦完这阵也就过去了,人总不可能一直倒霉吧。结果就是今天下午排队验收CSAPP课程的shell实验时突然看到了外婆去世的消息,一时间两腿发软大脑空白不知所措,以至于后来排到我和教辅讲解实验过程时也是胡言乱语记不清自己到底说了什么,尽管最后还是被教辅满分放过了。

\n

小时候家里没现在景气,父母在市内打拼我则是被送到郊区被外婆抚养长大,上小学后为了让我进入一中直升班从二年级起我就被送进了奥数培训班,同时搬离了自己长大的地方,再到后来市政府改造,外婆家早已被拆得无影无踪,昔日的小伙伴杳无音信,温馨错杂的小居民区变成了陌生嘈杂的大酒店和菜市场,每次路过都不敢停留。从那以后外婆成了我和童年之间仅剩的联系,尽管老人后来连我的样貌也记不清楚。现如今童年记忆里最后的故人业已离开,再回首已是一片虚无。多年前外婆犯脑溢血被抢救回来的时候医生还承诺老人家活到抱孙子没问题,如今却猝不及防地驾鹤西去。在各种小说和游戏中经历过不少难忘的生死离别,可是到了现实亲自经历依旧痛心疾首难以放下。

\n

生物无法教会人们生命究竟是什么,生活却一点就通。上一次经历这种打击还是10年左右外公离开,那时候太小什么都不懂,等长大理解了经历的时间又足以抹平悲痛。如今在我的眼里,生命就是思念,是世间个体对其他个体的牵挂与个体之间互相建立的羁绊。我真的想停留在永远的当下,和自己爱的人永远定格在某一个瞬间,每天早上是一样的朝阳,出门是熟悉的面孔,回家是亲切的声音。然而活着就意味着必须面对各种苦楚,死去元知万事空,只有离开才是最好的解脱,活着的人要背负更多。长者的时间在一天天减少,他们的生命需要由后人去延续,但是后人的生活也不容易,面对各种困境放弃往往比坚持更加轻松,更有甚者勇敢地选择自戕从而摆脱一切,但是这样是不对的,让其他人代替自己承受痛苦是不对的,令人悲伤的选择是不应该做出的,活着的人哪怕再苦,只要身上背负了其他人的思念也只能继续前进。

\n

因此,我绝对不能气馁,我珍视现在和亲人朋友的点点滴滴,珍惜自己现在拥有的一切,我以最真诚的爱回馈所有爱我的人,不论面前有多少困难,我都会尽全力克服,这不是为我自己,现在我被摧残得只想躺平摆烂,但是为了所有信任我关心我的人,如今我绝对不能停下脚步。从来就没有永远的当下,连接我和童年最后的纽带已经被切断,再也不能回头,留给我的只剩下面前的未来,需要我亲手创造的未来,只有承受住来自各方的打击,我才有能力去维护由我创造的未来,既然选择了远方,便只顾风雨兼程。

\n

2025年的长沙小满格外燥热,痛定思过后的心是如此平静,没有多少时间可以浪费了,无需多言。

\n

“回首向来萧瑟处,归去,也无风雨也无晴!”

\n"},{"title":"博客更新记录","date":"2024-11-04T15:18:02.000Z","_content":"\n- 博客主题更新为 `Fluid` 主题,原主题为 `Next`\n- 更新了访问地址为 `https://blog.hifuu.ink`\n- 新增了 `About` 页面\n- 新增了 `友链` 页面\n- 完善页面布局\n","source":"_posts/BlogUpdate.md","raw":"---\ntitle: 博客更新记录\ndate: 2024-11-04 23:18:02\ntags: 日志\ncategories: 更新\n---\n\n- 博客主题更新为 `Fluid` 主题,原主题为 `Next`\n- 更新了访问地址为 `https://blog.hifuu.ink`\n- 新增了 `About` 页面\n- 新增了 `友链` 页面\n- 完善页面布局\n","slug":"BlogUpdate","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescr000eog2b2ugh780z","content":"
    \n
  • 博客主题更新为 Fluid 主题,原主题为 Next
  • \n
  • 更新了访问地址为 https://blog.hifuu.ink
  • \n
  • 新增了 About 页面
  • \n
  • 新增了 友链 页面
  • \n
  • 完善页面布局
  • \n
\n","excerpt":"","more":"
    \n
  • 博客主题更新为 Fluid 主题,原主题为 Next
  • \n
  • 更新了访问地址为 https://blog.hifuu.ink
  • \n
  • 新增了 About 页面
  • \n
  • 新增了 友链 页面
  • \n
  • 完善页面布局
  • \n
\n"},{"title":"Welcome to CGH0S7's Blog","date":"2023-12-06T08:33:30.000Z","_content":"\nHello World !\n","source":"_posts/CGH0S7-s-Blog.md","raw":"---\ntitle: Welcome to CGH0S7's Blog \ndate: 2023-12-06 16:33:30\ntags: TEST\n---\n\nHello World !\n","slug":"CGH0S7-s-Blog","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescs000gog2b47qaa5er","content":"

Hello World !

\n","excerpt":"","more":"

Hello World !

\n"},{"title":"Gentle Jena","date":"2024-10-30T14:11:14.000Z","_content":"\n很喜欢的一首曲子\n顺便测试一下视频上传\n以后随缘更新各种乱七八糟的东西。。\n\n\n","source":"_posts/GentleJena.md","raw":"---\ntitle: Gentle Jena\ndate: 2024-10-30 22:11:14\ntags: 音乐\ncategories: Rearrangement\n---\n\n很喜欢的一首曲子\n顺便测试一下视频上传\n以后随缘更新各种乱七八糟的东西。。\n\n\n","slug":"GentleJena","published":1,"updated":"2025-02-23T17:14:31.930Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescs000jog2bgkpv8cr4","content":"

很喜欢的一首曲子
顺便测试一下视频上传
以后随缘更新各种乱七八糟的东西。。

\n\n","excerpt":"","more":"

很喜欢的一首曲子
顺便测试一下视频上传
以后随缘更新各种乱七八糟的东西。。

\n\n"},{"title":"Vocaloid调教-晴天(洛天依V4)","date":"2024-11-04T13:52:59.000Z","_content":"\n其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。\n\n“故事的小黄花,从出生那年就飘着...”\n\n{% raw %}\n\n{% endraw %}\n\n","source":"_posts/Vocaloid调教-晴天.md","raw":"---\ntitle: Vocaloid调教-晴天(洛天依v4)\ndate: 2024-11-04 21:52:59\ntags: [Vocaloid, 音乐]\ncategories: [Vocaloid]\n---\n\n其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。\n\n“故事的小黄花,从出生那年就飘着...”\n\n{% raw %}\n\n{% endraw %}\n\n","slug":"Vocaloid调教-晴天","published":1,"updated":"2025-02-25T00:19:05.940Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iesct000mog2bf2al1nlk","content":"

其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。

\n

“故事的小黄花,从出生那年就飘着…”

\n\n\n\n\n","excerpt":"","more":"

其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。

\n

“故事的小黄花,从出生那年就飘着…”

\n\n\n\n\n"},{"title":"低成本快速搞定专属域名邮箱:从 0 到 CLI 收发只要 15 分钟","date":"2025-11-15T15:36:22.000Z","_content":"\n> 失踪人口回归 👋\n> 如果你只想「有个能用的 `@自己域名` 邮箱」,却懒得租服务器、折腾 Postfix、跟 25 端口斗智斗勇、花费你宝贵的💰,那这篇 15 分钟速通教程就是写给你的(当然,一点💰都不花是不可能的,你至少需要买一个域名=)\n\n---\n\n## 1. 最终效果\n\n- 任何前缀都能即时生成: `helloworld@your.com` / `fknudt@your.com` / `ilovethu@your.com` \n- 在终端里使用命令收发邮件,无需专门打开各种邮件客户端。\n\n整套方案 **只花域名注册费用**,**0 服务器 0 运维**,完全白嫖 Resend 免费额度。\n\n---\n\n## 2. 准备工作(2 min)\n\n| 资源 | 用途 | 费用 |\n|---|---|---|\n| 一枚域名 | 做邮箱后缀 | 约 ¥30+ / 年(阿里云 Namecheap Cloudflare 均可) |\n| Resend 账号 | 托管邮服 | 免费 100 封 / 天 |\n\n![Resend文档](/images/resendofficial.png)\n\n---\n\n## 3. 3 步完成域名绑定(5 min)\n\n1. 登录 [Resend](https://resend.com) → **Domains** → **Add Domain** \n 输入 `your.com` → 得到一组 DNS 记录(TXT + MX + DKIM)。 \n\n2. 去域名注册商把记录全部照抄粘贴,保存。(由于笔者为免费用户并且已经配置域名无法再次配置,因此未能提供截图但是步骤非常简单)。\n - 登录你的域名注册商账号,找到DNS管理页面。\n - 添加Resend提供的TXT记录,用于验证域名所有权。\n - 添加Resend提供的MX记录,用于接收邮件。\n - 根据Resend的要求,配置完整所有必要的DNS记录。\n - 保存更改后,等待DNS记录生效,通常需要几分钟到24小时不等(这是resend官方的说法,笔者实测只需要几分钟不到)。\n ⚠️ 只需改 **DNS 解析**,不用转 nameserver,1 min 搞定。 \n\n3. 回到 Resend 点 **Verify**,状态变绿 ✅ 即生效(实测 30s-3min,并不会像官方说的有可能要24小时)。\n\n---\n\n## 4. 无限别名 + 转发(立刻能用)\n\nResend 对「 catch-all 」免费! \n意思是你 **不用提前新建账号**,任何 `@your.com` 的信都会飞进你设定的地址,只需要在 Resend 官网查收即可。\n\n---\n\n## 5. 终端发邮件(可选,8 min 部署)\n\n网页收发邮件显然太麻烦,我用**rust**写了个可爱的 CLI 客户端 [**rusend**](https://github.com/CGH0S7/rusend),基于 Resend 官方 API,支持发送与查收邮件非常方便。(好吧其实是Gemini小姐帮忙写的@@)\n\n### ①-1 下载预构建可执行文件\n\n在[Github Releases](https://github.com/CGH0S7/rusend/releases/tag/stable)里下载对应系统的预编译包,解压放到 `$PATH` 目录下即可。\n\n### ①-2 源码构建\n\n下载并编译rusend,准备好rust工具链,具体编译命令如下:\n\n ```bash\n git clone https://github.com/CGH0S7/rusend.git\n cd rusend\n cargo build --release\n ```\n\n将`rusend`二进制文件移动到系统的`$PATH`目录下,例如`/usr/local/bin`。\n\n### ② 补全 & API Key配置\n\n使用下面的命令进行命令行补全配置:\n\n ```bash\n echo \"source <(rusend completions bash)\" >> ~/.bashrc\n source ~/.bashrc\n ```\n\n ```zsh\n echo \"source <(rusend completions zsh)\" >> ~/.zshrc\n source ~/.zshrc\n ```\n\n ```fish\n rusend completions fish > ~/.config/fish/completions/rusend.fish\n source ~/.config/fish/config.fish\n ```\n\n在Resend控制面板中,找到`API Keys`选项,为你配置的域名生成一个新的API Key。然后在终端中运行以下命令进行配置:\n\n ```bash\n rusend config --key re_xxxxxxxxx\n ```\n\n### ③ 使用 rusend 收发邮件\n\n详细功能请查看[Readme](https://github.com/CGH0S7/rusend)文档:\n\n ![rusend文档](/images/rusendhelp1.png)\n ![rusend文档](/images/rusendhelp2.png)\n ![rusend软件帮助](/images/rusendhelp3.png)\n\n---\n\n## 6. 成本 & 限额总结\n\n| 项目 | 免费额度 |\n|---|---|\n| Resend | 100 封 / 天 |\n| 域名 | 约 ¥30+ / 年 |\n| rusend | 开源 |\n\n非主力邮箱场景下完全够用,不建议用于接收各种广告或更新推送。\n\n若想要「匿名转发」隐藏真实地址,可以再套一层 [AnonAddy](https://addy.io) 即可,本文不展开。\n\n---\n\n## 7. 结语\n\n以上就是「低成本快速拥有个人专属域名邮箱」的全部流程。\n\n零服务器、零运维、全平台通用,甚至能在手机 Termux 里发邮。\n\n如果能帮到你,去 [rusend](https://github.com/CGH0S7/rusend) 点个 ⭐ 当稿费吧~😉\n","source":"_posts/Your-exclusive-email-address.md","raw":"---\ntitle: 低成本快速搞定专属域名邮箱:从 0 到 CLI 收发只要 15 分钟\ndate: 2025-11-15 23:36:22\ntags: [技术分享]\n---\n\n> 失踪人口回归 👋\n> 如果你只想「有个能用的 `@自己域名` 邮箱」,却懒得租服务器、折腾 Postfix、跟 25 端口斗智斗勇、花费你宝贵的💰,那这篇 15 分钟速通教程就是写给你的(当然,一点💰都不花是不可能的,你至少需要买一个域名=)\n\n---\n\n## 1. 最终效果\n\n- 任何前缀都能即时生成: `helloworld@your.com` / `fknudt@your.com` / `ilovethu@your.com` \n- 在终端里使用命令收发邮件,无需专门打开各种邮件客户端。\n\n整套方案 **只花域名注册费用**,**0 服务器 0 运维**,完全白嫖 Resend 免费额度。\n\n---\n\n## 2. 准备工作(2 min)\n\n| 资源 | 用途 | 费用 |\n|---|---|---|\n| 一枚域名 | 做邮箱后缀 | 约 ¥30+ / 年(阿里云 Namecheap Cloudflare 均可) |\n| Resend 账号 | 托管邮服 | 免费 100 封 / 天 |\n\n![Resend文档](/images/resendofficial.png)\n\n---\n\n## 3. 3 步完成域名绑定(5 min)\n\n1. 登录 [Resend](https://resend.com) → **Domains** → **Add Domain** \n 输入 `your.com` → 得到一组 DNS 记录(TXT + MX + DKIM)。 \n\n2. 去域名注册商把记录全部照抄粘贴,保存。(由于笔者为免费用户并且已经配置域名无法再次配置,因此未能提供截图但是步骤非常简单)。\n - 登录你的域名注册商账号,找到DNS管理页面。\n - 添加Resend提供的TXT记录,用于验证域名所有权。\n - 添加Resend提供的MX记录,用于接收邮件。\n - 根据Resend的要求,配置完整所有必要的DNS记录。\n - 保存更改后,等待DNS记录生效,通常需要几分钟到24小时不等(这是resend官方的说法,笔者实测只需要几分钟不到)。\n ⚠️ 只需改 **DNS 解析**,不用转 nameserver,1 min 搞定。 \n\n3. 回到 Resend 点 **Verify**,状态变绿 ✅ 即生效(实测 30s-3min,并不会像官方说的有可能要24小时)。\n\n---\n\n## 4. 无限别名 + 转发(立刻能用)\n\nResend 对「 catch-all 」免费! \n意思是你 **不用提前新建账号**,任何 `@your.com` 的信都会飞进你设定的地址,只需要在 Resend 官网查收即可。\n\n---\n\n## 5. 终端发邮件(可选,8 min 部署)\n\n网页收发邮件显然太麻烦,我用**rust**写了个可爱的 CLI 客户端 [**rusend**](https://github.com/CGH0S7/rusend),基于 Resend 官方 API,支持发送与查收邮件非常方便。(好吧其实是Gemini小姐帮忙写的@@)\n\n### ①-1 下载预构建可执行文件\n\n在[Github Releases](https://github.com/CGH0S7/rusend/releases/tag/stable)里下载对应系统的预编译包,解压放到 `$PATH` 目录下即可。\n\n### ①-2 源码构建\n\n下载并编译rusend,准备好rust工具链,具体编译命令如下:\n\n ```bash\n git clone https://github.com/CGH0S7/rusend.git\n cd rusend\n cargo build --release\n ```\n\n将`rusend`二进制文件移动到系统的`$PATH`目录下,例如`/usr/local/bin`。\n\n### ② 补全 & API Key配置\n\n使用下面的命令进行命令行补全配置:\n\n ```bash\n echo \"source <(rusend completions bash)\" >> ~/.bashrc\n source ~/.bashrc\n ```\n\n ```zsh\n echo \"source <(rusend completions zsh)\" >> ~/.zshrc\n source ~/.zshrc\n ```\n\n ```fish\n rusend completions fish > ~/.config/fish/completions/rusend.fish\n source ~/.config/fish/config.fish\n ```\n\n在Resend控制面板中,找到`API Keys`选项,为你配置的域名生成一个新的API Key。然后在终端中运行以下命令进行配置:\n\n ```bash\n rusend config --key re_xxxxxxxxx\n ```\n\n### ③ 使用 rusend 收发邮件\n\n详细功能请查看[Readme](https://github.com/CGH0S7/rusend)文档:\n\n ![rusend文档](/images/rusendhelp1.png)\n ![rusend文档](/images/rusendhelp2.png)\n ![rusend软件帮助](/images/rusendhelp3.png)\n\n---\n\n## 6. 成本 & 限额总结\n\n| 项目 | 免费额度 |\n|---|---|\n| Resend | 100 封 / 天 |\n| 域名 | 约 ¥30+ / 年 |\n| rusend | 开源 |\n\n非主力邮箱场景下完全够用,不建议用于接收各种广告或更新推送。\n\n若想要「匿名转发」隐藏真实地址,可以再套一层 [AnonAddy](https://addy.io) 即可,本文不展开。\n\n---\n\n## 7. 结语\n\n以上就是「低成本快速拥有个人专属域名邮箱」的全部流程。\n\n零服务器、零运维、全平台通用,甚至能在手机 Termux 里发邮。\n\n如果能帮到你,去 [rusend](https://github.com/CGH0S7/rusend) 点个 ⭐ 当稿费吧~😉\n","slug":"Your-exclusive-email-address","published":1,"updated":"2025-11-15T16:42:50.086Z","_id":"cmi0iesct000oog2b3at3eki5","comments":1,"layout":"post","photos":[],"content":"
\n

失踪人口回归 👋
如果你只想「有个能用的 @自己域名 邮箱」,却懒得租服务器、折腾 Postfix、跟 25 端口斗智斗勇、花费你宝贵的💰,那这篇 15 分钟速通教程就是写给你的(当然,一点💰都不花是不可能的,你至少需要买一个域名=)

\n
\n
\n

1. 最终效果

    \n
  • 任何前缀都能即时生成: helloworld@your.com / fknudt@your.com / ilovethu@your.com
  • \n
  • 在终端里使用命令收发邮件,无需专门打开各种邮件客户端。
  • \n
\n

整套方案 只花域名注册费用0 服务器 0 运维,完全白嫖 Resend 免费额度。

\n
\n

2. 准备工作(2 min)

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
资源用途费用
一枚域名做邮箱后缀约 ¥30+ / 年(阿里云 Namecheap Cloudflare 均可)
Resend 账号托管邮服免费 100 封 / 天
\n

\"Resend文档\"

\n
\n

3. 3 步完成域名绑定(5 min)

    \n
  1. 登录 ResendDomainsAdd Domain
    输入 your.com → 得到一组 DNS 记录(TXT + MX + DKIM)。

    \n
  2. \n
  3. 去域名注册商把记录全部照抄粘贴,保存。(由于笔者为免费用户并且已经配置域名无法再次配置,因此未能提供截图但是步骤非常简单)。

    \n
      \n
    • 登录你的域名注册商账号,找到DNS管理页面。
    • \n
    • 添加Resend提供的TXT记录,用于验证域名所有权。
    • \n
    • 添加Resend提供的MX记录,用于接收邮件。
    • \n
    • 根据Resend的要求,配置完整所有必要的DNS记录。
    • \n
    • 保存更改后,等待DNS记录生效,通常需要几分钟到24小时不等(这是resend官方的说法,笔者实测只需要几分钟不到)。
      ⚠️ 只需改 DNS 解析,不用转 nameserver,1 min 搞定。
    • \n
    \n
  4. \n
  5. 回到 Resend 点 Verify,状态变绿 ✅ 即生效(实测 30s-3min,并不会像官方说的有可能要24小时)。

    \n
  6. \n
\n
\n

4. 无限别名 + 转发(立刻能用)

Resend 对「 catch-all 」免费!
意思是你 不用提前新建账号,任何 @your.com 的信都会飞进你设定的地址,只需要在 Resend 官网查收即可。

\n
\n

5. 终端发邮件(可选,8 min 部署)

网页收发邮件显然太麻烦,我用rust写了个可爱的 CLI 客户端 rusend,基于 Resend 官方 API,支持发送与查收邮件非常方便。(好吧其实是Gemini小姐帮忙写的@@)

\n

①-1 下载预构建可执行文件

Github Releases里下载对应系统的预编译包,解压放到 $PATH 目录下即可。

\n

①-2 源码构建

下载并编译rusend,准备好rust工具链,具体编译命令如下:

\n
1
2
3
git clone https://github.com/CGH0S7/rusend.git
cd rusend
cargo build --release
\n\n

rusend二进制文件移动到系统的$PATH目录下,例如/usr/local/bin

\n

② 补全 & API Key配置

使用下面的命令进行命令行补全配置:

\n
1
2
echo "source <(rusend completions bash)" >> ~/.bashrc
source ~/.bashrc
\n\n
1
2
echo "source <(rusend completions zsh)" >> ~/.zshrc
source ~/.zshrc
\n\n
1
2
rusend completions fish > ~/.config/fish/completions/rusend.fish
source ~/.config/fish/config.fish
\n\n

在Resend控制面板中,找到API Keys选项,为你配置的域名生成一个新的API Key。然后在终端中运行以下命令进行配置:

\n
1
rusend config --key re_xxxxxxxxx
\n\n

③ 使用 rusend 收发邮件

详细功能请查看Readme文档:

\n

\"rusend文档\"
\"rusend文档\"
\"rusend软件帮助\"

\n
\n

6. 成本 & 限额总结

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
项目免费额度
Resend100 封 / 天
域名约 ¥30+ / 年
rusend开源
\n

非主力邮箱场景下完全够用,不建议用于接收各种广告或更新推送。

\n

若想要「匿名转发」隐藏真实地址,可以再套一层 AnonAddy 即可,本文不展开。

\n
\n

7. 结语

以上就是「低成本快速拥有个人专属域名邮箱」的全部流程。

\n

零服务器、零运维、全平台通用,甚至能在手机 Termux 里发邮。

\n

如果能帮到你,去 rusend 点个 ⭐ 当稿费吧~😉

\n","excerpt":"","more":"
\n

失踪人口回归 👋
如果你只想「有个能用的 @自己域名 邮箱」,却懒得租服务器、折腾 Postfix、跟 25 端口斗智斗勇、花费你宝贵的💰,那这篇 15 分钟速通教程就是写给你的(当然,一点💰都不花是不可能的,你至少需要买一个域名=)

\n
\n
\n

1. 最终效果

    \n
  • 任何前缀都能即时生成: helloworld@your.com / fknudt@your.com / ilovethu@your.com
  • \n
  • 在终端里使用命令收发邮件,无需专门打开各种邮件客户端。
  • \n
\n

整套方案 只花域名注册费用0 服务器 0 运维,完全白嫖 Resend 免费额度。

\n
\n

2. 准备工作(2 min)

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
资源用途费用
一枚域名做邮箱后缀约 ¥30+ / 年(阿里云 Namecheap Cloudflare 均可)
Resend 账号托管邮服免费 100 封 / 天
\n

\"Resend文档\"

\n
\n

3. 3 步完成域名绑定(5 min)

    \n
  1. 登录 ResendDomainsAdd Domain
    输入 your.com → 得到一组 DNS 记录(TXT + MX + DKIM)。

    \n
  2. \n
  3. 去域名注册商把记录全部照抄粘贴,保存。(由于笔者为免费用户并且已经配置域名无法再次配置,因此未能提供截图但是步骤非常简单)。

    \n
      \n
    • 登录你的域名注册商账号,找到DNS管理页面。
    • \n
    • 添加Resend提供的TXT记录,用于验证域名所有权。
    • \n
    • 添加Resend提供的MX记录,用于接收邮件。
    • \n
    • 根据Resend的要求,配置完整所有必要的DNS记录。
    • \n
    • 保存更改后,等待DNS记录生效,通常需要几分钟到24小时不等(这是resend官方的说法,笔者实测只需要几分钟不到)。
      ⚠️ 只需改 DNS 解析,不用转 nameserver,1 min 搞定。
    • \n
    \n
  4. \n
  5. 回到 Resend 点 Verify,状态变绿 ✅ 即生效(实测 30s-3min,并不会像官方说的有可能要24小时)。

    \n
  6. \n
\n
\n

4. 无限别名 + 转发(立刻能用)

Resend 对「 catch-all 」免费!
意思是你 不用提前新建账号,任何 @your.com 的信都会飞进你设定的地址,只需要在 Resend 官网查收即可。

\n
\n

5. 终端发邮件(可选,8 min 部署)

网页收发邮件显然太麻烦,我用rust写了个可爱的 CLI 客户端 rusend,基于 Resend 官方 API,支持发送与查收邮件非常方便。(好吧其实是Gemini小姐帮忙写的@@)

\n

①-1 下载预构建可执行文件

Github Releases里下载对应系统的预编译包,解压放到 $PATH 目录下即可。

\n

①-2 源码构建

下载并编译rusend,准备好rust工具链,具体编译命令如下:

\n
1
2
3
git clone https://github.com/CGH0S7/rusend.git
cd rusend
cargo build --release
\n\n

rusend二进制文件移动到系统的$PATH目录下,例如/usr/local/bin

\n

② 补全 & API Key配置

使用下面的命令进行命令行补全配置:

\n
1
2
echo "source <(rusend completions bash)" >> ~/.bashrc
source ~/.bashrc
\n\n
1
2
echo "source <(rusend completions zsh)" >> ~/.zshrc
source ~/.zshrc
\n\n
1
2
rusend completions fish > ~/.config/fish/completions/rusend.fish
source ~/.config/fish/config.fish
\n\n

在Resend控制面板中,找到API Keys选项,为你配置的域名生成一个新的API Key。然后在终端中运行以下命令进行配置:

\n
1
rusend config --key re_xxxxxxxxx
\n\n

③ 使用 rusend 收发邮件

详细功能请查看Readme文档:

\n

\"rusend文档\"
\"rusend文档\"
\"rusend软件帮助\"

\n
\n

6. 成本 & 限额总结

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
项目免费额度
Resend100 封 / 天
域名约 ¥30+ / 年
rusend开源
\n

非主力邮箱场景下完全够用,不建议用于接收各种广告或更新推送。

\n

若想要「匿名转发」隐藏真实地址,可以再套一层 AnonAddy 即可,本文不展开。

\n
\n

7. 结语

以上就是「低成本快速拥有个人专属域名邮箱」的全部流程。

\n

零服务器、零运维、全平台通用,甚至能在手机 Termux 里发邮。

\n

如果能帮到你,去 rusend 点个 ⭐ 当稿费吧~😉

\n"},{"title":"Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北","date":"2024-11-06T02:02:04.000Z","_content":"本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。\n\n![Nvidia设置示意图](/images/5364bba6d035326e82c53504dd53e7c2454454985.png)\n\n### 适用系统\n\n对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:\n\n- Nvidia 驱动已安装,`nvidia-smi` 输出正常\n- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显\n- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象\n\n这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。\n\n---\n\n## 配置 X11 下的 Nvidia 显卡优先\n\n可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:\n\n```bash\nsudo nvidia-xconfig --prime\n```\n\n该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。\n\n![X11 Nvidia配置](/images/1613f5602b203b38230f19699deb0219454454985.png)\n\n---\n\n## 配置 Wayland 下的 Nvidia 显卡优先\n\n在 Wayland 下优先启用 Nvidia 显卡的步骤如下:\n\n1. 编辑 **GRUB 配置**文件:\n\n 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=\"\"` 中添加 `nvidia_drm.modeset=1`:\n\n ```bash\n GRUB_CMDLINE_LINUX_DEFAULT=\"nvidia_drm.modeset=1\"\n ```\n\n2. 重新生成 grub 配置:\n\n ```bash\n sudo grub-mkconfig -o /boot/grub/grub.cfg\n ```\n\n3. 配置 **Plasma 环境**文件:\n\n 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容:\n\n ```bash\n #!/bin/bash \n export __NV_PRIME_RENDER_OFFLOAD=1 \n export __GLX_VENDOR_LIBRARY_NAME=nvidia\n ```\n\n4. 保存并重启电脑,即可生效。\n\n![Wayland Nvidia配置](/images/b2054bbaf6197624d38cc2007d885fd1454454985.png)\n\n---\n\n## I+N 混合显卡方案\n\n如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。\n\n### 配置步骤\n\n1. 打开程序的 `.desktop` 启动文件:\n\n 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。\n\n2. 在 `Exec=` 后添加 `prime-run` 参数。例如:\n\n ```text\n Exec=prime-run <程序启动命令>\n ```\n\n ![混合显卡配置示意图](/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png)\n\n### Vim 快捷配置\n\n如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`:\n\n```vim\nv -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter\n```\n\n---\n\n## 让 Plasma 桌面也使用独显\n\n如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:\n\n```bash\n#!/bin/bash \nexport __GLX_VENDOR_LIBRARY_NAME=nvidia\n```\n\n这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。\n\n---\n\n希望以上经验能为有此需求的用户提供参考帮助。\n","source":"_posts/arch-nvidia.md","raw":"---\ntitle: Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北\ndate: 2024-11-06 10:02:04\ntags: 技术\ncategories: [技术分享]\n---\n本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。\n\n![Nvidia设置示意图](/images/5364bba6d035326e82c53504dd53e7c2454454985.png)\n\n### 适用系统\n\n对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:\n\n- Nvidia 驱动已安装,`nvidia-smi` 输出正常\n- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显\n- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象\n\n这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。\n\n---\n\n## 配置 X11 下的 Nvidia 显卡优先\n\n可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:\n\n```bash\nsudo nvidia-xconfig --prime\n```\n\n该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。\n\n![X11 Nvidia配置](/images/1613f5602b203b38230f19699deb0219454454985.png)\n\n---\n\n## 配置 Wayland 下的 Nvidia 显卡优先\n\n在 Wayland 下优先启用 Nvidia 显卡的步骤如下:\n\n1. 编辑 **GRUB 配置**文件:\n\n 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=\"\"` 中添加 `nvidia_drm.modeset=1`:\n\n ```bash\n GRUB_CMDLINE_LINUX_DEFAULT=\"nvidia_drm.modeset=1\"\n ```\n\n2. 重新生成 grub 配置:\n\n ```bash\n sudo grub-mkconfig -o /boot/grub/grub.cfg\n ```\n\n3. 配置 **Plasma 环境**文件:\n\n 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容:\n\n ```bash\n #!/bin/bash \n export __NV_PRIME_RENDER_OFFLOAD=1 \n export __GLX_VENDOR_LIBRARY_NAME=nvidia\n ```\n\n4. 保存并重启电脑,即可生效。\n\n![Wayland Nvidia配置](/images/b2054bbaf6197624d38cc2007d885fd1454454985.png)\n\n---\n\n## I+N 混合显卡方案\n\n如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。\n\n### 配置步骤\n\n1. 打开程序的 `.desktop` 启动文件:\n\n 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。\n\n2. 在 `Exec=` 后添加 `prime-run` 参数。例如:\n\n ```text\n Exec=prime-run <程序启动命令>\n ```\n\n ![混合显卡配置示意图](/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png)\n\n### Vim 快捷配置\n\n如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`:\n\n```vim\nv -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter\n```\n\n---\n\n## 让 Plasma 桌面也使用独显\n\n如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:\n\n```bash\n#!/bin/bash \nexport __GLX_VENDOR_LIBRARY_NAME=nvidia\n```\n\n这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。\n\n---\n\n希望以上经验能为有此需求的用户提供参考帮助。\n","slug":"arch-nvidia","published":1,"updated":"2025-02-02T11:21:35.673Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescu000rog2b1eiye9jq","content":"

本文将介绍在 X11Wayland 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。首先,请确保您已经正确安装了 Nvidia 驱动(如果非 Mainline 内核,请使用 nvidia-dkmsnvidia-open-dkms 版本)。

\n

\"Nvidia设置示意图\"

\n

适用系统

对于 CachyOSEndeavourOS 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:

\n
    \n
  • Nvidia 驱动已安装,nvidia-smi 输出正常
  • \n
  • KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显
  • \n
  • 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象
  • \n
\n

这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。

\n
\n

配置 X11 下的 Nvidia 显卡优先

可以通过配置 /etc/X11/xorg.conf 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:

\n
1
sudo nvidia-xconfig --prime
\n\n

该命令会根据硬件情况自动生成配置文件。执行后 重新登录会话 即可生效(即使是 Wayland 用户也可以执行一次此命令)。

\n

\"X11

\n
\n

配置 Wayland 下的 Nvidia 显卡优先

在 Wayland 下优先启用 Nvidia 显卡的步骤如下:

\n
    \n
  1. 编辑 GRUB 配置文件:

    \n

    打开 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT="" 中添加 nvidia_drm.modeset=1

    \n
    1
    GRUB_CMDLINE_LINUX_DEFAULT="nvidia_drm.modeset=1"
    \n
  2. \n
  3. 重新生成 grub 配置:

    \n
    1
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    \n
  4. \n
  5. 配置 Plasma 环境文件:

    \n

    ~/.config/plasma-workspace/env/nvidia.sh 中写入以下内容:

    \n
    1
    2
    3
    #!/bin/bash 
    export __NV_PRIME_RENDER_OFFLOAD=1
    export __GLX_VENDOR_LIBRARY_NAME=nvidia
    \n
  6. \n
  7. 保存并重启电脑,即可生效。

    \n
  8. \n
\n

\"Wayland

\n
\n

I+N 混合显卡方案

如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。

\n

配置步骤

    \n
  1. 打开程序的 .desktop 启动文件:

    \n

    位置可能在 /usr/share/applications~/.local/share/applications 中。

    \n
  2. \n
  3. Exec= 后添加 prime-run 参数。例如:

    \n
    1
    Exec=prime-run <程序启动命令>
    \n\n

    \"混合显卡配置示意图\"

    \n
  4. \n
\n

Vim 快捷配置

如果使用 Vim,可以使用以下快捷键快速批量替换 Exec=Exec=prime-run

\n
1
v -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter
\n\n
\n

让 Plasma 桌面也使用独显

如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:

\n
1
2
#!/bin/bash 
export __GLX_VENDOR_LIBRARY_NAME=nvidia
\n\n

这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。

\n
\n

希望以上经验能为有此需求的用户提供参考帮助。

\n","excerpt":"","more":"

本文将介绍在 X11Wayland 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。首先,请确保您已经正确安装了 Nvidia 驱动(如果非 Mainline 内核,请使用 nvidia-dkmsnvidia-open-dkms 版本)。

\n

\"Nvidia设置示意图\"

\n

适用系统

对于 CachyOSEndeavourOS 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:

\n
    \n
  • Nvidia 驱动已安装,nvidia-smi 输出正常
  • \n
  • KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显
  • \n
  • 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象
  • \n
\n

这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。

\n
\n

配置 X11 下的 Nvidia 显卡优先

可以通过配置 /etc/X11/xorg.conf 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:

\n
1
sudo nvidia-xconfig --prime
\n\n

该命令会根据硬件情况自动生成配置文件。执行后 重新登录会话 即可生效(即使是 Wayland 用户也可以执行一次此命令)。

\n

\"X11

\n
\n

配置 Wayland 下的 Nvidia 显卡优先

在 Wayland 下优先启用 Nvidia 显卡的步骤如下:

\n
    \n
  1. 编辑 GRUB 配置文件:

    \n

    打开 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT="" 中添加 nvidia_drm.modeset=1

    \n
    1
    GRUB_CMDLINE_LINUX_DEFAULT="nvidia_drm.modeset=1"
    \n
  2. \n
  3. 重新生成 grub 配置:

    \n
    1
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    \n
  4. \n
  5. 配置 Plasma 环境文件:

    \n

    ~/.config/plasma-workspace/env/nvidia.sh 中写入以下内容:

    \n
    1
    2
    3
    #!/bin/bash 
    export __NV_PRIME_RENDER_OFFLOAD=1
    export __GLX_VENDOR_LIBRARY_NAME=nvidia
    \n
  6. \n
  7. 保存并重启电脑,即可生效。

    \n
  8. \n
\n

\"Wayland

\n
\n

I+N 混合显卡方案

如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。

\n

配置步骤

    \n
  1. 打开程序的 .desktop 启动文件:

    \n

    位置可能在 /usr/share/applications~/.local/share/applications 中。

    \n
  2. \n
  3. Exec= 后添加 prime-run 参数。例如:

    \n
    1
    Exec=prime-run <程序启动命令>
    \n\n

    \"混合显卡配置示意图\"

    \n
  4. \n
\n

Vim 快捷配置

如果使用 Vim,可以使用以下快捷键快速批量替换 Exec=Exec=prime-run

\n
1
v -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter
\n\n
\n

让 Plasma 桌面也使用独显

如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:

\n
1
2
#!/bin/bash 
export __GLX_VENDOR_LIBRARY_NAME=nvidia
\n\n

这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。

\n
\n

希望以上经验能为有此需求的用户提供参考帮助。

\n"},{"title":"Archlinux问题记录","date":"2025-03-10T14:47:08.000Z","_content":"\n前几周在使用 Arch Linux 时遇到了两个有趣的问题,顺手记录在此,或许能帮到有类似困扰的朋友~\n\n---\n\n### 1. 显卡功耗上限解锁\n**问题现象** \n使用 `nvidia-smi` 查看显卡功耗时,发现最大功耗被限制在 55W,性能无法完全释放:\n\n```bash\nnvidia-smi # 输出显示 Power Limit: 55.00 W\n```\n\n**解决方案** \n启用 NVIDIA 动态功耗管理服务即可:\n```bash\nsudo systemctl enable --now nvidia-powerd\n```\n\n---\n\n### 2. Steam Proton 输入失效\n**问题描述** \n使用 proton-cachyos 和 proton-ge-custom 版本时,Steam 游戏无法接收任何输入(键盘/手柄)。 \n⚠️ 经排查发现是 Wayland 协议兼容性问题导致。\n\n**解决方案** \n在 Steam 游戏启动选项中加入环境变量禁用 Wayland:\n```bash\nPROTON_ENABLE_WAYLAND=0 %command%\n```\n\n---\n\n","source":"_posts/archlinux-game-fix.md","raw":"---\ntitle: Archlinux问题记录\ndate: 2025-03-10 22:47:08\ntags: [生活, Archlinux]\n---\n\n前几周在使用 Arch Linux 时遇到了两个有趣的问题,顺手记录在此,或许能帮到有类似困扰的朋友~\n\n---\n\n### 1. 显卡功耗上限解锁\n**问题现象** \n使用 `nvidia-smi` 查看显卡功耗时,发现最大功耗被限制在 55W,性能无法完全释放:\n\n```bash\nnvidia-smi # 输出显示 Power Limit: 55.00 W\n```\n\n**解决方案** \n启用 NVIDIA 动态功耗管理服务即可:\n```bash\nsudo systemctl enable --now nvidia-powerd\n```\n\n---\n\n### 2. Steam Proton 输入失效\n**问题描述** \n使用 proton-cachyos 和 proton-ge-custom 版本时,Steam 游戏无法接收任何输入(键盘/手柄)。 \n⚠️ 经排查发现是 Wayland 协议兼容性问题导致。\n\n**解决方案** \n在 Steam 游戏启动选项中加入环境变量禁用 Wayland:\n```bash\nPROTON_ENABLE_WAYLAND=0 %command%\n```\n\n---\n\n","slug":"archlinux-game-fix","published":1,"updated":"2025-03-10T14:54:16.788Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescu000uog2b4t49836d","content":"

前几周在使用 Arch Linux 时遇到了两个有趣的问题,顺手记录在此,或许能帮到有类似困扰的朋友~

\n
\n

1. 显卡功耗上限解锁

问题现象
使用 nvidia-smi 查看显卡功耗时,发现最大功耗被限制在 55W,性能无法完全释放:

\n
1
nvidia-smi  # 输出显示 Power Limit: 55.00 W
\n\n

解决方案
启用 NVIDIA 动态功耗管理服务即可:

\n
1
sudo systemctl enable --now nvidia-powerd
\n\n
\n

2. Steam Proton 输入失效

问题描述
使用 proton-cachyos 和 proton-ge-custom 版本时,Steam 游戏无法接收任何输入(键盘/手柄)。
⚠️ 经排查发现是 Wayland 协议兼容性问题导致。

\n

解决方案
在 Steam 游戏启动选项中加入环境变量禁用 Wayland:

\n
1
PROTON_ENABLE_WAYLAND=0 %command%
\n\n
\n","excerpt":"","more":"

前几周在使用 Arch Linux 时遇到了两个有趣的问题,顺手记录在此,或许能帮到有类似困扰的朋友~

\n
\n

1. 显卡功耗上限解锁

问题现象
使用 nvidia-smi 查看显卡功耗时,发现最大功耗被限制在 55W,性能无法完全释放:

\n
1
nvidia-smi  # 输出显示 Power Limit: 55.00 W
\n\n

解决方案
启用 NVIDIA 动态功耗管理服务即可:

\n
1
sudo systemctl enable --now nvidia-powerd
\n\n
\n

2. Steam Proton 输入失效

问题描述
使用 proton-cachyos 和 proton-ge-custom 版本时,Steam 游戏无法接收任何输入(键盘/手柄)。
⚠️ 经排查发现是 Wayland 协议兼容性问题导致。

\n

解决方案
在 Steam 游戏启动选项中加入环境变量禁用 Wayland:

\n
1
PROTON_ENABLE_WAYLAND=0 %command%
\n\n
\n"},{"title":"Archlinux KDE体验优化总结","date":"2025-02-02T10:43:26.000Z","_content":"\n打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验\n\n本文章长期更新\n\n------\n\n## 更换CachyOS优化仓库\n\n![CachyOS Logo](https://wiki.cachyos.org/_astro/logo.DVTdAJi6.svg) \n通过 CachyOS 优化仓库获取 CPU 指令集级优化(x86-64-v3/v4/zen4)的软件包,提升 Arch Linux 系统性能。该仓库提供 PGO/LTO/BOLT 编译优化及持续维护的定制软件包。\n\n---\n\n### ▎前置准备\n**⚠️ 兼容性警告** \n1. 可以先通过命令`/usr/lib64/ld-linux-x86-64.so.2 --help | grep -i x86-64-`来查看你的处理器支持等级。\n2. 注意添加 `cachyos` 主仓库会替换官方 pacman 仓库(含 INSTALLED_FROM 等特性) \n ```bash\n cachyos-v3 # AVX2 优化\n cachyos-v4 # AVX512 优化\n cachyos-extra # 扩展软件包\n ```\n3. CachyOS官方在前段时间专门推出了针对 AMD 的Zen4和Zen5架构优化仓库,如有需要可以[点击这里](https://discuss.cachyos.org/t/zen-4-5-optimized-repository-testing/713/7)查看如何部署。\n\n---\n\n### ▎仓库配置流程\n#### ▶ 自动配置脚本\n```bash\n# 下载配置工具\ncurl -LO https://mirror.cachyos.org/cachyos-repo.tar.xz\ntar xvf cachyos-repo.tar.xz && cd cachyos-repo\n\n# 执行自动配置(自动检测 CPU 指令集)\nsudo ./cachyos-repo.sh\n```\n📌 脚本特性: \n- 自动备份 `/etc/pacman.conf` \n- 智能匹配最优指令集版本 (v3/v4) \n- 支持 x86_64 和 aarch64 架构 \n\n#### ▶ 手动配置方式\n1. 编辑 pacman.conf\n```ini\n# 在 /etc/pacman.conf 末尾添加(示例为 AVX2 优化)\n[cachyos-v3]\nSigLevel = Optional TrustAll\nInclude = /etc/pacman.d/cachyos-v3\n```\n\n2. ✅同步仓库数据库\n```bash\nsudo pacman -Syu\n```\n\n---\n\n### ▎仓库卸载方法\n#### ▶ 自动卸载\n```bash\ncd cachyos-repo\nsudo ./cachyos-repo.sh --remove\n```\n\n#### ▶ 手动卸载\n1. 删除 pacman.conf 中的 cachyos 仓库段\n2. 移除配置文件\n```bash\nsudo rm -rf /etc/pacman.d/cachyos*\n```\n---\n\n## 内核更换\n\n## KDE 配置\n\n\n\n","source":"_posts/archlinux-optimization.md","raw":"---\ntitle: Archlinux KDE体验优化总结\ndate: 2025-02-02 18:43:26\ntags: [Archlinux, 系统优化, 技术分享]\n---\n\n打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验\n\n本文章长期更新\n\n------\n\n## 更换CachyOS优化仓库\n\n![CachyOS Logo](https://wiki.cachyos.org/_astro/logo.DVTdAJi6.svg) \n通过 CachyOS 优化仓库获取 CPU 指令集级优化(x86-64-v3/v4/zen4)的软件包,提升 Arch Linux 系统性能。该仓库提供 PGO/LTO/BOLT 编译优化及持续维护的定制软件包。\n\n---\n\n### ▎前置准备\n**⚠️ 兼容性警告** \n1. 可以先通过命令`/usr/lib64/ld-linux-x86-64.so.2 --help | grep -i x86-64-`来查看你的处理器支持等级。\n2. 注意添加 `cachyos` 主仓库会替换官方 pacman 仓库(含 INSTALLED_FROM 等特性) \n ```bash\n cachyos-v3 # AVX2 优化\n cachyos-v4 # AVX512 优化\n cachyos-extra # 扩展软件包\n ```\n3. CachyOS官方在前段时间专门推出了针对 AMD 的Zen4和Zen5架构优化仓库,如有需要可以[点击这里](https://discuss.cachyos.org/t/zen-4-5-optimized-repository-testing/713/7)查看如何部署。\n\n---\n\n### ▎仓库配置流程\n#### ▶ 自动配置脚本\n```bash\n# 下载配置工具\ncurl -LO https://mirror.cachyos.org/cachyos-repo.tar.xz\ntar xvf cachyos-repo.tar.xz && cd cachyos-repo\n\n# 执行自动配置(自动检测 CPU 指令集)\nsudo ./cachyos-repo.sh\n```\n📌 脚本特性: \n- 自动备份 `/etc/pacman.conf` \n- 智能匹配最优指令集版本 (v3/v4) \n- 支持 x86_64 和 aarch64 架构 \n\n#### ▶ 手动配置方式\n1. 编辑 pacman.conf\n```ini\n# 在 /etc/pacman.conf 末尾添加(示例为 AVX2 优化)\n[cachyos-v3]\nSigLevel = Optional TrustAll\nInclude = /etc/pacman.d/cachyos-v3\n```\n\n2. ✅同步仓库数据库\n```bash\nsudo pacman -Syu\n```\n\n---\n\n### ▎仓库卸载方法\n#### ▶ 自动卸载\n```bash\ncd cachyos-repo\nsudo ./cachyos-repo.sh --remove\n```\n\n#### ▶ 手动卸载\n1. 删除 pacman.conf 中的 cachyos 仓库段\n2. 移除配置文件\n```bash\nsudo rm -rf /etc/pacman.d/cachyos*\n```\n---\n\n## 内核更换\n\n## KDE 配置\n\n\n\n","slug":"archlinux-optimization","published":1,"updated":"2025-03-10T15:07:26.618Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescu000xog2b6y6h50af","content":"

打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验

\n

本文章长期更新

\n
\n

更换CachyOS优化仓库

\"CachyOS
通过 CachyOS 优化仓库获取 CPU 指令集级优化(x86-64-v3/v4/zen4)的软件包,提升 Arch Linux 系统性能。该仓库提供 PGO/LTO/BOLT 编译优化及持续维护的定制软件包。

\n
\n

▎前置准备

⚠️ 兼容性警告

\n
    \n
  1. 可以先通过命令/usr/lib64/ld-linux-x86-64.so.2 --help | grep -i x86-64-来查看你的处理器支持等级。
  2. \n
  3. 注意添加 cachyos 主仓库会替换官方 pacman 仓库(含 INSTALLED_FROM 等特性)
    1
    2
    3
    cachyos-v3    # AVX2 优化
    cachyos-v4 # AVX512 优化
    cachyos-extra # 扩展软件包
  4. \n
  5. CachyOS官方在前段时间专门推出了针对 AMD 的Zen4和Zen5架构优化仓库,如有需要可以点击这里查看如何部署。
  6. \n
\n
\n

▎仓库配置流程

▶ 自动配置脚本

1
2
3
4
5
6
# 下载配置工具
curl -LO https://mirror.cachyos.org/cachyos-repo.tar.xz
tar xvf cachyos-repo.tar.xz && cd cachyos-repo

# 执行自动配置(自动检测 CPU 指令集)
sudo ./cachyos-repo.sh
\n

📌 脚本特性:

\n
    \n
  • 自动备份 /etc/pacman.conf
  • \n
  • 智能匹配最优指令集版本 (v3/v4)
  • \n
  • 支持 x86_64 和 aarch64 架构
  • \n
\n

▶ 手动配置方式

    \n
  1. 编辑 pacman.conf

    \n
    1
    2
    3
    4
    # 在 /etc/pacman.conf 末尾添加(示例为 AVX2 优化)
    [cachyos-v3]
    SigLevel = Optional TrustAll
    Include = /etc/pacman.d/cachyos-v3
    \n
  2. \n
  3. ✅同步仓库数据库

    \n
    1
    sudo pacman -Syu
  4. \n
\n
\n

▎仓库卸载方法

▶ 自动卸载

1
2
cd cachyos-repo
sudo ./cachyos-repo.sh --remove
\n\n

▶ 手动卸载

    \n
  1. 删除 pacman.conf 中的 cachyos 仓库段
  2. \n
  3. 移除配置文件
    1
    sudo rm -rf /etc/pacman.d/cachyos*
  4. \n
\n
\n

内核更换

KDE 配置

","excerpt":"","more":"

打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验

\n

本文章长期更新

\n
\n

更换CachyOS优化仓库

\"CachyOS
通过 CachyOS 优化仓库获取 CPU 指令集级优化(x86-64-v3/v4/zen4)的软件包,提升 Arch Linux 系统性能。该仓库提供 PGO/LTO/BOLT 编译优化及持续维护的定制软件包。

\n
\n

▎前置准备

⚠️ 兼容性警告

\n
    \n
  1. 可以先通过命令/usr/lib64/ld-linux-x86-64.so.2 --help | grep -i x86-64-来查看你的处理器支持等级。
  2. \n
  3. 注意添加 cachyos 主仓库会替换官方 pacman 仓库(含 INSTALLED_FROM 等特性)
    1
    2
    3
    cachyos-v3    # AVX2 优化
    cachyos-v4 # AVX512 优化
    cachyos-extra # 扩展软件包
  4. \n
  5. CachyOS官方在前段时间专门推出了针对 AMD 的Zen4和Zen5架构优化仓库,如有需要可以点击这里查看如何部署。
  6. \n
\n
\n

▎仓库配置流程

▶ 自动配置脚本

1
2
3
4
5
6
# 下载配置工具
curl -LO https://mirror.cachyos.org/cachyos-repo.tar.xz
tar xvf cachyos-repo.tar.xz && cd cachyos-repo

# 执行自动配置(自动检测 CPU 指令集)
sudo ./cachyos-repo.sh
\n

📌 脚本特性:

\n
    \n
  • 自动备份 /etc/pacman.conf
  • \n
  • 智能匹配最优指令集版本 (v3/v4)
  • \n
  • 支持 x86_64 和 aarch64 架构
  • \n
\n

▶ 手动配置方式

    \n
  1. 编辑 pacman.conf

    \n
    1
    2
    3
    4
    # 在 /etc/pacman.conf 末尾添加(示例为 AVX2 优化)
    [cachyos-v3]
    SigLevel = Optional TrustAll
    Include = /etc/pacman.d/cachyos-v3
    \n
  2. \n
  3. ✅同步仓库数据库

    \n
    1
    sudo pacman -Syu
  4. \n
\n
\n

▎仓库卸载方法

▶ 自动卸载

1
2
cd cachyos-repo
sudo ./cachyos-repo.sh --remove
\n\n

▶ 手动卸载

    \n
  1. 删除 pacman.conf 中的 cachyos 仓库段
  2. \n
  3. 移除配置文件
    1
    sudo rm -rf /etc/pacman.d/cachyos*
  4. \n
\n
\n

内核更换

KDE 配置

"},{"title":"使用Clonezilla备份和克隆系统","date":"2025-02-23T13:40:03.000Z","_content":"![Clonezilla官网](/images/clonezilla.png)\n[Clonezilla](https://clonezilla.org/)是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。\n\n---\n### **零.事前准备**:\n - 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。\n - 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。\n\n\n### **一.备份镜像到硬盘(Device-to-Image)**\n这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。\n\n#### **步骤说明**:\n2. **启动Clonezilla**:\n - 插入U盘,重启电脑并从U盘启动。\n - 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。\n\n3. **选择备份模式**:\n ```plaintext\n Choose mode: 选择 \"device-image\"(设备到镜像)\n Mount storage media: 选择 \"local_dev\"(本地存储设备)\n ```\n - 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 `/dev/sdb1`)。\n\n4. **配置备份参数**:\n - **源硬盘**:选择需要备份的硬盘(如 `/dev/sda`)。\n - **镜像存储路径**:指定目标位置(如外置硬盘的挂载目录)。\n - **镜像名称**:自定义名称(如 `2025-img-rockylinux-2-21`)。\n - **压缩选项**:默认即可,支持并行压缩加速。\n - **镜像分割**:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。\n\n5. **确认操作**:\n - 检查提示信息,输入 `y` 开始备份。\n - 完成后关机或重启。\n\n6. **镜像还原**:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。\n---\n\n### **二、直接克隆硬盘(Device-to-Device)**\n将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。\n\n#### **步骤说明**:\n1. **准备工作**:\n - 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)\n - **警告**:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!\n\n2. **启动Clonezilla**:\n - 同上,从U盘启动进入Clonezilla界面。\n\n3. **选择克隆模式**:\n ```plaintext\n Choose mode: 选择 \"device-device\"(设备到设备)\n ```\n\n4. **选择硬盘**:\n - **母碟硬盘**:选择原始硬盘(如 `/dev/sda`)。\n - **目标硬盘**:选择新硬盘(如 `/dev/sdb`)。\n\n5. **克隆选项**:\n 需要进入专家模式才能看到,一般直接新手模式默认即可。\n\n6. **执行克隆**:\n - 确认提示信息后输入 `y`,等待完成。\n - 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。\n\n---\n### **两种模式对比**:\n| **模式** | 特点 | \n|----------------|---------------------------|\n| 备份镜像 | 方便多机部署也可以用于留档|\n| 直接克隆 | 换硬盘快速迁移无需恢复过程|\n---\n\n### **Btrfs务必注意**:\n对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行`sudo btrfs balance start --full-balance /`来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。\n\n","source":"_posts/clonezilla.md","raw":"---\ntitle: 使用Clonezilla备份和克隆系统\ndate: 2025-02-23 21:40:03\ntags: 技术分享\n---\n![Clonezilla官网](/images/clonezilla.png)\n[Clonezilla](https://clonezilla.org/)是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。\n\n---\n### **零.事前准备**:\n - 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。\n - 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。\n\n\n### **一.备份镜像到硬盘(Device-to-Image)**\n这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。\n\n#### **步骤说明**:\n2. **启动Clonezilla**:\n - 插入U盘,重启电脑并从U盘启动。\n - 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。\n\n3. **选择备份模式**:\n ```plaintext\n Choose mode: 选择 \"device-image\"(设备到镜像)\n Mount storage media: 选择 \"local_dev\"(本地存储设备)\n ```\n - 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 `/dev/sdb1`)。\n\n4. **配置备份参数**:\n - **源硬盘**:选择需要备份的硬盘(如 `/dev/sda`)。\n - **镜像存储路径**:指定目标位置(如外置硬盘的挂载目录)。\n - **镜像名称**:自定义名称(如 `2025-img-rockylinux-2-21`)。\n - **压缩选项**:默认即可,支持并行压缩加速。\n - **镜像分割**:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。\n\n5. **确认操作**:\n - 检查提示信息,输入 `y` 开始备份。\n - 完成后关机或重启。\n\n6. **镜像还原**:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。\n---\n\n### **二、直接克隆硬盘(Device-to-Device)**\n将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。\n\n#### **步骤说明**:\n1. **准备工作**:\n - 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)\n - **警告**:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!\n\n2. **启动Clonezilla**:\n - 同上,从U盘启动进入Clonezilla界面。\n\n3. **选择克隆模式**:\n ```plaintext\n Choose mode: 选择 \"device-device\"(设备到设备)\n ```\n\n4. **选择硬盘**:\n - **母碟硬盘**:选择原始硬盘(如 `/dev/sda`)。\n - **目标硬盘**:选择新硬盘(如 `/dev/sdb`)。\n\n5. **克隆选项**:\n 需要进入专家模式才能看到,一般直接新手模式默认即可。\n\n6. **执行克隆**:\n - 确认提示信息后输入 `y`,等待完成。\n - 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。\n\n---\n### **两种模式对比**:\n| **模式** | 特点 | \n|----------------|---------------------------|\n| 备份镜像 | 方便多机部署也可以用于留档|\n| 直接克隆 | 换硬盘快速迁移无需恢复过程|\n---\n\n### **Btrfs务必注意**:\n对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行`sudo btrfs balance start --full-balance /`来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。\n\n","slug":"clonezilla","published":1,"updated":"2025-02-23T14:12:10.654Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescv000zog2bhb322isp","content":"

\"Clonezilla官网\"
Clonezilla是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。

\n
\n

零.事前准备

    \n
  • 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。
  • \n
  • 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。
  • \n
\n

一.备份镜像到硬盘(Device-to-Image)

这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。

\n

步骤说明

    \n
  1. 启动Clonezilla

    \n
      \n
    • 插入U盘,重启电脑并从U盘启动。
    • \n
    • 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。
    • \n
    \n
  2. \n
  3. 选择备份模式

    \n
    1
    2
    Choose mode:         选择 "device-image"(设备到镜像)
    Mount storage media: 选择 "local_dev"(本地存储设备)
    \n
      \n
    • 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 /dev/sdb1)。
    • \n
    \n
  4. \n
  5. 配置备份参数

    \n
      \n
    • 源硬盘:选择需要备份的硬盘(如 /dev/sda)。
    • \n
    • 镜像存储路径:指定目标位置(如外置硬盘的挂载目录)。
    • \n
    • 镜像名称:自定义名称(如 2025-img-rockylinux-2-21)。
    • \n
    • 压缩选项:默认即可,支持并行压缩加速。
    • \n
    • 镜像分割:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。
    • \n
    \n
  6. \n
  7. 确认操作

    \n
      \n
    • 检查提示信息,输入 y 开始备份。
    • \n
    • 完成后关机或重启。
    • \n
    \n
  8. \n
  9. 镜像还原:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。

    \n
  10. \n
\n
\n

二、直接克隆硬盘(Device-to-Device)

将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。

\n

步骤说明

    \n
  1. 准备工作

    \n
      \n
    • 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)
    • \n
    • 警告:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!
    • \n
    \n
  2. \n
  3. 启动Clonezilla

    \n
      \n
    • 同上,从U盘启动进入Clonezilla界面。
    • \n
    \n
  4. \n
  5. 选择克隆模式

    \n
    1
    Choose mode:         选择 "device-device"(设备到设备)
    \n
  6. \n
  7. 选择硬盘

    \n
      \n
    • 母碟硬盘:选择原始硬盘(如 /dev/sda)。
    • \n
    • 目标硬盘:选择新硬盘(如 /dev/sdb)。
    • \n
    \n
  8. \n
  9. 克隆选项
    需要进入专家模式才能看到,一般直接新手模式默认即可。

    \n
  10. \n
  11. 执行克隆

    \n
      \n
    • 确认提示信息后输入 y,等待完成。
    • \n
    • 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。
    • \n
    \n
  12. \n
\n
\n

两种模式对比

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
模式特点
备份镜像方便多机部署也可以用于留档
直接克隆换硬盘快速迁移无需恢复过程
\n
\n

Btrfs务必注意

对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行sudo btrfs balance start --full-balance /来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。

\n","excerpt":"","more":"

\"Clonezilla官网\"
Clonezilla是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。

\n
\n

零.事前准备

    \n
  • 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。
  • \n
  • 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。
  • \n
\n

一.备份镜像到硬盘(Device-to-Image)

这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。

\n

步骤说明

    \n
  1. 启动Clonezilla

    \n
      \n
    • 插入U盘,重启电脑并从U盘启动。
    • \n
    • 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。
    • \n
    \n
  2. \n
  3. 选择备份模式

    \n
    1
    2
    Choose mode:         选择 "device-image"(设备到镜像)
    Mount storage media: 选择 "local_dev"(本地存储设备)
    \n
      \n
    • 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 /dev/sdb1)。
    • \n
    \n
  4. \n
  5. 配置备份参数

    \n
      \n
    • 源硬盘:选择需要备份的硬盘(如 /dev/sda)。
    • \n
    • 镜像存储路径:指定目标位置(如外置硬盘的挂载目录)。
    • \n
    • 镜像名称:自定义名称(如 2025-img-rockylinux-2-21)。
    • \n
    • 压缩选项:默认即可,支持并行压缩加速。
    • \n
    • 镜像分割:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。
    • \n
    \n
  6. \n
  7. 确认操作

    \n
      \n
    • 检查提示信息,输入 y 开始备份。
    • \n
    • 完成后关机或重启。
    • \n
    \n
  8. \n
  9. 镜像还原:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。

    \n
  10. \n
\n
\n

二、直接克隆硬盘(Device-to-Device)

将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。

\n

步骤说明

    \n
  1. 准备工作

    \n
      \n
    • 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)
    • \n
    • 警告:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!
    • \n
    \n
  2. \n
  3. 启动Clonezilla

    \n
      \n
    • 同上,从U盘启动进入Clonezilla界面。
    • \n
    \n
  4. \n
  5. 选择克隆模式

    \n
    1
    Choose mode:         选择 "device-device"(设备到设备)
    \n
  6. \n
  7. 选择硬盘

    \n
      \n
    • 母碟硬盘:选择原始硬盘(如 /dev/sda)。
    • \n
    • 目标硬盘:选择新硬盘(如 /dev/sdb)。
    • \n
    \n
  8. \n
  9. 克隆选项
    需要进入专家模式才能看到,一般直接新手模式默认即可。

    \n
  10. \n
  11. 执行克隆

    \n
      \n
    • 确认提示信息后输入 y,等待完成。
    • \n
    • 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。
    • \n
    \n
  12. \n
\n
\n

两种模式对比

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
模式特点
备份镜像方便多机部署也可以用于留档
直接克隆换硬盘快速迁移无需恢复过程
\n
\n

Btrfs务必注意

对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行sudo btrfs balance start --full-balance /来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。

\n"},{"title":"Random Fortune","date":"2025-05-22T07:29:07.000Z","_content":"\nKeep peace of mind with fortune...\n\n❯ fortune\n\nThe nice thing about standards is that there are so many of them to choose\nfrom.\n -- Andrew S. Tanenbaum\n\n❯ fortune\n\n看蓬门秋草,年年破巷,疏窗细雨,夜夜孤灯。\n -- 郑板桥《沁园春·恨》\n\n❯ fortune\n\nAn alcoholic is someone you don't like who drinks as much as you do.\n -- Dylan Thomas\n\n❯ fortune\n\nIf you put tomfoolery into a computer, nothing comes out but tomfoolery.\nBut this tomfoolery, having passed through a very expensive machine,\nis somehow ennobled and no-one dare criticise it.\n -- Pierre Gallois\n\n❯ fortune\n\n秋色渐将晚,霜信报黄花。\n -- 叶梦得《水调歌头·秋色渐将晚》\n\n❯ fortune\n\n水精帘里颇黎枕,暖香惹梦鸳鸯锦。江上柳如烟,雁飞残月天。\n藕丝秋色浅,人胜参差剪。双鬓隔香红,玉钗头上风。\n -- 温庭筠《菩萨蛮》\n\n❯ fortune\n\n A disciple of another sect once came to Drescher as he was eating\nhis morning meal. \"I would like to give you this personality test\", said\nthe outsider, \"because I want you to be happy.\"\n Drescher took the paper that was offered him and put it into the\ntoaster -- \"I wish the toaster to be happy too\".\n\n❯ fortune\n\nExample is not the main thing in influencing others. It is the only thing.\n -- Albert Schweitzer\n\n❯ fortune\n\nWe have art that we do not die of the truth.\n -- Nietzsche\n\n❯ fortune\n\n \"Java for the COBOL Programmer\"\n who writes these things?\n people on crack\n and cobol programmers\n :)\n that's redundant.\n\n❯ fortune\n\nI was in this prematurely air conditioned supermarket and there were all\nthese aisles and there were these bathing caps you could buy that had these\nkind of Fourth of July plumes on them that were red and yellow and blue and\nI wasn't tempted to buy one but I was reminded of the fact that I had been\navoiding the beach.\n -- Lucinda Childs \"Einstein On The Beach\"\n\n❯ fortune\n\nIt doesn't matter whether you win or lose -- until you lose.\n\n❯ fortune\n\nTrue leadership is the art of changing a group from what it is to what\nit ought to be.\n -- Virginia Allan\n\n❯ fortune\n\nI keep hearing and reading this nice proverb *if it ain't broke, don't fix\nit*. The latest appearance was in response to [Shlomi\nFish](http://community.livejournal.com/shlomif_tech/37969.html) suggesting\nthat some Ancient Perl code should be replaced by Modern Perl code.\n\nI am not saying that every piece of code should be rewritten every 6 months,\nbut in my understanding that sentence actually translates to *let's wait till\nit breaks and then panic*.\n\nI think people who say that sentence are afraid that the new version will\nbreak something. Sure, there is always a chance that a change introduces an\nerror, but, if we are afraid to touch the code, what will happen when later on\nwe encounter a case where it does not work? For example, if we need to use it\nin a new environment. Will we have the courage to change the code then? How\nmuch will it cost in money, time, and lost sleep?\n\nI think we have been trying to teach ourselves that we should have really good\ntest coverage of our code and then we can easily refactor it and get rid of\ntechnical debt. So why do we keep hearing that sentence?\n\n -- Gabor Szabo\n -- What does \"If it ain't broke, don't fix it.\" really mean? ( )\n\n❯ fortune\n\nPsychoanalysis is that mental illness for which it regards itself a therapy.\n -- Karl Kraus\n\n❯ fortune\n\nWith a rubber duck, one's never alone.\n -- \"The Hitchhiker's Guide to the Galaxy\"\n\n❯ fortune\n\n(Presuming for the sake of argument that it's even *possible* to design\nbetter code in Perl than in C. :-)\n -- Larry Wall on core code vs. module code design\n\n❯ fortune\n\nBut, officer, he's not drunk, I just saw his fingers twitch!\n\n❯ fortune\n\nImbalance of power corrupts and monopoly of power corrupts absolutely.\n -- Genji\n\n❯ fortune\n\nI want a VEGETARIAN BURRITO to go ... with EXTRA MSG!!\n\n❯ fortune\n\n如果你不知道如何表现地高人一等,找个Unix用户,让他做给你看。\n -- Dilbert newsletter 3.0, 1994\n\n❯ fortune\n\n\"The picture's pretty bleak, gentlemen... The world's climates are changing,\nthe mammals are taking over, and we all have a brain about the size of a\nwalnut.\"\n -- some dinosaurs from The Far Side, by Gary Larson\n\n❯ fortune\n\nMost of us feel that marketing types are like a dangerous weapon - keep\n'em unloaded and locked up in a cupboard, and only bring them out when\nyou need them to do a job.\n -- Craig Sanders\n\n❯ fortune\n\n不寐倦长更,披衣出户行。月寒秋竹冷,风切夜窗声。\n -- 李煜《三台令》\n\n❯ fortune\n\n子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”\n-- 论语,为政篇\n\n❯ fortune\n\n \"The jig's up, Elman.\"\n \"Which jig?\"\n -- Jeff Elman\n\n❯ fortune\n\n\"First things first -- but not necessarily in that order\"\n -- The Doctor, \"Doctor Who\"\n\n❯ fortune\n\n波影摇涟,趁熏风,一舸来时,翠阴清昼。去郭轩楹才数里,藓磴松关云岫。\n快屐齿,筇枝先后。空半危亭堪聚远,看洞庭,缥缈争奇秀。人自老,景如旧。\n来帆去棹还知否,问古今,几度斜阳,几番回首?晓色一川谁管领,都付雨荷烟柳,\n知我者,燕朋鸥友。笑拍阑干呼范蠡,甚平吴,却倩垂纶手?吁万古,付卮酒。\n -- 周密《长亭怨慢》\n\n❯ fortune\n\nI'm telling you that the kernel is stable not because it's a kernel,\nbut because I refuse to listen to arguments like this.\n -- Linus Torvalds\n\n❯ fortune\n\nA girl's conscience doesn't really keep her from doing anything wrong--\nit merely keeps her from enjoying it.\n\n❯ fortune\n\nThere are few people more often in the wrong than those who cannot endure\nto be thought so.\n\n❯ fortune\n\nOne does not thank logic.\n -- Sarek, \"Journey to Babel\", stardate 3842.4\n\n❯ fortune\n\nFree yourself from negative influence. Negative thoughts are the old\nhabits that gnaw at the roots of the soul.\nMoses Shongo, (Seneca)\n\n❯ fortune\n\n日月照之何不及此?惟有北风号怒天上来。\n -- 李白《北风行》\n\n❯ fortune\n\nAnyone who is capable of getting themselves made President should on no\naccount be allowed to do the job.\n -- Douglas Adams, \"The Hitchhiker's Guide to the Galaxy\"\n\nAnd here are my mods:-)\n\n❯ pacman -Qs fortune\nlocal/cowfortune 0.1.2-8\n Configurable fortune cookie proclaiming cow (and a few other creatures)\nlocal/fortune-mod 3.22.0-1.1\n The Fortune Cookie Program from BSD games\nlocal/fortune-mod-zh 2.98-1 (fortune-mods)\n Chinese poems for fortune-mod\n","source":"_posts/fortune.md","raw":"---\ntitle: Random fortune \ndate: 2025-05-22 15:29:07\ntags: 日志\n---\n\nKeep peace of mind with fortune...\n\n❯ fortune\n\nThe nice thing about standards is that there are so many of them to choose\nfrom.\n -- Andrew S. Tanenbaum\n\n❯ fortune\n\n看蓬门秋草,年年破巷,疏窗细雨,夜夜孤灯。\n -- 郑板桥《沁园春·恨》\n\n❯ fortune\n\nAn alcoholic is someone you don't like who drinks as much as you do.\n -- Dylan Thomas\n\n❯ fortune\n\nIf you put tomfoolery into a computer, nothing comes out but tomfoolery.\nBut this tomfoolery, having passed through a very expensive machine,\nis somehow ennobled and no-one dare criticise it.\n -- Pierre Gallois\n\n❯ fortune\n\n秋色渐将晚,霜信报黄花。\n -- 叶梦得《水调歌头·秋色渐将晚》\n\n❯ fortune\n\n水精帘里颇黎枕,暖香惹梦鸳鸯锦。江上柳如烟,雁飞残月天。\n藕丝秋色浅,人胜参差剪。双鬓隔香红,玉钗头上风。\n -- 温庭筠《菩萨蛮》\n\n❯ fortune\n\n A disciple of another sect once came to Drescher as he was eating\nhis morning meal. \"I would like to give you this personality test\", said\nthe outsider, \"because I want you to be happy.\"\n Drescher took the paper that was offered him and put it into the\ntoaster -- \"I wish the toaster to be happy too\".\n\n❯ fortune\n\nExample is not the main thing in influencing others. It is the only thing.\n -- Albert Schweitzer\n\n❯ fortune\n\nWe have art that we do not die of the truth.\n -- Nietzsche\n\n❯ fortune\n\n \"Java for the COBOL Programmer\"\n who writes these things?\n people on crack\n and cobol programmers\n :)\n that's redundant.\n\n❯ fortune\n\nI was in this prematurely air conditioned supermarket and there were all\nthese aisles and there were these bathing caps you could buy that had these\nkind of Fourth of July plumes on them that were red and yellow and blue and\nI wasn't tempted to buy one but I was reminded of the fact that I had been\navoiding the beach.\n -- Lucinda Childs \"Einstein On The Beach\"\n\n❯ fortune\n\nIt doesn't matter whether you win or lose -- until you lose.\n\n❯ fortune\n\nTrue leadership is the art of changing a group from what it is to what\nit ought to be.\n -- Virginia Allan\n\n❯ fortune\n\nI keep hearing and reading this nice proverb *if it ain't broke, don't fix\nit*. The latest appearance was in response to [Shlomi\nFish](http://community.livejournal.com/shlomif_tech/37969.html) suggesting\nthat some Ancient Perl code should be replaced by Modern Perl code.\n\nI am not saying that every piece of code should be rewritten every 6 months,\nbut in my understanding that sentence actually translates to *let's wait till\nit breaks and then panic*.\n\nI think people who say that sentence are afraid that the new version will\nbreak something. Sure, there is always a chance that a change introduces an\nerror, but, if we are afraid to touch the code, what will happen when later on\nwe encounter a case where it does not work? For example, if we need to use it\nin a new environment. Will we have the courage to change the code then? How\nmuch will it cost in money, time, and lost sleep?\n\nI think we have been trying to teach ourselves that we should have really good\ntest coverage of our code and then we can easily refactor it and get rid of\ntechnical debt. So why do we keep hearing that sentence?\n\n -- Gabor Szabo\n -- What does \"If it ain't broke, don't fix it.\" really mean? ( )\n\n❯ fortune\n\nPsychoanalysis is that mental illness for which it regards itself a therapy.\n -- Karl Kraus\n\n❯ fortune\n\nWith a rubber duck, one's never alone.\n -- \"The Hitchhiker's Guide to the Galaxy\"\n\n❯ fortune\n\n(Presuming for the sake of argument that it's even *possible* to design\nbetter code in Perl than in C. :-)\n -- Larry Wall on core code vs. module code design\n\n❯ fortune\n\nBut, officer, he's not drunk, I just saw his fingers twitch!\n\n❯ fortune\n\nImbalance of power corrupts and monopoly of power corrupts absolutely.\n -- Genji\n\n❯ fortune\n\nI want a VEGETARIAN BURRITO to go ... with EXTRA MSG!!\n\n❯ fortune\n\n如果你不知道如何表现地高人一等,找个Unix用户,让他做给你看。\n -- Dilbert newsletter 3.0, 1994\n\n❯ fortune\n\n\"The picture's pretty bleak, gentlemen... The world's climates are changing,\nthe mammals are taking over, and we all have a brain about the size of a\nwalnut.\"\n -- some dinosaurs from The Far Side, by Gary Larson\n\n❯ fortune\n\nMost of us feel that marketing types are like a dangerous weapon - keep\n'em unloaded and locked up in a cupboard, and only bring them out when\nyou need them to do a job.\n -- Craig Sanders\n\n❯ fortune\n\n不寐倦长更,披衣出户行。月寒秋竹冷,风切夜窗声。\n -- 李煜《三台令》\n\n❯ fortune\n\n子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”\n-- 论语,为政篇\n\n❯ fortune\n\n \"The jig's up, Elman.\"\n \"Which jig?\"\n -- Jeff Elman\n\n❯ fortune\n\n\"First things first -- but not necessarily in that order\"\n -- The Doctor, \"Doctor Who\"\n\n❯ fortune\n\n波影摇涟,趁熏风,一舸来时,翠阴清昼。去郭轩楹才数里,藓磴松关云岫。\n快屐齿,筇枝先后。空半危亭堪聚远,看洞庭,缥缈争奇秀。人自老,景如旧。\n来帆去棹还知否,问古今,几度斜阳,几番回首?晓色一川谁管领,都付雨荷烟柳,\n知我者,燕朋鸥友。笑拍阑干呼范蠡,甚平吴,却倩垂纶手?吁万古,付卮酒。\n -- 周密《长亭怨慢》\n\n❯ fortune\n\nI'm telling you that the kernel is stable not because it's a kernel,\nbut because I refuse to listen to arguments like this.\n -- Linus Torvalds\n\n❯ fortune\n\nA girl's conscience doesn't really keep her from doing anything wrong--\nit merely keeps her from enjoying it.\n\n❯ fortune\n\nThere are few people more often in the wrong than those who cannot endure\nto be thought so.\n\n❯ fortune\n\nOne does not thank logic.\n -- Sarek, \"Journey to Babel\", stardate 3842.4\n\n❯ fortune\n\nFree yourself from negative influence. Negative thoughts are the old\nhabits that gnaw at the roots of the soul.\nMoses Shongo, (Seneca)\n\n❯ fortune\n\n日月照之何不及此?惟有北风号怒天上来。\n -- 李白《北风行》\n\n❯ fortune\n\nAnyone who is capable of getting themselves made President should on no\naccount be allowed to do the job.\n -- Douglas Adams, \"The Hitchhiker's Guide to the Galaxy\"\n\nAnd here are my mods:-)\n\n❯ pacman -Qs fortune\nlocal/cowfortune 0.1.2-8\n Configurable fortune cookie proclaiming cow (and a few other creatures)\nlocal/fortune-mod 3.22.0-1.1\n The Fortune Cookie Program from BSD games\nlocal/fortune-mod-zh 2.98-1 (fortune-mods)\n Chinese poems for fortune-mod\n","slug":"fortune","published":1,"updated":"2025-05-22T07:41:08.523Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescv0013og2b3dh6h5cd","content":"

Keep peace of mind with fortune…

\n

❯ fortune

\n

The nice thing about standards is that there are so many of them to choose
from.
– Andrew S. Tanenbaum

\n

❯ fortune

\n

看蓬门秋草,年年破巷,疏窗细雨,夜夜孤灯。
– 郑板桥《沁园春·恨》

\n

❯ fortune

\n

An alcoholic is someone you don’t like who drinks as much as you do.
– Dylan Thomas

\n

❯ fortune

\n

If you put tomfoolery into a computer, nothing comes out but tomfoolery.
But this tomfoolery, having passed through a very expensive machine,
is somehow ennobled and no-one dare criticise it.
– Pierre Gallois

\n

❯ fortune

\n

秋色渐将晚,霜信报黄花。
– 叶梦得《水调歌头·秋色渐将晚》

\n

❯ fortune

\n

水精帘里颇黎枕,暖香惹梦鸳鸯锦。江上柳如烟,雁飞残月天。
藕丝秋色浅,人胜参差剪。双鬓隔香红,玉钗头上风。
– 温庭筠《菩萨蛮》

\n

❯ fortune

\n
    A disciple of another sect once came to Drescher as he was eating\n
\n

his morning meal. “I would like to give you this personality test”, said
the outsider, “because I want you to be happy.”
Drescher took the paper that was offered him and put it into the
toaster – “I wish the toaster to be happy too”.

\n

❯ fortune

\n

Example is not the main thing in influencing others. It is the only thing.
– Albert Schweitzer

\n

❯ fortune

\n

We have art that we do not die of the truth.
– Nietzsche

\n

❯ fortune

\n

“Java for the COBOL Programmer”
who writes these things?
people on crack
and cobol programmers
:)
that’s redundant.

\n

❯ fortune

\n

I was in this prematurely air conditioned supermarket and there were all
these aisles and there were these bathing caps you could buy that had these
kind of Fourth of July plumes on them that were red and yellow and blue and
I wasn’t tempted to buy one but I was reminded of the fact that I had been
avoiding the beach.
– Lucinda Childs “Einstein On The Beach”

\n

❯ fortune

\n

It doesn’t matter whether you win or lose – until you lose.

\n

❯ fortune

\n

True leadership is the art of changing a group from what it is to what
it ought to be.
– Virginia Allan

\n

❯ fortune

\n

I keep hearing and reading this nice proverb if it ain’t broke, don’t fix
it
. The latest appearance was in response to Shlomi
Fish
suggesting
that some Ancient Perl code should be replaced by Modern Perl code.

\n

I am not saying that every piece of code should be rewritten every 6 months,
but in my understanding that sentence actually translates to let’s wait till
it breaks and then panic
.

\n

I think people who say that sentence are afraid that the new version will
break something. Sure, there is always a chance that a change introduces an
error, but, if we are afraid to touch the code, what will happen when later on
we encounter a case where it does not work? For example, if we need to use it
in a new environment. Will we have the courage to change the code then? How
much will it cost in money, time, and lost sleep?

\n

I think we have been trying to teach ourselves that we should have really good
test coverage of our code and then we can easily refactor it and get rid of
technical debt. So why do we keep hearing that sentence?

\n
-- Gabor Szabo\n-- What does "If it ain't broke, don't fix it." really mean? (  )\n
\n

❯ fortune

\n

Psychoanalysis is that mental illness for which it regards itself a therapy.
– Karl Kraus

\n

❯ fortune

\n

With a rubber duck, one’s never alone.
– “The Hitchhiker’s Guide to the Galaxy”

\n

❯ fortune

\n

(Presuming for the sake of argument that it’s even possible to design
better code in Perl than in C. :-)
– Larry Wall on core code vs. module code design

\n

❯ fortune

\n

But, officer, he’s not drunk, I just saw his fingers twitch!

\n

❯ fortune

\n

Imbalance of power corrupts and monopoly of power corrupts absolutely.
– Genji

\n

❯ fortune

\n

I want a VEGETARIAN BURRITO to go … with EXTRA MSG!!

\n

❯ fortune

\n

如果你不知道如何表现地高人一等,找个Unix用户,让他做给你看。
– Dilbert newsletter 3.0, 1994

\n

❯ fortune

\n

“The picture’s pretty bleak, gentlemen… The world’s climates are changing,
the mammals are taking over, and we all have a brain about the size of a
walnut.”
– some dinosaurs from The Far Side, by Gary Larson

\n

❯ fortune

\n

Most of us feel that marketing types are like a dangerous weapon - keep
‘em unloaded and locked up in a cupboard, and only bring them out when
you need them to do a job.
– Craig Sanders

\n

❯ fortune

\n

不寐倦长更,披衣出户行。月寒秋竹冷,风切夜窗声。
– 李煜《三台令》

\n

❯ fortune

\n

子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”
– 论语,为政篇

\n

❯ fortune

\n
    "The jig's up, Elman."\n    "Which jig?"\n            -- Jeff Elman\n
\n

❯ fortune

\n

“First things first – but not necessarily in that order”
– The Doctor, “Doctor Who”

\n

❯ fortune

\n

波影摇涟,趁熏风,一舸来时,翠阴清昼。去郭轩楹才数里,藓磴松关云岫。
快屐齿,筇枝先后。空半危亭堪聚远,看洞庭,缥缈争奇秀。人自老,景如旧。
来帆去棹还知否,问古今,几度斜阳,几番回首?晓色一川谁管领,都付雨荷烟柳,
知我者,燕朋鸥友。笑拍阑干呼范蠡,甚平吴,却倩垂纶手?吁万古,付卮酒。
– 周密《长亭怨慢》

\n

❯ fortune

\n

I’m telling you that the kernel is stable not because it’s a kernel,
but because I refuse to listen to arguments like this.
– Linus Torvalds

\n

❯ fortune

\n

A girl’s conscience doesn’t really keep her from doing anything wrong–
it merely keeps her from enjoying it.

\n

❯ fortune

\n

There are few people more often in the wrong than those who cannot endure
to be thought so.

\n

❯ fortune

\n

One does not thank logic.
– Sarek, “Journey to Babel”, stardate 3842.4

\n

❯ fortune

\n

Free yourself from negative influence. Negative thoughts are the old
habits that gnaw at the roots of the soul.
Moses Shongo, (Seneca)

\n

❯ fortune

\n

日月照之何不及此?惟有北风号怒天上来。
– 李白《北风行》

\n

❯ fortune

\n

Anyone who is capable of getting themselves made President should on no
account be allowed to do the job.
– Douglas Adams, “The Hitchhiker’s Guide to the Galaxy”

\n

And here are my mods:-)

\n

❯ pacman -Qs fortune
local/cowfortune 0.1.2-8
Configurable fortune cookie proclaiming cow (and a few other creatures)
local/fortune-mod 3.22.0-1.1
The Fortune Cookie Program from BSD games
local/fortune-mod-zh 2.98-1 (fortune-mods)
Chinese poems for fortune-mod

\n","excerpt":"","more":"

Keep peace of mind with fortune…

\n

❯ fortune

\n

The nice thing about standards is that there are so many of them to choose
from.
– Andrew S. Tanenbaum

\n

❯ fortune

\n

看蓬门秋草,年年破巷,疏窗细雨,夜夜孤灯。
– 郑板桥《沁园春·恨》

\n

❯ fortune

\n

An alcoholic is someone you don’t like who drinks as much as you do.
– Dylan Thomas

\n

❯ fortune

\n

If you put tomfoolery into a computer, nothing comes out but tomfoolery.
But this tomfoolery, having passed through a very expensive machine,
is somehow ennobled and no-one dare criticise it.
– Pierre Gallois

\n

❯ fortune

\n

秋色渐将晚,霜信报黄花。
– 叶梦得《水调歌头·秋色渐将晚》

\n

❯ fortune

\n

水精帘里颇黎枕,暖香惹梦鸳鸯锦。江上柳如烟,雁飞残月天。
藕丝秋色浅,人胜参差剪。双鬓隔香红,玉钗头上风。
– 温庭筠《菩萨蛮》

\n

❯ fortune

\n
    A disciple of another sect once came to Drescher as he was eating\n
\n

his morning meal. “I would like to give you this personality test”, said
the outsider, “because I want you to be happy.”
Drescher took the paper that was offered him and put it into the
toaster – “I wish the toaster to be happy too”.

\n

❯ fortune

\n

Example is not the main thing in influencing others. It is the only thing.
– Albert Schweitzer

\n

❯ fortune

\n

We have art that we do not die of the truth.
– Nietzsche

\n

❯ fortune

\n

“Java for the COBOL Programmer”
who writes these things?
people on crack
and cobol programmers
:)
that’s redundant.

\n

❯ fortune

\n

I was in this prematurely air conditioned supermarket and there were all
these aisles and there were these bathing caps you could buy that had these
kind of Fourth of July plumes on them that were red and yellow and blue and
I wasn’t tempted to buy one but I was reminded of the fact that I had been
avoiding the beach.
– Lucinda Childs “Einstein On The Beach”

\n

❯ fortune

\n

It doesn’t matter whether you win or lose – until you lose.

\n

❯ fortune

\n

True leadership is the art of changing a group from what it is to what
it ought to be.
– Virginia Allan

\n

❯ fortune

\n

I keep hearing and reading this nice proverb if it ain’t broke, don’t fix
it
. The latest appearance was in response to Shlomi
Fish
suggesting
that some Ancient Perl code should be replaced by Modern Perl code.

\n

I am not saying that every piece of code should be rewritten every 6 months,
but in my understanding that sentence actually translates to let’s wait till
it breaks and then panic
.

\n

I think people who say that sentence are afraid that the new version will
break something. Sure, there is always a chance that a change introduces an
error, but, if we are afraid to touch the code, what will happen when later on
we encounter a case where it does not work? For example, if we need to use it
in a new environment. Will we have the courage to change the code then? How
much will it cost in money, time, and lost sleep?

\n

I think we have been trying to teach ourselves that we should have really good
test coverage of our code and then we can easily refactor it and get rid of
technical debt. So why do we keep hearing that sentence?

\n
-- Gabor Szabo\n-- What does "If it ain't broke, don't fix it." really mean? (  )\n
\n

❯ fortune

\n

Psychoanalysis is that mental illness for which it regards itself a therapy.
– Karl Kraus

\n

❯ fortune

\n

With a rubber duck, one’s never alone.
– “The Hitchhiker’s Guide to the Galaxy”

\n

❯ fortune

\n

(Presuming for the sake of argument that it’s even possible to design
better code in Perl than in C. :-)
– Larry Wall on core code vs. module code design

\n

❯ fortune

\n

But, officer, he’s not drunk, I just saw his fingers twitch!

\n

❯ fortune

\n

Imbalance of power corrupts and monopoly of power corrupts absolutely.
– Genji

\n

❯ fortune

\n

I want a VEGETARIAN BURRITO to go … with EXTRA MSG!!

\n

❯ fortune

\n

如果你不知道如何表现地高人一等,找个Unix用户,让他做给你看。
– Dilbert newsletter 3.0, 1994

\n

❯ fortune

\n

“The picture’s pretty bleak, gentlemen… The world’s climates are changing,
the mammals are taking over, and we all have a brain about the size of a
walnut.”
– some dinosaurs from The Far Side, by Gary Larson

\n

❯ fortune

\n

Most of us feel that marketing types are like a dangerous weapon - keep
‘em unloaded and locked up in a cupboard, and only bring them out when
you need them to do a job.
– Craig Sanders

\n

❯ fortune

\n

不寐倦长更,披衣出户行。月寒秋竹冷,风切夜窗声。
– 李煜《三台令》

\n

❯ fortune

\n

子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”
– 论语,为政篇

\n

❯ fortune

\n
    "The jig's up, Elman."\n    "Which jig?"\n            -- Jeff Elman\n
\n

❯ fortune

\n

“First things first – but not necessarily in that order”
– The Doctor, “Doctor Who”

\n

❯ fortune

\n

波影摇涟,趁熏风,一舸来时,翠阴清昼。去郭轩楹才数里,藓磴松关云岫。
快屐齿,筇枝先后。空半危亭堪聚远,看洞庭,缥缈争奇秀。人自老,景如旧。
来帆去棹还知否,问古今,几度斜阳,几番回首?晓色一川谁管领,都付雨荷烟柳,
知我者,燕朋鸥友。笑拍阑干呼范蠡,甚平吴,却倩垂纶手?吁万古,付卮酒。
– 周密《长亭怨慢》

\n

❯ fortune

\n

I’m telling you that the kernel is stable not because it’s a kernel,
but because I refuse to listen to arguments like this.
– Linus Torvalds

\n

❯ fortune

\n

A girl’s conscience doesn’t really keep her from doing anything wrong–
it merely keeps her from enjoying it.

\n

❯ fortune

\n

There are few people more often in the wrong than those who cannot endure
to be thought so.

\n

❯ fortune

\n

One does not thank logic.
– Sarek, “Journey to Babel”, stardate 3842.4

\n

❯ fortune

\n

Free yourself from negative influence. Negative thoughts are the old
habits that gnaw at the roots of the soul.
Moses Shongo, (Seneca)

\n

❯ fortune

\n

日月照之何不及此?惟有北风号怒天上来。
– 李白《北风行》

\n

❯ fortune

\n

Anyone who is capable of getting themselves made President should on no
account be allowed to do the job.
– Douglas Adams, “The Hitchhiker’s Guide to the Galaxy”

\n

And here are my mods:-)

\n

❯ pacman -Qs fortune
local/cowfortune 0.1.2-8
Configurable fortune cookie proclaiming cow (and a few other creatures)
local/fortune-mod 3.22.0-1.1
The Fortune Cookie Program from BSD games
local/fortune-mod-zh 2.98-1 (fortune-mods)
Chinese poems for fortune-mod

\n"},{"title":"GCC15 函数指针类型检查可能导致编译错误","date":"2025-05-23T13:49:02.000Z","_content":"\n今天准备继续做一下OS课的实验,实验代码当然是基于著名的xv6项目,意外地发现原本明明正常运行的系统再次构建时却失败了,具体报错如下:\n\n```GCC\nuser/usertests.c:2598:4: error: initialization of 'void (*)(char *)' from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types]\n 2598 | {rwsbrk, \"rwsbrk\" },\n | ^~~~~~\nuser/usertests.c:2598:4: note: (near initialization for 'quicktests[5].f')\nuser/usertests.c:247:1: note: 'rwsbrk' declared here\n 247 | rwsbrk()\n | ^~~~~~\nmake: *** [<内置>:user/usertests.o] 错误 1\n\n```\n而具体定位到的代码则是:\n```C\nstruct test {\n void (*f)(char *);\n char *s;\n} quicktests[] = {\n {copyin, \"copyin\"},\n {copyout, \"copyout\"},\n {copyinstr1, \"copyinstr1\"},\n {copyinstr2, \"copyinstr2\"},\n {copyinstr3, \"copyinstr3\"},\n {rwsbrk, \"rwsbrk\" },\n ...\n { 0, 0},\n};\n// See if the kernel refuses to read/write user memory that the\n// application doesn't have anymore, because it returned it.\nvoid\nrwsbrk()\n{\n int fd, n;\n \n uint64 a = (uint64) sbrk(8192);\n\n if(a == 0xffffffffffffffffLL) {\n printf(\"sbrk(rwsbrk) failed\\n\");\n exit(1);\n }\n ...\n exit(0);\n}\n```\n\n这段代码定义了一个函数指针数组,其中每个元素都指向一个函数和它的名称。结构体期望的函数签名是 `void(*)(char*)`,但传入的是一个没有参数的函数 `void(*)(void)`,这会导致函数指针类型不匹配。\n\n但是之前明明是没有问题的怎么现在突然出错呢?仔细一想立刻就怀疑是之前arch更新的时候把gcc升上去导致的,结果查了下大概确实是这样。\n\n- 在 **GCC 14 及之前版本**,这类赋值虽然不符合 C 标准,但 GCC 作为扩展允许这种行为。\n- 从 **GCC 15 开始**,这类隐式转换默认触发编译错误或警告(取决于编译器配置),因为 GCC 变得更加严格地遵循标准 C 的函数指针类型规则。\n\n这并不是 xv6 本身的 bug,而是 GCC 编译器对语言规范支持的更新带来的兼容性问题。解决方法倒是简单,直接给`rwsbrk`函数添加参数改为`void rwsbrk(char* arg)`即可解决,强制类型转换也是一种办法。这次事件再次告诉我们什么都升到最新并不是什么好事情,arch用户总是要花时间处理一些莫名其妙的兼容性问题:-)\n\n\n","source":"_posts/gcc15restrict.md","raw":"---\ntitle: GCC15 函数指针类型检查可能导致编译错误\ndate: 2025-05-23 21:49:02\ntags: 技术\n---\n\n今天准备继续做一下OS课的实验,实验代码当然是基于著名的xv6项目,意外地发现原本明明正常运行的系统再次构建时却失败了,具体报错如下:\n\n```GCC\nuser/usertests.c:2598:4: error: initialization of 'void (*)(char *)' from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types]\n 2598 | {rwsbrk, \"rwsbrk\" },\n | ^~~~~~\nuser/usertests.c:2598:4: note: (near initialization for 'quicktests[5].f')\nuser/usertests.c:247:1: note: 'rwsbrk' declared here\n 247 | rwsbrk()\n | ^~~~~~\nmake: *** [<内置>:user/usertests.o] 错误 1\n\n```\n而具体定位到的代码则是:\n```C\nstruct test {\n void (*f)(char *);\n char *s;\n} quicktests[] = {\n {copyin, \"copyin\"},\n {copyout, \"copyout\"},\n {copyinstr1, \"copyinstr1\"},\n {copyinstr2, \"copyinstr2\"},\n {copyinstr3, \"copyinstr3\"},\n {rwsbrk, \"rwsbrk\" },\n ...\n { 0, 0},\n};\n// See if the kernel refuses to read/write user memory that the\n// application doesn't have anymore, because it returned it.\nvoid\nrwsbrk()\n{\n int fd, n;\n \n uint64 a = (uint64) sbrk(8192);\n\n if(a == 0xffffffffffffffffLL) {\n printf(\"sbrk(rwsbrk) failed\\n\");\n exit(1);\n }\n ...\n exit(0);\n}\n```\n\n这段代码定义了一个函数指针数组,其中每个元素都指向一个函数和它的名称。结构体期望的函数签名是 `void(*)(char*)`,但传入的是一个没有参数的函数 `void(*)(void)`,这会导致函数指针类型不匹配。\n\n但是之前明明是没有问题的怎么现在突然出错呢?仔细一想立刻就怀疑是之前arch更新的时候把gcc升上去导致的,结果查了下大概确实是这样。\n\n- 在 **GCC 14 及之前版本**,这类赋值虽然不符合 C 标准,但 GCC 作为扩展允许这种行为。\n- 从 **GCC 15 开始**,这类隐式转换默认触发编译错误或警告(取决于编译器配置),因为 GCC 变得更加严格地遵循标准 C 的函数指针类型规则。\n\n这并不是 xv6 本身的 bug,而是 GCC 编译器对语言规范支持的更新带来的兼容性问题。解决方法倒是简单,直接给`rwsbrk`函数添加参数改为`void rwsbrk(char* arg)`即可解决,强制类型转换也是一种办法。这次事件再次告诉我们什么都升到最新并不是什么好事情,arch用户总是要花时间处理一些莫名其妙的兼容性问题:-)\n\n\n","slug":"gcc15restrict","published":1,"updated":"2025-05-23T14:01:33.929Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescv0015og2b22v2elt6","content":"

今天准备继续做一下OS课的实验,实验代码当然是基于著名的xv6项目,意外地发现原本明明正常运行的系统再次构建时却失败了,具体报错如下:

\n
1
2
3
4
5
6
7
8
9
user/usertests.c:2598:4: error: initialization of 'void (*)(char *)' from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types]
2598 | {rwsbrk, "rwsbrk" },
| ^~~~~~
user/usertests.c:2598:4: note: (near initialization for 'quicktests[5].f')
user/usertests.c:247:1: note: 'rwsbrk' declared here
247 | rwsbrk()
| ^~~~~~
make: *** [<内置>:user/usertests.o] 错误 1

\n

而具体定位到的代码则是:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
struct test {
void (*f)(char *);
char *s;
} quicktests[] = {
{copyin, "copyin"},
{copyout, "copyout"},
{copyinstr1, "copyinstr1"},
{copyinstr2, "copyinstr2"},
{copyinstr3, "copyinstr3"},
{rwsbrk, "rwsbrk" },
...
{ 0, 0},
};
// See if the kernel refuses to read/write user memory that the
// application doesn't have anymore, because it returned it.
void
rwsbrk()
{
int fd, n;

uint64 a = (uint64) sbrk(8192);

if(a == 0xffffffffffffffffLL) {
printf("sbrk(rwsbrk) failed\\n");
exit(1);
}
...
exit(0);
}
\n\n

这段代码定义了一个函数指针数组,其中每个元素都指向一个函数和它的名称。结构体期望的函数签名是 void(*)(char*),但传入的是一个没有参数的函数 void(*)(void),这会导致函数指针类型不匹配。

\n

但是之前明明是没有问题的怎么现在突然出错呢?仔细一想立刻就怀疑是之前arch更新的时候把gcc升上去导致的,结果查了下大概确实是这样。

\n
    \n
  • GCC 14 及之前版本,这类赋值虽然不符合 C 标准,但 GCC 作为扩展允许这种行为。
  • \n
  • GCC 15 开始,这类隐式转换默认触发编译错误或警告(取决于编译器配置),因为 GCC 变得更加严格地遵循标准 C 的函数指针类型规则。
  • \n
\n

这并不是 xv6 本身的 bug,而是 GCC 编译器对语言规范支持的更新带来的兼容性问题。解决方法倒是简单,直接给rwsbrk函数添加参数改为void rwsbrk(char* arg)即可解决,强制类型转换也是一种办法。这次事件再次告诉我们什么都升到最新并不是什么好事情,arch用户总是要花时间处理一些莫名其妙的兼容性问题:-)

\n","excerpt":"","more":"

今天准备继续做一下OS课的实验,实验代码当然是基于著名的xv6项目,意外地发现原本明明正常运行的系统再次构建时却失败了,具体报错如下:

\n
1
2
3
4
5
6
7
8
9
user/usertests.c:2598:4: error: initialization of 'void (*)(char *)' from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types]
2598 | {rwsbrk, "rwsbrk" },
| ^~~~~~
user/usertests.c:2598:4: note: (near initialization for 'quicktests[5].f')
user/usertests.c:247:1: note: 'rwsbrk' declared here
247 | rwsbrk()
| ^~~~~~
make: *** [<内置>:user/usertests.o] 错误 1

\n

而具体定位到的代码则是:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
struct test {
void (*f)(char *);
char *s;
} quicktests[] = {
{copyin, "copyin"},
{copyout, "copyout"},
{copyinstr1, "copyinstr1"},
{copyinstr2, "copyinstr2"},
{copyinstr3, "copyinstr3"},
{rwsbrk, "rwsbrk" },
...
{ 0, 0},
};
// See if the kernel refuses to read/write user memory that the
// application doesn't have anymore, because it returned it.
void
rwsbrk()
{
int fd, n;

uint64 a = (uint64) sbrk(8192);

if(a == 0xffffffffffffffffLL) {
printf("sbrk(rwsbrk) failed\\n");
exit(1);
}
...
exit(0);
}
\n\n

这段代码定义了一个函数指针数组,其中每个元素都指向一个函数和它的名称。结构体期望的函数签名是 void(*)(char*),但传入的是一个没有参数的函数 void(*)(void),这会导致函数指针类型不匹配。

\n

但是之前明明是没有问题的怎么现在突然出错呢?仔细一想立刻就怀疑是之前arch更新的时候把gcc升上去导致的,结果查了下大概确实是这样。

\n
    \n
  • GCC 14 及之前版本,这类赋值虽然不符合 C 标准,但 GCC 作为扩展允许这种行为。
  • \n
  • GCC 15 开始,这类隐式转换默认触发编译错误或警告(取决于编译器配置),因为 GCC 变得更加严格地遵循标准 C 的函数指针类型规则。
  • \n
\n

这并不是 xv6 本身的 bug,而是 GCC 编译器对语言规范支持的更新带来的兼容性问题。解决方法倒是简单,直接给rwsbrk函数添加参数改为void rwsbrk(char* arg)即可解决,强制类型转换也是一种办法。这次事件再次告诉我们什么都升到最新并不是什么好事情,arch用户总是要花时间处理一些莫名其妙的兼容性问题:-)

\n"},{"title":"Krita 为什么是神?","date":"2025-07-13T11:46:39.000Z","_content":"\n![神的官网](/images/krita-official.png)\n\n在谈论这个问题之前,我想先说说其他软件相较于 [Krita](https://krita.org/en/) 究竟差在了哪里。\n\n---\n\n### 首先是犯下傲慢之罪的 Adobe Photoshop\n\n依靠其在商业设计领域的绝对霸主地位赢来的市场,却不愿真正听取数字绘画创作者的声音!这种傲慢的软件注定无法触及绘画的灵魂。事实也是如此,因为高昂的订阅费用和臃肿的体量,以及对触摸屏设备支持的迟滞,Photoshop 在许多数字画师心中的地位一直在走下坡路,最终沦为商业生产的工具而非艺术创作的乐园。与之相比,**神** 就很谦卑,它免费开源,轻巧灵活,全平台支持,即便在某些方面为了兼容性和稳定性而做出妥协,那也是 **神** 留给凡人的慈悲。**神** 不是不能做到像 PS 那样无所不能,只是不想通过太完美的表现让“友商”绝望所以故意不用。可笑有些人不理解 **神** 的良苦用心,竟然还用其某些非核心功能上的不足来讥讽 **神**,我劝你们好自为之。\n\n---\n\n### 然后是犯下愤怒之罪的 GIMP\n\n因为 **神** 在数字绘画领域的崛起,GIMP 就一直对神记恨在心,甚至固守其“万能”的图像处理定位,对绘画功能上的迭代迟迟不肯投入资源。这无疑违背了 **神** 在《新约》中的一句话:“**Krita** 只为创作者而生!”**神** 当然也不能容忍其他开源软件对绘画创作的敷衍,于是 **神** 出动了它的“代码大军”降下了神罚,GIMP 在绘画圈的风评一蹶不振,即便有诸多插件以及强势归来的3.0大版本更新也无法挽回其作为“绘画软件”使用时的颓势。\n\n---\n\n### 接着是犯下懒惰之罪的 Procreate\n\n自以为有 iPad 的独占优势和流畅的笔触就了不起了,对图层管理、多文档支持以及跨平台协作就一直摆烂。另外大家有所不知,其实在 Procreate 首次发布前夕,其开发者闭上眼睛做冥想的时候,其脑海中看见的画面,正是站在光芒之中的 **神**。那时神告诉他:“你只可到这里,不可越过。”然而,**神** 的劝说不但没有让 Procreate 迷途知返,竟然还敢在移动设备上挑战神的威严,妄图通过封闭的生态垄断市场。于是 **神** 降下了他的惩罚,Procreate 在专业性上身败名裂,其以流畅为名的笔刷也被 **神** 在笔刷引擎上轻松超越,iPad Pro 独占的优势也没能阻止 **神** 在更广阔的平台生根发芽,粉丝也成为了众人口中的“果曲是这样的”。\n\n---\n\n### 再然后是犯下了嫉妒之罪的 SAI\n\n屡次被 **神** 击败,但口服心不服的 SAI,暗中嫉妒着 **神** ,甚至胆敢当众对 **神** 说出“你才是挑战者”这种话。于是,在含金量最高的活动上,即专业画师的日常工作中,SAI 被 **神** 正面击溃。它那单一的笔刷类型和有限的功能,在 **神** 面前显得如此苍白无力。不过,念在 SAI 最终皈依了 **神** 的教,并且以其轻量和独特的抖动修正功能,在某些特定绘画风格上仍有信徒,**神** 应许了它在特定小众市场的一切。\n\n---\n\n### 最后犯下贪婪之罪的 Clip Studio Paint\n\n只是初出茅庐,Clip Studio Paint 就夺得了漫画创作软件的市场份额,而这,自然是因为 **神** 的应允。**神** 本来钦定它为自己在漫画领域的代言人,在自己更专注于绘画自由之后替自己继续讨伐那些缺乏专业性的绘画工具,为此甚至不惜亲自为 Clip Studio Paint 铺路,主动减少自己在漫画素材库上的投入,将一切荣耀都归给他。但最后 Clip Studio Paint 却被利益蒙蔽了双眼,不再以践行 **神** 的理想为自己的理想,也不再聆听 **神** 的教诲,甚至自以为荣光已经超过了 **神**。于是 **神** 降下了他的惩罚,Clip Studio Paint 从此订阅制饱受诟病,其3D模型功能再也不能在线上教学中占据优势,其引以为傲的漫画分镜功能再也不能强势压制对手,最终市场被 **神** 在免费开源和强大功能上的结合所夺舍。\n\n// 都很好用口牙,本文仅供娱乐\n\n![老八可爱捏](/images/yana.jpg)\n","source":"_posts/kritabest.md","raw":"---\ntitle: Krita 为什么是神?\ndate: 2025-07-13 19:46:39\ntags: [生活]\n---\n\n![神的官网](/images/krita-official.png)\n\n在谈论这个问题之前,我想先说说其他软件相较于 [Krita](https://krita.org/en/) 究竟差在了哪里。\n\n---\n\n### 首先是犯下傲慢之罪的 Adobe Photoshop\n\n依靠其在商业设计领域的绝对霸主地位赢来的市场,却不愿真正听取数字绘画创作者的声音!这种傲慢的软件注定无法触及绘画的灵魂。事实也是如此,因为高昂的订阅费用和臃肿的体量,以及对触摸屏设备支持的迟滞,Photoshop 在许多数字画师心中的地位一直在走下坡路,最终沦为商业生产的工具而非艺术创作的乐园。与之相比,**神** 就很谦卑,它免费开源,轻巧灵活,全平台支持,即便在某些方面为了兼容性和稳定性而做出妥协,那也是 **神** 留给凡人的慈悲。**神** 不是不能做到像 PS 那样无所不能,只是不想通过太完美的表现让“友商”绝望所以故意不用。可笑有些人不理解 **神** 的良苦用心,竟然还用其某些非核心功能上的不足来讥讽 **神**,我劝你们好自为之。\n\n---\n\n### 然后是犯下愤怒之罪的 GIMP\n\n因为 **神** 在数字绘画领域的崛起,GIMP 就一直对神记恨在心,甚至固守其“万能”的图像处理定位,对绘画功能上的迭代迟迟不肯投入资源。这无疑违背了 **神** 在《新约》中的一句话:“**Krita** 只为创作者而生!”**神** 当然也不能容忍其他开源软件对绘画创作的敷衍,于是 **神** 出动了它的“代码大军”降下了神罚,GIMP 在绘画圈的风评一蹶不振,即便有诸多插件以及强势归来的3.0大版本更新也无法挽回其作为“绘画软件”使用时的颓势。\n\n---\n\n### 接着是犯下懒惰之罪的 Procreate\n\n自以为有 iPad 的独占优势和流畅的笔触就了不起了,对图层管理、多文档支持以及跨平台协作就一直摆烂。另外大家有所不知,其实在 Procreate 首次发布前夕,其开发者闭上眼睛做冥想的时候,其脑海中看见的画面,正是站在光芒之中的 **神**。那时神告诉他:“你只可到这里,不可越过。”然而,**神** 的劝说不但没有让 Procreate 迷途知返,竟然还敢在移动设备上挑战神的威严,妄图通过封闭的生态垄断市场。于是 **神** 降下了他的惩罚,Procreate 在专业性上身败名裂,其以流畅为名的笔刷也被 **神** 在笔刷引擎上轻松超越,iPad Pro 独占的优势也没能阻止 **神** 在更广阔的平台生根发芽,粉丝也成为了众人口中的“果曲是这样的”。\n\n---\n\n### 再然后是犯下了嫉妒之罪的 SAI\n\n屡次被 **神** 击败,但口服心不服的 SAI,暗中嫉妒着 **神** ,甚至胆敢当众对 **神** 说出“你才是挑战者”这种话。于是,在含金量最高的活动上,即专业画师的日常工作中,SAI 被 **神** 正面击溃。它那单一的笔刷类型和有限的功能,在 **神** 面前显得如此苍白无力。不过,念在 SAI 最终皈依了 **神** 的教,并且以其轻量和独特的抖动修正功能,在某些特定绘画风格上仍有信徒,**神** 应许了它在特定小众市场的一切。\n\n---\n\n### 最后犯下贪婪之罪的 Clip Studio Paint\n\n只是初出茅庐,Clip Studio Paint 就夺得了漫画创作软件的市场份额,而这,自然是因为 **神** 的应允。**神** 本来钦定它为自己在漫画领域的代言人,在自己更专注于绘画自由之后替自己继续讨伐那些缺乏专业性的绘画工具,为此甚至不惜亲自为 Clip Studio Paint 铺路,主动减少自己在漫画素材库上的投入,将一切荣耀都归给他。但最后 Clip Studio Paint 却被利益蒙蔽了双眼,不再以践行 **神** 的理想为自己的理想,也不再聆听 **神** 的教诲,甚至自以为荣光已经超过了 **神**。于是 **神** 降下了他的惩罚,Clip Studio Paint 从此订阅制饱受诟病,其3D模型功能再也不能在线上教学中占据优势,其引以为傲的漫画分镜功能再也不能强势压制对手,最终市场被 **神** 在免费开源和强大功能上的结合所夺舍。\n\n// 都很好用口牙,本文仅供娱乐\n\n![老八可爱捏](/images/yana.jpg)\n","slug":"kritabest","published":1,"updated":"2025-07-13T15:47:28.539Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescw0018og2b1wrcgmac","content":"

\"神的官网\"

\n

在谈论这个问题之前,我想先说说其他软件相较于 Krita 究竟差在了哪里。

\n
\n

首先是犯下傲慢之罪的 Adobe Photoshop

依靠其在商业设计领域的绝对霸主地位赢来的市场,却不愿真正听取数字绘画创作者的声音!这种傲慢的软件注定无法触及绘画的灵魂。事实也是如此,因为高昂的订阅费用和臃肿的体量,以及对触摸屏设备支持的迟滞,Photoshop 在许多数字画师心中的地位一直在走下坡路,最终沦为商业生产的工具而非艺术创作的乐园。与之相比, 就很谦卑,它免费开源,轻巧灵活,全平台支持,即便在某些方面为了兼容性和稳定性而做出妥协,那也是 留给凡人的慈悲。 不是不能做到像 PS 那样无所不能,只是不想通过太完美的表现让“友商”绝望所以故意不用。可笑有些人不理解 的良苦用心,竟然还用其某些非核心功能上的不足来讥讽 ,我劝你们好自为之。

\n
\n

然后是犯下愤怒之罪的 GIMP

因为 在数字绘画领域的崛起,GIMP 就一直对神记恨在心,甚至固守其“万能”的图像处理定位,对绘画功能上的迭代迟迟不肯投入资源。这无疑违背了 在《新约》中的一句话:“Krita 只为创作者而生!” 当然也不能容忍其他开源软件对绘画创作的敷衍,于是 出动了它的“代码大军”降下了神罚,GIMP 在绘画圈的风评一蹶不振,即便有诸多插件以及强势归来的3.0大版本更新也无法挽回其作为“绘画软件”使用时的颓势。

\n
\n

接着是犯下懒惰之罪的 Procreate

自以为有 iPad 的独占优势和流畅的笔触就了不起了,对图层管理、多文档支持以及跨平台协作就一直摆烂。另外大家有所不知,其实在 Procreate 首次发布前夕,其开发者闭上眼睛做冥想的时候,其脑海中看见的画面,正是站在光芒之中的 。那时神告诉他:“你只可到这里,不可越过。”然而, 的劝说不但没有让 Procreate 迷途知返,竟然还敢在移动设备上挑战神的威严,妄图通过封闭的生态垄断市场。于是 降下了他的惩罚,Procreate 在专业性上身败名裂,其以流畅为名的笔刷也被 在笔刷引擎上轻松超越,iPad Pro 独占的优势也没能阻止 在更广阔的平台生根发芽,粉丝也成为了众人口中的“果曲是这样的”。

\n
\n

再然后是犯下了嫉妒之罪的 SAI

屡次被 击败,但口服心不服的 SAI,暗中嫉妒着 ,甚至胆敢当众对 说出“你才是挑战者”这种话。于是,在含金量最高的活动上,即专业画师的日常工作中,SAI 被 正面击溃。它那单一的笔刷类型和有限的功能,在 面前显得如此苍白无力。不过,念在 SAI 最终皈依了 的教,并且以其轻量和独特的抖动修正功能,在某些特定绘画风格上仍有信徒, 应许了它在特定小众市场的一切。

\n
\n

最后犯下贪婪之罪的 Clip Studio Paint

只是初出茅庐,Clip Studio Paint 就夺得了漫画创作软件的市场份额,而这,自然是因为 的应允。 本来钦定它为自己在漫画领域的代言人,在自己更专注于绘画自由之后替自己继续讨伐那些缺乏专业性的绘画工具,为此甚至不惜亲自为 Clip Studio Paint 铺路,主动减少自己在漫画素材库上的投入,将一切荣耀都归给他。但最后 Clip Studio Paint 却被利益蒙蔽了双眼,不再以践行 的理想为自己的理想,也不再聆听 的教诲,甚至自以为荣光已经超过了 。于是 降下了他的惩罚,Clip Studio Paint 从此订阅制饱受诟病,其3D模型功能再也不能在线上教学中占据优势,其引以为傲的漫画分镜功能再也不能强势压制对手,最终市场被 在免费开源和强大功能上的结合所夺舍。

\n

// 都很好用口牙,本文仅供娱乐

\n

\"老八可爱捏\"

\n","excerpt":"","more":"

\"神的官网\"

\n

在谈论这个问题之前,我想先说说其他软件相较于 Krita 究竟差在了哪里。

\n
\n

首先是犯下傲慢之罪的 Adobe Photoshop

依靠其在商业设计领域的绝对霸主地位赢来的市场,却不愿真正听取数字绘画创作者的声音!这种傲慢的软件注定无法触及绘画的灵魂。事实也是如此,因为高昂的订阅费用和臃肿的体量,以及对触摸屏设备支持的迟滞,Photoshop 在许多数字画师心中的地位一直在走下坡路,最终沦为商业生产的工具而非艺术创作的乐园。与之相比, 就很谦卑,它免费开源,轻巧灵活,全平台支持,即便在某些方面为了兼容性和稳定性而做出妥协,那也是 留给凡人的慈悲。 不是不能做到像 PS 那样无所不能,只是不想通过太完美的表现让“友商”绝望所以故意不用。可笑有些人不理解 的良苦用心,竟然还用其某些非核心功能上的不足来讥讽 ,我劝你们好自为之。

\n
\n

然后是犯下愤怒之罪的 GIMP

因为 在数字绘画领域的崛起,GIMP 就一直对神记恨在心,甚至固守其“万能”的图像处理定位,对绘画功能上的迭代迟迟不肯投入资源。这无疑违背了 在《新约》中的一句话:“Krita 只为创作者而生!” 当然也不能容忍其他开源软件对绘画创作的敷衍,于是 出动了它的“代码大军”降下了神罚,GIMP 在绘画圈的风评一蹶不振,即便有诸多插件以及强势归来的3.0大版本更新也无法挽回其作为“绘画软件”使用时的颓势。

\n
\n

接着是犯下懒惰之罪的 Procreate

自以为有 iPad 的独占优势和流畅的笔触就了不起了,对图层管理、多文档支持以及跨平台协作就一直摆烂。另外大家有所不知,其实在 Procreate 首次发布前夕,其开发者闭上眼睛做冥想的时候,其脑海中看见的画面,正是站在光芒之中的 。那时神告诉他:“你只可到这里,不可越过。”然而, 的劝说不但没有让 Procreate 迷途知返,竟然还敢在移动设备上挑战神的威严,妄图通过封闭的生态垄断市场。于是 降下了他的惩罚,Procreate 在专业性上身败名裂,其以流畅为名的笔刷也被 在笔刷引擎上轻松超越,iPad Pro 独占的优势也没能阻止 在更广阔的平台生根发芽,粉丝也成为了众人口中的“果曲是这样的”。

\n
\n

再然后是犯下了嫉妒之罪的 SAI

屡次被 击败,但口服心不服的 SAI,暗中嫉妒着 ,甚至胆敢当众对 说出“你才是挑战者”这种话。于是,在含金量最高的活动上,即专业画师的日常工作中,SAI 被 正面击溃。它那单一的笔刷类型和有限的功能,在 面前显得如此苍白无力。不过,念在 SAI 最终皈依了 的教,并且以其轻量和独特的抖动修正功能,在某些特定绘画风格上仍有信徒, 应许了它在特定小众市场的一切。

\n
\n

最后犯下贪婪之罪的 Clip Studio Paint

只是初出茅庐,Clip Studio Paint 就夺得了漫画创作软件的市场份额,而这,自然是因为 的应允。 本来钦定它为自己在漫画领域的代言人,在自己更专注于绘画自由之后替自己继续讨伐那些缺乏专业性的绘画工具,为此甚至不惜亲自为 Clip Studio Paint 铺路,主动减少自己在漫画素材库上的投入,将一切荣耀都归给他。但最后 Clip Studio Paint 却被利益蒙蔽了双眼,不再以践行 的理想为自己的理想,也不再聆听 的教诲,甚至自以为荣光已经超过了 。于是 降下了他的惩罚,Clip Studio Paint 从此订阅制饱受诟病,其3D模型功能再也不能在线上教学中占据优势,其引以为傲的漫画分镜功能再也不能强势压制对手,最终市场被 在免费开源和强大功能上的结合所夺舍。

\n

// 都很好用口牙,本文仅供娱乐

\n

\"老八可爱捏\"

\n"},{"title":"时隔一年再次拿起数位板能画出什么东西","date":"2024-11-04T15:47:54.000Z","_content":"\n如题,前段时间推完LOOPERS的时候有感而发对着画了张海报\n\n时隔一年,终于又拿起了数位板\n\n![LOOPERS](/images/20241027_222225.png \"LOOPERS\")\n","source":"_posts/loopers.md","raw":"---\ntitle: 时隔一年再次拿起数位板能画出什么东西\ndate: 2024-11-04 23:47:54\ntags: [板绘, 生活]\n---\n\n如题,前段时间推完LOOPERS的时候有感而发对着画了张海报\n\n时隔一年,终于又拿起了数位板\n\n![LOOPERS](/images/20241027_222225.png \"LOOPERS\")\n","slug":"loopers","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescw001aog2be8jp9doe","content":"

如题,前段时间推完LOOPERS的时候有感而发对着画了张海报

\n

时隔一年,终于又拿起了数位板

\n

\"LOOPERS\"

\n","excerpt":"","more":"

如题,前段时间推完LOOPERS的时候有感而发对着画了张海报

\n

时隔一年,终于又拿起了数位板

\n

\"LOOPERS\"

\n"},{"title":"愿指引明路的苍蓝星永远为你闪耀","date":"2024-11-11T13:46:49.000Z","_content":"使用东方Project软音源THFont简单重置的MHWI主题曲\n\n雄关漫道真如铁,而今迈步从头越\n\n{% raw %}\n\n{% endraw %}\n\n","source":"_posts/mhwi.md","raw":"---\ntitle: 愿指引明路的苍蓝星永远为你闪耀\ndate: 2024-11-11 21:46:49\ntags: 音乐\ncategories: Rearrangement\n---\n使用东方Project软音源THFont简单重置的MHWI主题曲\n\n雄关漫道真如铁,而今迈步从头越\n\n{% raw %}\n\n{% endraw %}\n\n","slug":"mhwi","published":1,"updated":"2024-11-11T14:00:19.124Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescw001dog2b31u2eu89","content":"

使用东方Project软音源THFont简单重置的MHWI主题曲

\n

雄关漫道真如铁,而今迈步从头越

\n\n\n\n\n","excerpt":"","more":"

使用东方Project软音源THFont简单重置的MHWI主题曲

\n

雄关漫道真如铁,而今迈步从头越

\n\n\n\n\n"},{"title":"高地特供版CSAPP Bomb Lab全流程攻略","date":"2025-02-24T07:09:11.000Z","_content":"\n这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。\n\n笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。\n\n## **Phase_1**\n\n### **静态分析**\n\n#### **`strings`扫描**\n```bash\nstrings bomb_linux\n```\n先用strings寻找可能与`phase_1`相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。\n![strings](/images/phase1_strings.png)\n - 结果没有明文密码无法直接秒掉第一问,可惜。\n - 但是找到`GenerateRandomString`函数可能与密码生成相关。\n\n#### **用`objdump`反汇编**\n```bash\nobjdump -d bomb_linux > bomb.asm\n```\n搜索`GenerateRandomString`和`phase_1`函数的汇编代码。\n ```assembly\n 401b53 :\n 401b53: endbr64\n 401b57: push %rbp\n 401b58: mov %rsp,%rbp\n 401b5b: sub $0x20,%rsp\n 401b5f: mov %rdi,-0x18(%rbp)\n 401b63: lea -0xb(%rbp),%rax\n 401b67: mov %rax,%rdi\n 401b6a: callq 401ac1 # 调用密码生成函数\n 401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置\n 401b73: mov -0x18(%rbp),%rax\n 401b77: mov %rdx,%rsi\n 401b7a: mov %rax,%rdi\n 401b7d: callq 401c0c # 调用字符串比较函数\n 401b82: test %eax,%eax\n 401b84: je 401b8d \n 401b86: callq 401d67 # 比较失败则引爆炸弹\n ```\n - `phase_1`调用`GenerateRandomString`生成一个字符串。\n - 用户输入的字符串需要与此生成的字符串完全匹配。\n\n---\n\n### **动态调试**\n![phase_1](/images/phase1.png)\n下面是phase_1求解的完整流程:\n```lldb\nlldb bomb_linux <你的学号后六位>\n(lldb) b phase_1 # 在phase_1入口断点\n(lldb) run # 从入口开始执行\n请输入第1级的密码:114514 # 随便输入触发断点\n(lldb) b 0x401b6f # 在GenerateRandomString返回后断点\n(lldb) continue # 继续执行\n(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)\n0x7fffffffdaf5: \"mJHurpQZtY\" # 轻松拿下,这里是根据学号伪随机生成的哦\n```\n将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。\n\n---\n\n## **Phase_2**\n\n### **静态分析**\n\n这道题目还是比较一目了然的,观察`phase_2`代码不难发现其实构建了一张跳转表:\n```assembly\n0000000000401b8e :\n 401b8e:\tf3 0f 1e fa \tendbr64\n 401b92:\t55 \tpush %rbp\n 401b93:\t48 89 e5 \tmov %rsp,%rbp\n 401b96:\t48 83 ec 10 \tsub $0x10,%rsp\n 401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi\n 401ba3:\te8 05 fb ff ff \tcall 4016ad \n 401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 \n 401baf:\t48 83 f8 0f \tcmp $0xf,%rax\n 401bb3:\t0f 87 16 01 00 00 \tja 401ccf \n 401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 401bc0:\t00 \n 401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>\n 401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 401bcb:\t48 98 \tcltq\n 401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>\n 401bd4:\t48 01 d0 \tadd %rdx,%rax\n 401bd7:\t3e ff e0 \tnotrack jmp *%rax\n 401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bde:\t48 89 c7 \tmov %rax,%rdi\n 401be1:\te8 f2 00 00 00 \tcall 401cd8 \n 401be6:\te9 ea 00 00 00 \tjmp 401cd5 \n 401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bef:\t48 89 c7 \tmov %rax,%rdi\n 401bf2:\te8 8b 01 00 00 \tcall 401d82 \n 401bf7:\te9 d9 00 00 00 \tjmp 401cd5 \n 401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401c00:\t48 89 c7 \tmov %rax,%rdi\n ...\n```\n这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是`GenerateRandomNumber`这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。\n\n---\n\n### **动态调试**\n理解原理就没什么难度了,自己找几个断点打好然后关注一下`rand_div`的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向`phase_2_14`跳转:\n![phase_2_14](/images/phase_2_14.png)\n\n而除了`phase_2_14`还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。\n\n---\n## **Phase_3**\n\n### **静态分析**\n\n和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi\n\n本体其实没有什么好说的,这里我跳转的方向是`Phase_3_5`简要解释一下可供参考:\n\n```assembly\n0000000000403001 :\n 403001:\tf3 0f 1e fa \tendbr64\n 403005:\t55 \tpush %rbp\n 403006:\t48 89 e5 \tmov %rsp,%rbp\n 403009:\t48 83 ec 20 \tsub $0x20,%rsp\n 40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)\n 403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)\n 403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)\n 40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx\n 403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx\n 403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax\n 40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>\n 403032:\t48 89 c7 \tmov %rax,%rdi\n 403035:\tb8 00 00 00 00 \tmov $0x0,%eax\n 40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n 40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)\n 403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)\n 403046:\t7f 05 \tjg 40304d \n 403048:\te8 a9 2b 00 00 \tcall 405bf6 \n 40304d:\tbf 08 00 00 00 \tmov $0x8,%edi\n 403052:\te8 56 e6 ff ff \tcall 4016ad \n 403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40305a:\t48 63 d0 \tmovslq %eax,%rdx\n 40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 \n 403064:\t48 39 c2 \tcmp %rax,%rdx\n 403067:\t74 05 \tje 40306e \n 403069:\te8 88 2b 00 00 \tcall 405bf6 \n 40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 403073:\te8 35 e6 ff ff \tcall 4016ad \n 403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40307b:\t83 f8 07 \tcmp $0x7,%eax\n 40307e:\t0f 87 eb 00 00 00 \tja 40316f \n 403084:\t89 c0 \tmov %eax,%eax\n 403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 40308d:\t00 \n 40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>\n 403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 403098:\t48 98 \tcltq\n 40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>\n 4030a1:\t48 01 d0 \tadd %rdx,%rax\n 4030a4:\t3e ff e0 \tnotrack jmp *%rax\n 4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 \n 4030ae:\t89 c2 \tmov %eax,%edx\n 4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax\n 4030b3:\t01 d0 \tadd %edx,%eax\n 4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)\n 4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 4030bd:\te8 eb e5 ff ff \tcall 4016ad \n ...\n 403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax\n 403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里\n 40317a:\t74 05 \tje 403181 \n 40317c:\te8 75 2a 00 00 \tcall 405bf6 \n 403181:\t90 \tnop\n 403182:\tc9 \tleave\n 403183:\tc3 \tret\n\n```\n看起来一大堆很吓人对不对?实际上确实很吓人。\n\n但是发现其中玄机后其实简单的没边,最终答案就藏在`0x403177`里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接`run`一下重开qwq)。\n\n---\n\n### **动态调试**\n\n阅读`Phase_3_5`发现这一关其实需要两个输入,并且第一个输入必须是`rand_div`,这里建议通过`si`单步执行监控好`rand_div`值变化,确定正确结果后使用`run`重开正确输入第一个密码后才能进行下一步求解:\n```lldb\n(lldb) si\nProcess 13376 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377\nbomb_linux`phase_3_5:\n-> 0x40317a <+377>: je 0x403181 ; <+384>\n 0x40317c <+379>: callq 0x405bf6 ; explode_bomb\n 0x403181 <+384>: nop\n 0x403182 <+385>: leave\n(lldb) x/wx $rbp-0x4\n0x7fffffffdb0c: 0xffffffd7\n```\n例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。\n\n---\n\n## **Phase_4**\n\n### **静态分析**\n\n本题依旧开局跳转,笔者的跳转方向是`phase_4_01`,如何跳转不再强调关注`rand_div`的值即可,下面请D指导解读一下`phase_4_01`的内容:\n```assembly\n0000000000404895 :\n ; 函数入口,初始化栈帧\n 404895:\tf3 0f 1e fa \tendbr64 \n 404899:\t55 \tpush %rbp\n 40489a:\t48 89 e5 \tmov %rsp,%rbp\n 40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间\n\n ; 初始化斐波那契数组(F(10)~F(24)的十六进制值)\n 4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针\n 4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55\n 4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89\n 4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144\n 4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233\n 4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377\n 4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610\n 4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987\n 4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597\n 4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584\n 4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181\n 4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765\n 4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946\n 4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711\n 404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657\n 404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368\n\n ; 读取输入到局部变量(格式为\"%d\")\n 40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址\n 404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串\n 404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串\"%d\"\n 40491d:\t48 89 ce \tmov %rcx,%rsi\n 404920:\t48 89 c7 \tmov %rax,%rdi\n 404923:\tb8 00 00 00 00 \tmov $0x0,%eax\n 404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n\n ; 验证输入有效性(必须为1个正数)\n 40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值\n 404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数\n 404934:\t75 07 \tjne 40493d ; 失败则爆炸\n 404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N\n 404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0\n 40493b:\t7f 05 \tjg 404942 \n 40493d:\te8 b4 12 00 00 \tcall 405bf6 \n\n ; 检查输入值上限(必须 > 1999)\n 404942:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制\n 40494a:\t7f 05 \tjg 404951 ; N > 1999?\n 40494c:\te8 a5 12 00 00 \tcall 405bf6 \n\n ; 计算 N/2000(通过定点数乘法优化)\n 404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N\n 404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展\n 404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)\n 40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位\n 404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000\n 404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展\n 404968:\t89 c1 \tmov %eax,%ecx \n 40496a:\t89 d0 \tmov %edx,%eax \n 40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况\n 40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000\n\n ; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列\n 404971:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404974:\t89 c7 \tmov %eax,%edi ; 参数k\n 404976:\te8 ce fd ff ff \tcall 404749 ; 返回值eax=F(k+1)\n 40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果\n\n ; 生成随机索引并验证结果\n 40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15\n 404983:\te8 25 cd ff ff \tcall 4016ad ; 生成0~14随机数\n 404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 ; 获取随机索引\n 40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值\n 404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?\n 404996:\t74 05 \tje 40499d \n 404998:\te8 59 12 00 00 \tcall 405bf6 \n```\n所以相对还是很明了的,依旧是关注`rand_div`。\n\n### **动态调试**\n先找出`rand_div`在最后判断前的取值,比如我下面的0xa:\n\n```lldb\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108\nbomb_linux`GenerateRandomNumber:\n-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div\n 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115\nbomb_linux`GenerateRandomNumber:\n-> 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n 0x401724 <+119>: retq\n(lldb) x/gx &rand_div\n0x00408820: 0x000000000000000a\n```\n\n而当 `rand_div = 0xa`(即十进制 **10**)时,输入值 `N` 的计算步骤如下:\n\n- 数组索引 **10** 的值是 **斐波那契数列第 20 项**(`F(20) = 6765`)。\n\n- `func4_0(k)` 实际计算的是 **标准斐波那契数列的第 `k+1` 项**(例如,`func4_0(0) = 1 = F(2)`) 需要满足:\n ```c\n func4_0(k) = F(k+1) = F(20)\n ```\n 解得:\n k + 1 = 20 → k = 19\n- `k = N / 2000` → `N = 2000 * k = 2000 * 19 = 38000`.\n从而得解。\n![phase_4](/images/phase_4.png)\n\n---\n\n## **Phase_Impossible**\n\nImpossible?\n\n从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:\n```c\nvoid phase_impossible(char *param_1)\n\n{\n int iVar1;\n size_t sVar2;\n undefined local_118 [256];\n long local_18;\n long local_10;\n \n local_10 = GetTickCount();\n sVar2 = strlen(param_1);\n if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {\n explode_bomb();\n }\n memset(local_118,0,0x100);\n tohex(local_118,param_1);\n GenerateRandomNumber(0x400);\n iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);\n if (iVar1 == 0) {\n puts(&DAT_00406518);\n explode_bomb();\n }\n GenerateRandomNumber(3);\n if (rand_div != 2) {\n if (2 < rand_div) goto LAB_00401891;\n if (rand_div == 0) {\n goto_buf_0(local_118);\n }\n else if (rand_div != 1) goto LAB_00401891;\n goto_buf_1(local_118);\n }\n goto_buf_2(local_118);\nLAB_00401891:\n explode_bomb();\n GenerateRandomNumber(0x400);\n if ((long)(int)result != rand_div) {\n printf(&DAT_00406560,rand_div,(ulong)result);\n explode_bomb();\n }\n local_18 = GetTickCount();\n if (1000 < (ulong)(local_18 - local_10)) {\n puts(&DAT_004065a8);\n explode_bomb();\n }\n return;\n}\n```\n最终任务还是很明确的,需要写一段机器码修改`result`的数值,但是注意要能通过`check_buf_valid`检测,并且最后指令必须是跳转到`0x401896`不然就会触发`phase_impossible`中`0x401891`处的`explode_bomb`函数,唯一的难点是跟踪`rand_div`的数值变化,建议使用`register write`来修改`check_buf_valid`的返回值使其强制通过然后监控`rand_div`每一次的数值变化(`x/gx &rand_div`),记录好`rand_div`的结果后开始指令设计,需要满足:\n\n - 指令的异或和为`rand_div`第一次的数值末尾八位以通过检查;\n - 修改`result`使其数值等于`rand_div`第三次数值;\n - 跳转到`0x401896`避免炸弹;\n\n 如果前几问都完成了到这里应该是没有问题的。\n\n---\n\n## **Phase_Secret**\n\n隐藏彩蛋,并非隐藏。汇编里写的非常清楚:\n```assembly\n0000000000401a8b :\n 401a8b:\tf3 0f 1e fa \tendbr64\n 401a8f:\t55 \tpush %rbp\n 401a90:\t48 89 e5 \tmov %rsp,%rbp\n 401a93:\t48 83 ec 10 \tsub $0x10,%rsp\n 401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>\n 401aa2:\t48 89 c7 \tmov %rax,%rdi\n 401aa5:\te8 76 f6 ff ff \tcall 401120 \n 401aaa:\t90 \tnop\n 401aab:\tc9 \tleave\n 401aac:\tc3 \tret\n```\n注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在`phase_5`中设计指令时加一个要求跳转到`0x401a8b`即可。\n\n完结\n![Case Closed](/images/caseclosed.png)\n","source":"_posts/nudtbomblab.md","raw":"---\ntitle: 高地特供版CSAPP Bomb Lab全流程攻略\ndate: 2025-02-24 15:09:11\ntags: [技术, 学习, 生活]\n---\n\n这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。\n\n笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。\n\n## **Phase_1**\n\n### **静态分析**\n\n#### **`strings`扫描**\n```bash\nstrings bomb_linux\n```\n先用strings寻找可能与`phase_1`相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。\n![strings](/images/phase1_strings.png)\n - 结果没有明文密码无法直接秒掉第一问,可惜。\n - 但是找到`GenerateRandomString`函数可能与密码生成相关。\n\n#### **用`objdump`反汇编**\n```bash\nobjdump -d bomb_linux > bomb.asm\n```\n搜索`GenerateRandomString`和`phase_1`函数的汇编代码。\n ```assembly\n 401b53 :\n 401b53: endbr64\n 401b57: push %rbp\n 401b58: mov %rsp,%rbp\n 401b5b: sub $0x20,%rsp\n 401b5f: mov %rdi,-0x18(%rbp)\n 401b63: lea -0xb(%rbp),%rax\n 401b67: mov %rax,%rdi\n 401b6a: callq 401ac1 # 调用密码生成函数\n 401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置\n 401b73: mov -0x18(%rbp),%rax\n 401b77: mov %rdx,%rsi\n 401b7a: mov %rax,%rdi\n 401b7d: callq 401c0c # 调用字符串比较函数\n 401b82: test %eax,%eax\n 401b84: je 401b8d \n 401b86: callq 401d67 # 比较失败则引爆炸弹\n ```\n - `phase_1`调用`GenerateRandomString`生成一个字符串。\n - 用户输入的字符串需要与此生成的字符串完全匹配。\n\n---\n\n### **动态调试**\n![phase_1](/images/phase1.png)\n下面是phase_1求解的完整流程:\n```lldb\nlldb bomb_linux <你的学号后六位>\n(lldb) b phase_1 # 在phase_1入口断点\n(lldb) run # 从入口开始执行\n请输入第1级的密码:114514 # 随便输入触发断点\n(lldb) b 0x401b6f # 在GenerateRandomString返回后断点\n(lldb) continue # 继续执行\n(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)\n0x7fffffffdaf5: \"mJHurpQZtY\" # 轻松拿下,这里是根据学号伪随机生成的哦\n```\n将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。\n\n---\n\n## **Phase_2**\n\n### **静态分析**\n\n这道题目还是比较一目了然的,观察`phase_2`代码不难发现其实构建了一张跳转表:\n```assembly\n0000000000401b8e :\n 401b8e:\tf3 0f 1e fa \tendbr64\n 401b92:\t55 \tpush %rbp\n 401b93:\t48 89 e5 \tmov %rsp,%rbp\n 401b96:\t48 83 ec 10 \tsub $0x10,%rsp\n 401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi\n 401ba3:\te8 05 fb ff ff \tcall 4016ad \n 401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 \n 401baf:\t48 83 f8 0f \tcmp $0xf,%rax\n 401bb3:\t0f 87 16 01 00 00 \tja 401ccf \n 401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 401bc0:\t00 \n 401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>\n 401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 401bcb:\t48 98 \tcltq\n 401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>\n 401bd4:\t48 01 d0 \tadd %rdx,%rax\n 401bd7:\t3e ff e0 \tnotrack jmp *%rax\n 401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bde:\t48 89 c7 \tmov %rax,%rdi\n 401be1:\te8 f2 00 00 00 \tcall 401cd8 \n 401be6:\te9 ea 00 00 00 \tjmp 401cd5 \n 401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bef:\t48 89 c7 \tmov %rax,%rdi\n 401bf2:\te8 8b 01 00 00 \tcall 401d82 \n 401bf7:\te9 d9 00 00 00 \tjmp 401cd5 \n 401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401c00:\t48 89 c7 \tmov %rax,%rdi\n ...\n```\n这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是`GenerateRandomNumber`这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。\n\n---\n\n### **动态调试**\n理解原理就没什么难度了,自己找几个断点打好然后关注一下`rand_div`的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向`phase_2_14`跳转:\n![phase_2_14](/images/phase_2_14.png)\n\n而除了`phase_2_14`还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。\n\n---\n## **Phase_3**\n\n### **静态分析**\n\n和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi\n\n本体其实没有什么好说的,这里我跳转的方向是`Phase_3_5`简要解释一下可供参考:\n\n```assembly\n0000000000403001 :\n 403001:\tf3 0f 1e fa \tendbr64\n 403005:\t55 \tpush %rbp\n 403006:\t48 89 e5 \tmov %rsp,%rbp\n 403009:\t48 83 ec 20 \tsub $0x20,%rsp\n 40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)\n 403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)\n 403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)\n 40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx\n 403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx\n 403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax\n 40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>\n 403032:\t48 89 c7 \tmov %rax,%rdi\n 403035:\tb8 00 00 00 00 \tmov $0x0,%eax\n 40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n 40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)\n 403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)\n 403046:\t7f 05 \tjg 40304d \n 403048:\te8 a9 2b 00 00 \tcall 405bf6 \n 40304d:\tbf 08 00 00 00 \tmov $0x8,%edi\n 403052:\te8 56 e6 ff ff \tcall 4016ad \n 403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40305a:\t48 63 d0 \tmovslq %eax,%rdx\n 40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 \n 403064:\t48 39 c2 \tcmp %rax,%rdx\n 403067:\t74 05 \tje 40306e \n 403069:\te8 88 2b 00 00 \tcall 405bf6 \n 40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 403073:\te8 35 e6 ff ff \tcall 4016ad \n 403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40307b:\t83 f8 07 \tcmp $0x7,%eax\n 40307e:\t0f 87 eb 00 00 00 \tja 40316f \n 403084:\t89 c0 \tmov %eax,%eax\n 403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 40308d:\t00 \n 40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>\n 403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 403098:\t48 98 \tcltq\n 40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>\n 4030a1:\t48 01 d0 \tadd %rdx,%rax\n 4030a4:\t3e ff e0 \tnotrack jmp *%rax\n 4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 \n 4030ae:\t89 c2 \tmov %eax,%edx\n 4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax\n 4030b3:\t01 d0 \tadd %edx,%eax\n 4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)\n 4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 4030bd:\te8 eb e5 ff ff \tcall 4016ad \n ...\n 403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax\n 403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里\n 40317a:\t74 05 \tje 403181 \n 40317c:\te8 75 2a 00 00 \tcall 405bf6 \n 403181:\t90 \tnop\n 403182:\tc9 \tleave\n 403183:\tc3 \tret\n\n```\n看起来一大堆很吓人对不对?实际上确实很吓人。\n\n但是发现其中玄机后其实简单的没边,最终答案就藏在`0x403177`里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接`run`一下重开qwq)。\n\n---\n\n### **动态调试**\n\n阅读`Phase_3_5`发现这一关其实需要两个输入,并且第一个输入必须是`rand_div`,这里建议通过`si`单步执行监控好`rand_div`值变化,确定正确结果后使用`run`重开正确输入第一个密码后才能进行下一步求解:\n```lldb\n(lldb) si\nProcess 13376 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377\nbomb_linux`phase_3_5:\n-> 0x40317a <+377>: je 0x403181 ; <+384>\n 0x40317c <+379>: callq 0x405bf6 ; explode_bomb\n 0x403181 <+384>: nop\n 0x403182 <+385>: leave\n(lldb) x/wx $rbp-0x4\n0x7fffffffdb0c: 0xffffffd7\n```\n例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。\n\n---\n\n## **Phase_4**\n\n### **静态分析**\n\n本题依旧开局跳转,笔者的跳转方向是`phase_4_01`,如何跳转不再强调关注`rand_div`的值即可,下面请D指导解读一下`phase_4_01`的内容:\n```assembly\n0000000000404895 :\n ; 函数入口,初始化栈帧\n 404895:\tf3 0f 1e fa \tendbr64 \n 404899:\t55 \tpush %rbp\n 40489a:\t48 89 e5 \tmov %rsp,%rbp\n 40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间\n\n ; 初始化斐波那契数组(F(10)~F(24)的十六进制值)\n 4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针\n 4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55\n 4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89\n 4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144\n 4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233\n 4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377\n 4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610\n 4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987\n 4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597\n 4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584\n 4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181\n 4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765\n 4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946\n 4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711\n 404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657\n 404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368\n\n ; 读取输入到局部变量(格式为\"%d\")\n 40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址\n 404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串\n 404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串\"%d\"\n 40491d:\t48 89 ce \tmov %rcx,%rsi\n 404920:\t48 89 c7 \tmov %rax,%rdi\n 404923:\tb8 00 00 00 00 \tmov $0x0,%eax\n 404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n\n ; 验证输入有效性(必须为1个正数)\n 40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值\n 404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数\n 404934:\t75 07 \tjne 40493d ; 失败则爆炸\n 404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N\n 404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0\n 40493b:\t7f 05 \tjg 404942 \n 40493d:\te8 b4 12 00 00 \tcall 405bf6 \n\n ; 检查输入值上限(必须 > 1999)\n 404942:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制\n 40494a:\t7f 05 \tjg 404951 ; N > 1999?\n 40494c:\te8 a5 12 00 00 \tcall 405bf6 \n\n ; 计算 N/2000(通过定点数乘法优化)\n 404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N\n 404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展\n 404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)\n 40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位\n 404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000\n 404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展\n 404968:\t89 c1 \tmov %eax,%ecx \n 40496a:\t89 d0 \tmov %edx,%eax \n 40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况\n 40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000\n\n ; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列\n 404971:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404974:\t89 c7 \tmov %eax,%edi ; 参数k\n 404976:\te8 ce fd ff ff \tcall 404749 ; 返回值eax=F(k+1)\n 40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果\n\n ; 生成随机索引并验证结果\n 40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15\n 404983:\te8 25 cd ff ff \tcall 4016ad ; 生成0~14随机数\n 404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 ; 获取随机索引\n 40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值\n 404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?\n 404996:\t74 05 \tje 40499d \n 404998:\te8 59 12 00 00 \tcall 405bf6 \n```\n所以相对还是很明了的,依旧是关注`rand_div`。\n\n### **动态调试**\n先找出`rand_div`在最后判断前的取值,比如我下面的0xa:\n\n```lldb\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108\nbomb_linux`GenerateRandomNumber:\n-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div\n 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115\nbomb_linux`GenerateRandomNumber:\n-> 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n 0x401724 <+119>: retq\n(lldb) x/gx &rand_div\n0x00408820: 0x000000000000000a\n```\n\n而当 `rand_div = 0xa`(即十进制 **10**)时,输入值 `N` 的计算步骤如下:\n\n- 数组索引 **10** 的值是 **斐波那契数列第 20 项**(`F(20) = 6765`)。\n\n- `func4_0(k)` 实际计算的是 **标准斐波那契数列的第 `k+1` 项**(例如,`func4_0(0) = 1 = F(2)`) 需要满足:\n ```c\n func4_0(k) = F(k+1) = F(20)\n ```\n 解得:\n k + 1 = 20 → k = 19\n- `k = N / 2000` → `N = 2000 * k = 2000 * 19 = 38000`.\n从而得解。\n![phase_4](/images/phase_4.png)\n\n---\n\n## **Phase_Impossible**\n\nImpossible?\n\n从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:\n```c\nvoid phase_impossible(char *param_1)\n\n{\n int iVar1;\n size_t sVar2;\n undefined local_118 [256];\n long local_18;\n long local_10;\n \n local_10 = GetTickCount();\n sVar2 = strlen(param_1);\n if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {\n explode_bomb();\n }\n memset(local_118,0,0x100);\n tohex(local_118,param_1);\n GenerateRandomNumber(0x400);\n iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);\n if (iVar1 == 0) {\n puts(&DAT_00406518);\n explode_bomb();\n }\n GenerateRandomNumber(3);\n if (rand_div != 2) {\n if (2 < rand_div) goto LAB_00401891;\n if (rand_div == 0) {\n goto_buf_0(local_118);\n }\n else if (rand_div != 1) goto LAB_00401891;\n goto_buf_1(local_118);\n }\n goto_buf_2(local_118);\nLAB_00401891:\n explode_bomb();\n GenerateRandomNumber(0x400);\n if ((long)(int)result != rand_div) {\n printf(&DAT_00406560,rand_div,(ulong)result);\n explode_bomb();\n }\n local_18 = GetTickCount();\n if (1000 < (ulong)(local_18 - local_10)) {\n puts(&DAT_004065a8);\n explode_bomb();\n }\n return;\n}\n```\n最终任务还是很明确的,需要写一段机器码修改`result`的数值,但是注意要能通过`check_buf_valid`检测,并且最后指令必须是跳转到`0x401896`不然就会触发`phase_impossible`中`0x401891`处的`explode_bomb`函数,唯一的难点是跟踪`rand_div`的数值变化,建议使用`register write`来修改`check_buf_valid`的返回值使其强制通过然后监控`rand_div`每一次的数值变化(`x/gx &rand_div`),记录好`rand_div`的结果后开始指令设计,需要满足:\n\n - 指令的异或和为`rand_div`第一次的数值末尾八位以通过检查;\n - 修改`result`使其数值等于`rand_div`第三次数值;\n - 跳转到`0x401896`避免炸弹;\n\n 如果前几问都完成了到这里应该是没有问题的。\n\n---\n\n## **Phase_Secret**\n\n隐藏彩蛋,并非隐藏。汇编里写的非常清楚:\n```assembly\n0000000000401a8b :\n 401a8b:\tf3 0f 1e fa \tendbr64\n 401a8f:\t55 \tpush %rbp\n 401a90:\t48 89 e5 \tmov %rsp,%rbp\n 401a93:\t48 83 ec 10 \tsub $0x10,%rsp\n 401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>\n 401aa2:\t48 89 c7 \tmov %rax,%rdi\n 401aa5:\te8 76 f6 ff ff \tcall 401120 \n 401aaa:\t90 \tnop\n 401aab:\tc9 \tleave\n 401aac:\tc3 \tret\n```\n注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在`phase_5`中设计指令时加一个要求跳转到`0x401a8b`即可。\n\n完结\n![Case Closed](/images/caseclosed.png)\n","slug":"nudtbomblab","published":1,"updated":"2025-02-25T03:56:35.270Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescx001gog2b9r0jg006","content":"

这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。

\n

笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。

\n

Phase_1

静态分析

strings扫描

1
strings bomb_linux
\n

先用strings寻找可能与phase_1相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。
\"strings\"

\n
    \n
  • 结果没有明文密码无法直接秒掉第一问,可惜。
  • \n
  • 但是找到GenerateRandomString函数可能与密码生成相关。
  • \n
\n

objdump反汇编

1
objdump -d bomb_linux > bomb.asm
\n

搜索GenerateRandomStringphase_1函数的汇编代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
401b53 <phase_1>:
401b53: endbr64
401b57: push %rbp
401b58: mov %rsp,%rbp
401b5b: sub $0x20,%rsp
401b5f: mov %rdi,-0x18(%rbp)
401b63: lea -0xb(%rbp),%rax
401b67: mov %rax,%rdi
401b6a: callq 401ac1 <GenerateRandomString> # 调用密码生成函数
401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置
401b73: mov -0x18(%rbp),%rax
401b77: mov %rdx,%rsi
401b7a: mov %rax,%rdi
401b7d: callq 401c0c <string_compare> # 调用字符串比较函数
401b82: test %eax,%eax
401b84: je 401b8d <phase_1+0x3a>
401b86: callq 401d67 <explode_bomb> # 比较失败则引爆炸弹

\n
    \n
  • phase_1调用GenerateRandomString生成一个字符串。
  • \n
  • 用户输入的字符串需要与此生成的字符串完全匹配。
  • \n
\n
\n

动态调试

\"phase_1\"
下面是phase_1求解的完整流程:

\n
1
2
3
4
5
6
7
8
lldb bomb_linux <你的学号后六位>
(lldb) b phase_1 # 在phase_1入口断点
(lldb) run # 从入口开始执行
请输入第1级的密码:114514 # 随便输入触发断点
(lldb) b 0x401b6f # 在GenerateRandomString返回后断点
(lldb) continue # 继续执行
(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)
0x7fffffffdaf5: "mJHurpQZtY" # 轻松拿下,这里是根据学号伪随机生成的哦
\n

将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。

\n
\n

Phase_2

静态分析

这道题目还是比较一目了然的,观察phase_2代码不难发现其实构建了一张跳转表:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0000000000401b8e <phase_2>:
401b8e:\tf3 0f 1e fa \tendbr64
401b92:\t55 \tpush %rbp
401b93:\t48 89 e5 \tmov %rsp,%rbp
401b96:\t48 83 ec 10 \tsub $0x10,%rsp
401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi
401ba3:\te8 05 fb ff ff \tcall 4016ad <GenerateRandomNumber>
401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 <rand_div>
401baf:\t48 83 f8 0f \tcmp $0xf,%rax
401bb3:\t0f 87 16 01 00 00 \tja 401ccf <phase_2+0x141>
401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
401bc0:\t00
401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>
401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
401bcb:\t48 98 \tcltq
401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>
401bd4:\t48 01 d0 \tadd %rdx,%rax
401bd7:\t3e ff e0 \tnotrack jmp *%rax
401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bde:\t48 89 c7 \tmov %rax,%rdi
401be1:\te8 f2 00 00 00 \tcall 401cd8 <phase_2_0>
401be6:\te9 ea 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bef:\t48 89 c7 \tmov %rax,%rdi
401bf2:\te8 8b 01 00 00 \tcall 401d82 <phase_2_1>
401bf7:\te9 d9 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401c00:\t48 89 c7 \tmov %rax,%rdi
...
\n

这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是GenerateRandomNumber这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。

\n
\n

动态调试

理解原理就没什么难度了,自己找几个断点打好然后关注一下rand_div的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向phase_2_14跳转:
\"phase_2_14\"

\n

而除了phase_2_14还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。

\n
\n

Phase_3

静态分析

和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi

\n

本体其实没有什么好说的,这里我跳转的方向是Phase_3_5简要解释一下可供参考:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
0000000000403001 <phase_3_5>:
403001:\tf3 0f 1e fa \tendbr64
403005:\t55 \tpush %rbp
403006:\t48 89 e5 \tmov %rsp,%rbp
403009:\t48 83 ec 20 \tsub $0x20,%rsp
40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)
403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)
403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)
40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx
403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx
403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax
40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>
403032:\t48 89 c7 \tmov %rax,%rdi
403035:\tb8 00 00 00 00 \tmov $0x0,%eax
40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>
40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)
403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)
403046:\t7f 05 \tjg 40304d <phase_3_5+0x4c>
403048:\te8 a9 2b 00 00 \tcall 405bf6 <explode_bomb>
40304d:\tbf 08 00 00 00 \tmov $0x8,%edi
403052:\te8 56 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40305a:\t48 63 d0 \tmovslq %eax,%rdx
40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 <rand_div>
403064:\t48 39 c2 \tcmp %rax,%rdx
403067:\t74 05 \tje 40306e <phase_3_5+0x6d>
403069:\te8 88 2b 00 00 \tcall 405bf6 <explode_bomb>
40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi
403073:\te8 35 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40307b:\t83 f8 07 \tcmp $0x7,%eax
40307e:\t0f 87 eb 00 00 00 \tja 40316f <phase_3_5+0x16e>
403084:\t89 c0 \tmov %eax,%eax
403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
40308d:\t00
40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>
403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
403098:\t48 98 \tcltq
40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>
4030a1:\t48 01 d0 \tadd %rdx,%rax
4030a4:\t3e ff e0 \tnotrack jmp *%rax
4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 <rand_div>
4030ae:\t89 c2 \tmov %eax,%edx
4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax
4030b3:\t01 d0 \tadd %edx,%eax
4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)
4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi
4030bd:\te8 eb e5 ff ff \tcall 4016ad <GenerateRandomNumber>
...
403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax
403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里
40317a:\t74 05 \tje 403181 <phase_3_5+0x180>
40317c:\te8 75 2a 00 00 \tcall 405bf6 <explode_bomb>
403181:\t90 \tnop
403182:\tc9 \tleave
403183:\tc3 \tret

\n

看起来一大堆很吓人对不对?实际上确实很吓人。

\n

但是发现其中玄机后其实简单的没边,最终答案就藏在0x403177里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接run一下重开qwq)。

\n
\n

动态调试

阅读Phase_3_5发现这一关其实需要两个输入,并且第一个输入必须是rand_div,这里建议通过si单步执行监控好rand_div值变化,确定正确结果后使用run重开正确输入第一个密码后才能进行下一步求解:

\n
1
2
3
4
5
6
7
8
9
10
11
(lldb) si
Process 13376 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377
bomb_linux`phase_3_5:
-> 0x40317a <+377>: je 0x403181 ; <+384>
0x40317c <+379>: callq 0x405bf6 ; explode_bomb
0x403181 <+384>: nop
0x403182 <+385>: leave
(lldb) x/wx $rbp-0x4
0x7fffffffdb0c: 0xffffffd7
\n

例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。

\n
\n

Phase_4

静态分析

本题依旧开局跳转,笔者的跳转方向是phase_4_01,如何跳转不再强调关注rand_div的值即可,下面请D指导解读一下phase_4_01的内容:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
0000000000404895 <phase_4_01>:
; 函数入口,初始化栈帧
404895:\tf3 0f 1e fa \tendbr64
404899:\t55 \tpush %rbp
40489a:\t48 89 e5 \tmov %rsp,%rbp
40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间

; 初始化斐波那契数组(F(10)~F(24)的十六进制值)
4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针
4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55
4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89
4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144
4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233
4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377
4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610
4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987
4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597
4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584
4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181
4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765
4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946
4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711
404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657
404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368

; 读取输入到局部变量(格式为"%d")
40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址
404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串
404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串"%d"
40491d:\t48 89 ce \tmov %rcx,%rsi
404920:\t48 89 c7 \tmov %rax,%rdi
404923:\tb8 00 00 00 00 \tmov $0x0,%eax
404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>

; 验证输入有效性(必须为1个正数)
40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值
404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数
404934:\t75 07 \tjne 40493d <phase_4_01+0xa8> ; 失败则爆炸
404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N
404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0
40493b:\t7f 05 \tjg 404942 <phase_4_01+0xad>
40493d:\te8 b4 12 00 00 \tcall 405bf6 <explode_bomb>

; 检查输入值上限(必须 > 1999)
404942:\t8b 45 ac \tmov -0x54(%rbp),%eax
404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制
40494a:\t7f 05 \tjg 404951 <phase_4_01+0xbc> ; N > 1999?
40494c:\te8 a5 12 00 00 \tcall 405bf6 <explode_bomb>

; 计算 N/2000(通过定点数乘法优化)
404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N
404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展
404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)
40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位
404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000
404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展
404968:\t89 c1 \tmov %eax,%ecx
40496a:\t89 d0 \tmov %edx,%eax
40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况
40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000

; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列
404971:\t8b 45 ac \tmov -0x54(%rbp),%eax
404974:\t89 c7 \tmov %eax,%edi ; 参数k
404976:\te8 ce fd ff ff \tcall 404749 <func4_0> ; 返回值eax=F(k+1)
40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果

; 生成随机索引并验证结果
40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15
404983:\te8 25 cd ff ff \tcall 4016ad <GenerateRandomNumber> ; 生成0~14随机数
404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 <rand_div> ; 获取随机索引
40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值
404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?
404996:\t74 05 \tje 40499d <phase_4_01+0x108>
404998:\te8 59 12 00 00 \tcall 405bf6 <explode_bomb>
\n

所以相对还是很明了的,依旧是关注rand_div

\n

动态调试

先找出rand_div在最后判断前的取值,比如我下面的0xa:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108
bomb_linux`GenerateRandomNumber:
-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div
0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115
bomb_linux`GenerateRandomNumber:
-> 0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
0x401724 <+119>: retq
(lldb) x/gx &rand_div
0x00408820: 0x000000000000000a
\n\n

而当 rand_div = 0xa(即十进制 10)时,输入值 N 的计算步骤如下:

\n
    \n
  • 数组索引 10 的值是 斐波那契数列第 20 项F(20) = 6765)。

    \n
  • \n
  • func4_0(k) 实际计算的是 标准斐波那契数列的第 k+1(例如,func4_0(0) = 1 = F(2)) 需要满足:

    \n
    1
    func4_0(k) = F(k+1) = F(20)
    \n

    解得:
    k + 1 = 20 → k = 19

    \n
  • \n
  • k = N / 2000N = 2000 * k = 2000 * 19 = 38000.
    从而得解。
    \"phase_4\"

    \n
  • \n
\n
\n

Phase_Impossible

Impossible?

\n

从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void phase_impossible(char *param_1)

{
int iVar1;
size_t sVar2;
undefined local_118 [256];
long local_18;
long local_10;

local_10 = GetTickCount();
sVar2 = strlen(param_1);
if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {
explode_bomb();
}
memset(local_118,0,0x100);
tohex(local_118,param_1);
GenerateRandomNumber(0x400);
iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);
if (iVar1 == 0) {
puts(&DAT_00406518);
explode_bomb();
}
GenerateRandomNumber(3);
if (rand_div != 2) {
if (2 < rand_div) goto LAB_00401891;
if (rand_div == 0) {
goto_buf_0(local_118);
}
else if (rand_div != 1) goto LAB_00401891;
goto_buf_1(local_118);
}
goto_buf_2(local_118);
LAB_00401891:
explode_bomb();
GenerateRandomNumber(0x400);
if ((long)(int)result != rand_div) {
printf(&DAT_00406560,rand_div,(ulong)result);
explode_bomb();
}
local_18 = GetTickCount();
if (1000 < (ulong)(local_18 - local_10)) {
puts(&DAT_004065a8);
explode_bomb();
}
return;
}
\n

最终任务还是很明确的,需要写一段机器码修改result的数值,但是注意要能通过check_buf_valid检测,并且最后指令必须是跳转到0x401896不然就会触发phase_impossible0x401891处的explode_bomb函数,唯一的难点是跟踪rand_div的数值变化,建议使用register write来修改check_buf_valid的返回值使其强制通过然后监控rand_div每一次的数值变化(x/gx &rand_div),记录好rand_div的结果后开始指令设计,需要满足:

\n
    \n
  • 指令的异或和为rand_div第一次的数值末尾八位以通过检查;
  • \n
  • 修改result使其数值等于rand_div第三次数值;
  • \n
  • 跳转到0x401896避免炸弹;
  • \n
\n

如果前几问都完成了到这里应该是没有问题的。

\n
\n

Phase_Secret

隐藏彩蛋,并非隐藏。汇编里写的非常清楚:

\n
1
2
3
4
5
6
7
8
9
10
11
12
0000000000401a8b <phase_secret>:
401a8b:\tf3 0f 1e fa \tendbr64
401a8f:\t55 \tpush %rbp
401a90:\t48 89 e5 \tmov %rsp,%rbp
401a93:\t48 83 ec 10 \tsub $0x10,%rsp
401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>
401aa2:\t48 89 c7 \tmov %rax,%rdi
401aa5:\te8 76 f6 ff ff \tcall 401120 <puts@plt>
401aaa:\t90 \tnop
401aab:\tc9 \tleave
401aac:\tc3 \tret
\n

注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在phase_5中设计指令时加一个要求跳转到0x401a8b即可。

\n

完结
\"Case

\n","excerpt":"","more":"

这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。

\n

笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。

\n

Phase_1

静态分析

strings扫描

1
strings bomb_linux
\n

先用strings寻找可能与phase_1相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。
\"strings\"

\n
    \n
  • 结果没有明文密码无法直接秒掉第一问,可惜。
  • \n
  • 但是找到GenerateRandomString函数可能与密码生成相关。
  • \n
\n

objdump反汇编

1
objdump -d bomb_linux > bomb.asm
\n

搜索GenerateRandomStringphase_1函数的汇编代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
401b53 <phase_1>:
401b53: endbr64
401b57: push %rbp
401b58: mov %rsp,%rbp
401b5b: sub $0x20,%rsp
401b5f: mov %rdi,-0x18(%rbp)
401b63: lea -0xb(%rbp),%rax
401b67: mov %rax,%rdi
401b6a: callq 401ac1 <GenerateRandomString> # 调用密码生成函数
401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置
401b73: mov -0x18(%rbp),%rax
401b77: mov %rdx,%rsi
401b7a: mov %rax,%rdi
401b7d: callq 401c0c <string_compare> # 调用字符串比较函数
401b82: test %eax,%eax
401b84: je 401b8d <phase_1+0x3a>
401b86: callq 401d67 <explode_bomb> # 比较失败则引爆炸弹

\n
    \n
  • phase_1调用GenerateRandomString生成一个字符串。
  • \n
  • 用户输入的字符串需要与此生成的字符串完全匹配。
  • \n
\n
\n

动态调试

\"phase_1\"
下面是phase_1求解的完整流程:

\n
1
2
3
4
5
6
7
8
lldb bomb_linux <你的学号后六位>
(lldb) b phase_1 # 在phase_1入口断点
(lldb) run # 从入口开始执行
请输入第1级的密码:114514 # 随便输入触发断点
(lldb) b 0x401b6f # 在GenerateRandomString返回后断点
(lldb) continue # 继续执行
(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)
0x7fffffffdaf5: "mJHurpQZtY" # 轻松拿下,这里是根据学号伪随机生成的哦
\n

将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。

\n
\n

Phase_2

静态分析

这道题目还是比较一目了然的,观察phase_2代码不难发现其实构建了一张跳转表:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0000000000401b8e <phase_2>:
401b8e:\tf3 0f 1e fa \tendbr64
401b92:\t55 \tpush %rbp
401b93:\t48 89 e5 \tmov %rsp,%rbp
401b96:\t48 83 ec 10 \tsub $0x10,%rsp
401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi
401ba3:\te8 05 fb ff ff \tcall 4016ad <GenerateRandomNumber>
401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 <rand_div>
401baf:\t48 83 f8 0f \tcmp $0xf,%rax
401bb3:\t0f 87 16 01 00 00 \tja 401ccf <phase_2+0x141>
401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
401bc0:\t00
401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>
401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
401bcb:\t48 98 \tcltq
401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>
401bd4:\t48 01 d0 \tadd %rdx,%rax
401bd7:\t3e ff e0 \tnotrack jmp *%rax
401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bde:\t48 89 c7 \tmov %rax,%rdi
401be1:\te8 f2 00 00 00 \tcall 401cd8 <phase_2_0>
401be6:\te9 ea 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bef:\t48 89 c7 \tmov %rax,%rdi
401bf2:\te8 8b 01 00 00 \tcall 401d82 <phase_2_1>
401bf7:\te9 d9 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401c00:\t48 89 c7 \tmov %rax,%rdi
...
\n

这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是GenerateRandomNumber这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。

\n
\n

动态调试

理解原理就没什么难度了,自己找几个断点打好然后关注一下rand_div的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向phase_2_14跳转:
\"phase_2_14\"

\n

而除了phase_2_14还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。

\n
\n

Phase_3

静态分析

和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi

\n

本体其实没有什么好说的,这里我跳转的方向是Phase_3_5简要解释一下可供参考:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
0000000000403001 <phase_3_5>:
403001:\tf3 0f 1e fa \tendbr64
403005:\t55 \tpush %rbp
403006:\t48 89 e5 \tmov %rsp,%rbp
403009:\t48 83 ec 20 \tsub $0x20,%rsp
40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)
403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)
403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)
40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx
403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx
403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax
40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>
403032:\t48 89 c7 \tmov %rax,%rdi
403035:\tb8 00 00 00 00 \tmov $0x0,%eax
40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>
40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)
403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)
403046:\t7f 05 \tjg 40304d <phase_3_5+0x4c>
403048:\te8 a9 2b 00 00 \tcall 405bf6 <explode_bomb>
40304d:\tbf 08 00 00 00 \tmov $0x8,%edi
403052:\te8 56 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40305a:\t48 63 d0 \tmovslq %eax,%rdx
40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 <rand_div>
403064:\t48 39 c2 \tcmp %rax,%rdx
403067:\t74 05 \tje 40306e <phase_3_5+0x6d>
403069:\te8 88 2b 00 00 \tcall 405bf6 <explode_bomb>
40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi
403073:\te8 35 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40307b:\t83 f8 07 \tcmp $0x7,%eax
40307e:\t0f 87 eb 00 00 00 \tja 40316f <phase_3_5+0x16e>
403084:\t89 c0 \tmov %eax,%eax
403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
40308d:\t00
40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>
403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
403098:\t48 98 \tcltq
40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>
4030a1:\t48 01 d0 \tadd %rdx,%rax
4030a4:\t3e ff e0 \tnotrack jmp *%rax
4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 <rand_div>
4030ae:\t89 c2 \tmov %eax,%edx
4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax
4030b3:\t01 d0 \tadd %edx,%eax
4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)
4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi
4030bd:\te8 eb e5 ff ff \tcall 4016ad <GenerateRandomNumber>
...
403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax
403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里
40317a:\t74 05 \tje 403181 <phase_3_5+0x180>
40317c:\te8 75 2a 00 00 \tcall 405bf6 <explode_bomb>
403181:\t90 \tnop
403182:\tc9 \tleave
403183:\tc3 \tret

\n

看起来一大堆很吓人对不对?实际上确实很吓人。

\n

但是发现其中玄机后其实简单的没边,最终答案就藏在0x403177里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接run一下重开qwq)。

\n
\n

动态调试

阅读Phase_3_5发现这一关其实需要两个输入,并且第一个输入必须是rand_div,这里建议通过si单步执行监控好rand_div值变化,确定正确结果后使用run重开正确输入第一个密码后才能进行下一步求解:

\n
1
2
3
4
5
6
7
8
9
10
11
(lldb) si
Process 13376 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377
bomb_linux`phase_3_5:
-> 0x40317a <+377>: je 0x403181 ; <+384>
0x40317c <+379>: callq 0x405bf6 ; explode_bomb
0x403181 <+384>: nop
0x403182 <+385>: leave
(lldb) x/wx $rbp-0x4
0x7fffffffdb0c: 0xffffffd7
\n

例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。

\n
\n

Phase_4

静态分析

本题依旧开局跳转,笔者的跳转方向是phase_4_01,如何跳转不再强调关注rand_div的值即可,下面请D指导解读一下phase_4_01的内容:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
0000000000404895 <phase_4_01>:
; 函数入口,初始化栈帧
404895:\tf3 0f 1e fa \tendbr64
404899:\t55 \tpush %rbp
40489a:\t48 89 e5 \tmov %rsp,%rbp
40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间

; 初始化斐波那契数组(F(10)~F(24)的十六进制值)
4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针
4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55
4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89
4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144
4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233
4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377
4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610
4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987
4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597
4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584
4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181
4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765
4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946
4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711
404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657
404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368

; 读取输入到局部变量(格式为"%d")
40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址
404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串
404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串"%d"
40491d:\t48 89 ce \tmov %rcx,%rsi
404920:\t48 89 c7 \tmov %rax,%rdi
404923:\tb8 00 00 00 00 \tmov $0x0,%eax
404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>

; 验证输入有效性(必须为1个正数)
40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值
404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数
404934:\t75 07 \tjne 40493d <phase_4_01+0xa8> ; 失败则爆炸
404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N
404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0
40493b:\t7f 05 \tjg 404942 <phase_4_01+0xad>
40493d:\te8 b4 12 00 00 \tcall 405bf6 <explode_bomb>

; 检查输入值上限(必须 > 1999)
404942:\t8b 45 ac \tmov -0x54(%rbp),%eax
404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制
40494a:\t7f 05 \tjg 404951 <phase_4_01+0xbc> ; N > 1999?
40494c:\te8 a5 12 00 00 \tcall 405bf6 <explode_bomb>

; 计算 N/2000(通过定点数乘法优化)
404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N
404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展
404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)
40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位
404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000
404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展
404968:\t89 c1 \tmov %eax,%ecx
40496a:\t89 d0 \tmov %edx,%eax
40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况
40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000

; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列
404971:\t8b 45 ac \tmov -0x54(%rbp),%eax
404974:\t89 c7 \tmov %eax,%edi ; 参数k
404976:\te8 ce fd ff ff \tcall 404749 <func4_0> ; 返回值eax=F(k+1)
40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果

; 生成随机索引并验证结果
40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15
404983:\te8 25 cd ff ff \tcall 4016ad <GenerateRandomNumber> ; 生成0~14随机数
404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 <rand_div> ; 获取随机索引
40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值
404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?
404996:\t74 05 \tje 40499d <phase_4_01+0x108>
404998:\te8 59 12 00 00 \tcall 405bf6 <explode_bomb>
\n

所以相对还是很明了的,依旧是关注rand_div

\n

动态调试

先找出rand_div在最后判断前的取值,比如我下面的0xa:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108
bomb_linux`GenerateRandomNumber:
-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div
0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115
bomb_linux`GenerateRandomNumber:
-> 0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
0x401724 <+119>: retq
(lldb) x/gx &rand_div
0x00408820: 0x000000000000000a
\n\n

而当 rand_div = 0xa(即十进制 10)时,输入值 N 的计算步骤如下:

\n
    \n
  • 数组索引 10 的值是 斐波那契数列第 20 项F(20) = 6765)。

    \n
  • \n
  • func4_0(k) 实际计算的是 标准斐波那契数列的第 k+1(例如,func4_0(0) = 1 = F(2)) 需要满足:

    \n
    1
    func4_0(k) = F(k+1) = F(20)
    \n

    解得:
    k + 1 = 20 → k = 19

    \n
  • \n
  • k = N / 2000N = 2000 * k = 2000 * 19 = 38000.
    从而得解。
    \"phase_4\"

    \n
  • \n
\n
\n

Phase_Impossible

Impossible?

\n

从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void phase_impossible(char *param_1)

{
int iVar1;
size_t sVar2;
undefined local_118 [256];
long local_18;
long local_10;

local_10 = GetTickCount();
sVar2 = strlen(param_1);
if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {
explode_bomb();
}
memset(local_118,0,0x100);
tohex(local_118,param_1);
GenerateRandomNumber(0x400);
iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);
if (iVar1 == 0) {
puts(&DAT_00406518);
explode_bomb();
}
GenerateRandomNumber(3);
if (rand_div != 2) {
if (2 < rand_div) goto LAB_00401891;
if (rand_div == 0) {
goto_buf_0(local_118);
}
else if (rand_div != 1) goto LAB_00401891;
goto_buf_1(local_118);
}
goto_buf_2(local_118);
LAB_00401891:
explode_bomb();
GenerateRandomNumber(0x400);
if ((long)(int)result != rand_div) {
printf(&DAT_00406560,rand_div,(ulong)result);
explode_bomb();
}
local_18 = GetTickCount();
if (1000 < (ulong)(local_18 - local_10)) {
puts(&DAT_004065a8);
explode_bomb();
}
return;
}
\n

最终任务还是很明确的,需要写一段机器码修改result的数值,但是注意要能通过check_buf_valid检测,并且最后指令必须是跳转到0x401896不然就会触发phase_impossible0x401891处的explode_bomb函数,唯一的难点是跟踪rand_div的数值变化,建议使用register write来修改check_buf_valid的返回值使其强制通过然后监控rand_div每一次的数值变化(x/gx &rand_div),记录好rand_div的结果后开始指令设计,需要满足:

\n
    \n
  • 指令的异或和为rand_div第一次的数值末尾八位以通过检查;
  • \n
  • 修改result使其数值等于rand_div第三次数值;
  • \n
  • 跳转到0x401896避免炸弹;
  • \n
\n

如果前几问都完成了到这里应该是没有问题的。

\n
\n

Phase_Secret

隐藏彩蛋,并非隐藏。汇编里写的非常清楚:

\n
1
2
3
4
5
6
7
8
9
10
11
12
0000000000401a8b <phase_secret>:
401a8b:\tf3 0f 1e fa \tendbr64
401a8f:\t55 \tpush %rbp
401a90:\t48 89 e5 \tmov %rsp,%rbp
401a93:\t48 83 ec 10 \tsub $0x10,%rsp
401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>
401aa2:\t48 89 c7 \tmov %rax,%rdi
401aa5:\te8 76 f6 ff ff \tcall 401120 <puts@plt>
401aaa:\t90 \tnop
401aab:\tc9 \tleave
401aac:\tc3 \tret
\n

注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在phase_5中设计指令时加一个要求跳转到0x401a8b即可。

\n

完结
\"Case

\n"},{"title":"Overleaf Toolkit踩坑记录","date":"2024-11-06T01:56:18.000Z","_content":"\n在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。\n\n具体流程就不赘述了,先将访问[Overleaf Toolkit官方仓库](https://github.com/overleaf/toolkit)将代码clone下来并按照手册执行即可。\n\n## 问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像\n\n在执行 `bin/up` 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。\n\n截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。\n\n### 解决方案:为 Docker 设置代理\n\n通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:\n\n1. 创建一个 `systemd` 服务文件,为 Docker 设置代理。\n2. 编辑 `/etc/systemd/system/docker.service.d/proxy.conf` 文件,添加以下内容(确保已经设置了代理服务器):\n\n ```ini\n [Service]\n Environment=\"HTTP_PROXY=http://:\"\n Environment=\"HTTPS_PROXY=http://:\"\n Environment=\"NO_PROXY=localhost,127.0.0.1\"\n ```\n\n3. 重新加载 `systemd` 配置并重启 Docker:\n\n ```bash\n sudo systemctl daemon-reload\n sudo systemctl restart docker\n ```\n\n4. 重启 Docker 后再次执行 `sudo ./up`,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。\n\n\n---\n\n## 问题二:外部机器无法访问 Overleaf Web 服务\n\n先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。\n\n注意到在默认的 `lib/docker-compose.base.yml` 配置中,Overleaf Web 服务的端口映射方式为 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"`。\n\n### 解决方案:修改端口映射\n\n在 `docker-compose.base.yml` 文件中,删除 `${OVERLEAF_LISTEN_IP:-127.0.0.1}` 前缀,将 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"` 修改为 `\"${OVERLEAF_PORT:-80}:80\"`。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。\n\n修改后的 `docker-compose.base.yml` 端口映射配置如下:\n\n```yaml\n---\nservices:\n\n sharelatex:\n restart: always\n image: \"${IMAGE}\"\n container_name: sharelatex\n volumes:\n - \"${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}\"\n ports:\n #- \"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"\n - \"${OVERLEAF_PORT:-80}:80\"\n environment:\n GIT_BRIDGE_ENABLED: \"${GIT_BRIDGE_ENABLED}\"\n GIT_BRIDGE_HOST: \"git-bridge\"\n GIT_BRIDGE_PORT: \"8000\"\n REDIS_HOST: \"${REDIS_HOST}\"\n REDIS_PORT: \"${REDIS_PORT}\"\n V1_HISTORY_URL: \"http://sharelatex:3100/api\"\n env_file:\n - ../config/variables.env\n stop_grace_period: 60s\n```\n\n完成修改后,重新启动 Docker 服务:\n\n```bash\nsudo ./start\n```\n\n现在,外部机器可以通过服务器的 IP 地址加端口 `{Overleaf_Port}` 访问 Overleaf Web 服务。\n\n---\n\n## 总结\n\n这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 `docker-compose.base.yml` 中的端口映射使外部设备可以访问 Overleaf 服务。\n\n可以在这里参考我的本地[Overleaf](https://overleaf.hifuu.ink)效果,注意安装完后还需要配置latex包和中文字体。\n\n这篇记录希望能为遇到类似问题的朋友提供帮助。\n","source":"_posts/overleaf.md","raw":"---\ntitle: Overleaf Toolkit踩坑记录\ndate: 2024-11-06 09:56:18\ntags: 技术\ncategories: [技术分享]\n---\n\n在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。\n\n具体流程就不赘述了,先将访问[Overleaf Toolkit官方仓库](https://github.com/overleaf/toolkit)将代码clone下来并按照手册执行即可。\n\n## 问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像\n\n在执行 `bin/up` 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。\n\n截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。\n\n### 解决方案:为 Docker 设置代理\n\n通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:\n\n1. 创建一个 `systemd` 服务文件,为 Docker 设置代理。\n2. 编辑 `/etc/systemd/system/docker.service.d/proxy.conf` 文件,添加以下内容(确保已经设置了代理服务器):\n\n ```ini\n [Service]\n Environment=\"HTTP_PROXY=http://:\"\n Environment=\"HTTPS_PROXY=http://:\"\n Environment=\"NO_PROXY=localhost,127.0.0.1\"\n ```\n\n3. 重新加载 `systemd` 配置并重启 Docker:\n\n ```bash\n sudo systemctl daemon-reload\n sudo systemctl restart docker\n ```\n\n4. 重启 Docker 后再次执行 `sudo ./up`,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。\n\n\n---\n\n## 问题二:外部机器无法访问 Overleaf Web 服务\n\n先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。\n\n注意到在默认的 `lib/docker-compose.base.yml` 配置中,Overleaf Web 服务的端口映射方式为 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"`。\n\n### 解决方案:修改端口映射\n\n在 `docker-compose.base.yml` 文件中,删除 `${OVERLEAF_LISTEN_IP:-127.0.0.1}` 前缀,将 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"` 修改为 `\"${OVERLEAF_PORT:-80}:80\"`。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。\n\n修改后的 `docker-compose.base.yml` 端口映射配置如下:\n\n```yaml\n---\nservices:\n\n sharelatex:\n restart: always\n image: \"${IMAGE}\"\n container_name: sharelatex\n volumes:\n - \"${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}\"\n ports:\n #- \"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"\n - \"${OVERLEAF_PORT:-80}:80\"\n environment:\n GIT_BRIDGE_ENABLED: \"${GIT_BRIDGE_ENABLED}\"\n GIT_BRIDGE_HOST: \"git-bridge\"\n GIT_BRIDGE_PORT: \"8000\"\n REDIS_HOST: \"${REDIS_HOST}\"\n REDIS_PORT: \"${REDIS_PORT}\"\n V1_HISTORY_URL: \"http://sharelatex:3100/api\"\n env_file:\n - ../config/variables.env\n stop_grace_period: 60s\n```\n\n完成修改后,重新启动 Docker 服务:\n\n```bash\nsudo ./start\n```\n\n现在,外部机器可以通过服务器的 IP 地址加端口 `{Overleaf_Port}` 访问 Overleaf Web 服务。\n\n---\n\n## 总结\n\n这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 `docker-compose.base.yml` 中的端口映射使外部设备可以访问 Overleaf 服务。\n\n可以在这里参考我的本地[Overleaf](https://overleaf.hifuu.ink)效果,注意安装完后还需要配置latex包和中文字体。\n\n这篇记录希望能为遇到类似问题的朋友提供帮助。\n","slug":"overleaf","published":1,"updated":"2024-11-06T02:31:56.685Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescx001iog2b666m0tt2","content":"

在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。

\n

具体流程就不赘述了,先将访问Overleaf Toolkit官方仓库将代码clone下来并按照手册执行即可。

\n

问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像

在执行 bin/up 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。

\n

截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。

\n

解决方案:为 Docker 设置代理

通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:

\n
    \n
  1. 创建一个 systemd 服务文件,为 Docker 设置代理。

    \n
  2. \n
  3. 编辑 /etc/systemd/system/docker.service.d/proxy.conf 文件,添加以下内容(确保已经设置了代理服务器):

    \n
    1
    2
    3
    4
    [Service]
    Environment="HTTP_PROXY=http://<your-proxy-server>:<port>"
    Environment="HTTPS_PROXY=http://<your-proxy-server>:<port>"
    Environment="NO_PROXY=localhost,127.0.0.1"
    \n
  4. \n
  5. 重新加载 systemd 配置并重启 Docker:

    \n
    1
    2
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    \n
  6. \n
  7. 重启 Docker 后再次执行 sudo ./up,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。

    \n
  8. \n
\n
\n

问题二:外部机器无法访问 Overleaf Web 服务

先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。

\n

注意到在默认的 lib/docker-compose.base.yml 配置中,Overleaf Web 服务的端口映射方式为 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"

\n

解决方案:修改端口映射

docker-compose.base.yml 文件中,删除 ${OVERLEAF_LISTEN_IP:-127.0.0.1} 前缀,将 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80" 修改为 "${OVERLEAF_PORT:-80}:80"。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。

\n

修改后的 docker-compose.base.yml 端口映射配置如下:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
services:

sharelatex:
restart: always
image: "${IMAGE}"
container_name: sharelatex
volumes:
- "${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}"
ports:
#- "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"
- "${OVERLEAF_PORT:-80}:80"
environment:
GIT_BRIDGE_ENABLED: "${GIT_BRIDGE_ENABLED}"
GIT_BRIDGE_HOST: "git-bridge"
GIT_BRIDGE_PORT: "8000"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
V1_HISTORY_URL: "http://sharelatex:3100/api"
env_file:
- ../config/variables.env
stop_grace_period: 60s
\n\n

完成修改后,重新启动 Docker 服务:

\n
1
sudo ./start
\n\n

现在,外部机器可以通过服务器的 IP 地址加端口 {Overleaf_Port} 访问 Overleaf Web 服务。

\n
\n

总结

这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 docker-compose.base.yml 中的端口映射使外部设备可以访问 Overleaf 服务。

\n

可以在这里参考我的本地Overleaf效果,注意安装完后还需要配置latex包和中文字体。

\n

这篇记录希望能为遇到类似问题的朋友提供帮助。

\n","excerpt":"","more":"

在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。

\n

具体流程就不赘述了,先将访问Overleaf Toolkit官方仓库将代码clone下来并按照手册执行即可。

\n

问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像

在执行 bin/up 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。

\n

截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。

\n

解决方案:为 Docker 设置代理

通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:

\n
    \n
  1. 创建一个 systemd 服务文件,为 Docker 设置代理。

    \n
  2. \n
  3. 编辑 /etc/systemd/system/docker.service.d/proxy.conf 文件,添加以下内容(确保已经设置了代理服务器):

    \n
    1
    2
    3
    4
    [Service]
    Environment="HTTP_PROXY=http://<your-proxy-server>:<port>"
    Environment="HTTPS_PROXY=http://<your-proxy-server>:<port>"
    Environment="NO_PROXY=localhost,127.0.0.1"
    \n
  4. \n
  5. 重新加载 systemd 配置并重启 Docker:

    \n
    1
    2
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    \n
  6. \n
  7. 重启 Docker 后再次执行 sudo ./up,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。

    \n
  8. \n
\n
\n

问题二:外部机器无法访问 Overleaf Web 服务

先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。

\n

注意到在默认的 lib/docker-compose.base.yml 配置中,Overleaf Web 服务的端口映射方式为 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"

\n

解决方案:修改端口映射

docker-compose.base.yml 文件中,删除 ${OVERLEAF_LISTEN_IP:-127.0.0.1} 前缀,将 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80" 修改为 "${OVERLEAF_PORT:-80}:80"。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。

\n

修改后的 docker-compose.base.yml 端口映射配置如下:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
services:

sharelatex:
restart: always
image: "${IMAGE}"
container_name: sharelatex
volumes:
- "${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}"
ports:
#- "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"
- "${OVERLEAF_PORT:-80}:80"
environment:
GIT_BRIDGE_ENABLED: "${GIT_BRIDGE_ENABLED}"
GIT_BRIDGE_HOST: "git-bridge"
GIT_BRIDGE_PORT: "8000"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
V1_HISTORY_URL: "http://sharelatex:3100/api"
env_file:
- ../config/variables.env
stop_grace_period: 60s
\n\n

完成修改后,重新启动 Docker 服务:

\n
1
sudo ./start
\n\n

现在,外部机器可以通过服务器的 IP 地址加端口 {Overleaf_Port} 访问 Overleaf Web 服务。

\n
\n

总结

这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 docker-compose.base.yml 中的端口映射使外部设备可以访问 Overleaf 服务。

\n

可以在这里参考我的本地Overleaf效果,注意安装完后还需要配置latex包和中文字体。

\n

这篇记录希望能为遇到类似问题的朋友提供帮助。

\n"},{"title":"相见恨晚的 SearXNG:打造私人搜索引擎全指南","date":"2025-03-10T14:55:04.000Z","_content":"\n![SearXNG 界面预览](/images/searxng.png) \n**厌倦了商业搜索引擎的广告追踪?** 受够技术社区被 SEO 污染的水文?希望搜索结果里尽量不要呈现C*DN等平台的低质内容?这款开源元搜索引擎 [SearXNG](https://github.com/searxng/searxng) 现在让我直呼真香爱不释手,使用频率远超 Nextcloud 等自建服务。\n\n---\n\n### ▍ 为什么选择 SearXNG?\n✅ **核心优势矩阵** \n| 特性 | 实现方式 | 用户收益 |\n|--------------------|----------------------------|------------------------|\n| 隐私保护 | 匿名聚合第三方结果 | 无搜索历史追踪 |\n| 结果去商业化 | 过滤 SEO 优化内容 | 提升技术资料检索效率 |\n| 多引擎支持 | 集成 Google/Bing/Brave 等 70+ 源 | 规避单一引擎局限 |\n| 界面定制 | 主题引擎分离设计 | 打造个性化搜索门户 |\n\n⚠️ 同类工具对比: \n此前使用的 [luxirty-search](https://github.com/KoriIku/luxirty-search) 也很不错但是依赖 Google CSE,对于内网环境日常使用多少有点不友好。\n\n之前看了下网上普遍推荐docker方案不过部署流程与官方文档有不少出入而且在我本地没法正常运行,这里我们直接按照官方文档来,事不宜迟直接开始部署。\n\n---\n\n### ▍ 极简部署方案\n#### ▶ 环境准备\n```bash\nmkdir -p ~/services/searxng && cd $_ # 随意找个地方创建专用目录\nexport SEARXNG_PORT=8080 # 设置服务端口\n```\n\n#### ▶ 容器化部署\n```bash\n# 拉取官方镜像\ndocker pull searxng/searxng\n\n# 启动容器(推荐绑定持久化配置)\ndocker run -d --restart=unless-stopped \\\n -p ${SEARXNG_PORT}:8080 \\\n -v \"${PWD}/config:/etc/searxng\" \\\n -e \"BASE_URL=http://your-domain.com\" \\\n -e \"INSTANCE_NAME=PrivateSearch\" \\\n searxng/searxng\n```\n📌 参数说明: \n- `-v` 挂载配置文件实现持久化 \n- `--restart` 确保服务异常退出后自动重启 \n- `BASE_URL` 需替换为实际访问域名,不过也可以后续再配置\n\n---\n\n### ▍ 高频问题排雷\n#### 🔴 镜像拉取失败\n**现象**:`Error response from daemon: pull access denied` \n✅ 解决方案: \n参考先前的 [Overleaf Toolkit 踩坑记录](https://blog.hifuu.ink/2024/11/06/overleaf/) 配置镜像加速源\n\n#### 🔴 Google 频繁拦截\n**现象**:`Too Many Requests` 错误频发 \n\n⚠️ 这算是一个玄学问题除了更换代理我还没有发现更好的解决方案\n\n✅ 实战验证方案: \n更换你的代理服务器比如笔者目前在🇺🇸🇭🇰🇯🇵均有购买VPS服务器可作为代理,经尝试总会有可以使用的节点。\n\n📌 在配置文件设置代理: \n```yaml\noutgoing:\n proxies:\n all://:\n - http://
:\n```\n\n---\n\n### ▍ 效果展示与体验\n访问我的生产环境实例 [search.hifuu.ink](https://search.hifuu.ink) 可体验以下功能: \n- 🔍 多引擎结果聚合对比 \n- 🌍 支持 30+ 语言实时翻译 \n- 🛡️ 零 Cookie 跟踪的隐私模式 \n- 🎨 主题切换 \n\n---\n### ▍ 进阶优化建议\n1. **反向代理配置** \n\n网上相关教程应该很多这里不再重复,我的SearXNG服务器通过香港VPS反代到公网使用。\n\n2. **定期维护命令** \n```bash\n# 更新搜索引擎引擎列表\ndocker exec -it searxng python -m searx.engines --update\n```\n\n3. **监控指标集成** \n通过 Prometheus 导出搜索统计:\n```bash\ndocker run -d --network=searxng-net \\\n -v \"${PWD}/metrics:/metrics\" \\\n prom/prometheus --config.file=/metrics/searxng.yml\n``` \n\n---\n\n**🚀 立即行动** \n\n快速拥有对抗 SEO 污染的利器,快来打造你的私人搜索门户吧!部署过程遇到问题欢迎联系笔者交流。\n","source":"_posts/searxng.md","raw":"---\ntitle: 相见恨晚的 SearXNG:打造私人搜索引擎全指南\ndate: 2025-03-10 22:55:04\ntags: [开源工具, 技术分享]\n---\n\n![SearXNG 界面预览](/images/searxng.png) \n**厌倦了商业搜索引擎的广告追踪?** 受够技术社区被 SEO 污染的水文?希望搜索结果里尽量不要呈现C*DN等平台的低质内容?这款开源元搜索引擎 [SearXNG](https://github.com/searxng/searxng) 现在让我直呼真香爱不释手,使用频率远超 Nextcloud 等自建服务。\n\n---\n\n### ▍ 为什么选择 SearXNG?\n✅ **核心优势矩阵** \n| 特性 | 实现方式 | 用户收益 |\n|--------------------|----------------------------|------------------------|\n| 隐私保护 | 匿名聚合第三方结果 | 无搜索历史追踪 |\n| 结果去商业化 | 过滤 SEO 优化内容 | 提升技术资料检索效率 |\n| 多引擎支持 | 集成 Google/Bing/Brave 等 70+ 源 | 规避单一引擎局限 |\n| 界面定制 | 主题引擎分离设计 | 打造个性化搜索门户 |\n\n⚠️ 同类工具对比: \n此前使用的 [luxirty-search](https://github.com/KoriIku/luxirty-search) 也很不错但是依赖 Google CSE,对于内网环境日常使用多少有点不友好。\n\n之前看了下网上普遍推荐docker方案不过部署流程与官方文档有不少出入而且在我本地没法正常运行,这里我们直接按照官方文档来,事不宜迟直接开始部署。\n\n---\n\n### ▍ 极简部署方案\n#### ▶ 环境准备\n```bash\nmkdir -p ~/services/searxng && cd $_ # 随意找个地方创建专用目录\nexport SEARXNG_PORT=8080 # 设置服务端口\n```\n\n#### ▶ 容器化部署\n```bash\n# 拉取官方镜像\ndocker pull searxng/searxng\n\n# 启动容器(推荐绑定持久化配置)\ndocker run -d --restart=unless-stopped \\\n -p ${SEARXNG_PORT}:8080 \\\n -v \"${PWD}/config:/etc/searxng\" \\\n -e \"BASE_URL=http://your-domain.com\" \\\n -e \"INSTANCE_NAME=PrivateSearch\" \\\n searxng/searxng\n```\n📌 参数说明: \n- `-v` 挂载配置文件实现持久化 \n- `--restart` 确保服务异常退出后自动重启 \n- `BASE_URL` 需替换为实际访问域名,不过也可以后续再配置\n\n---\n\n### ▍ 高频问题排雷\n#### 🔴 镜像拉取失败\n**现象**:`Error response from daemon: pull access denied` \n✅ 解决方案: \n参考先前的 [Overleaf Toolkit 踩坑记录](https://blog.hifuu.ink/2024/11/06/overleaf/) 配置镜像加速源\n\n#### 🔴 Google 频繁拦截\n**现象**:`Too Many Requests` 错误频发 \n\n⚠️ 这算是一个玄学问题除了更换代理我还没有发现更好的解决方案\n\n✅ 实战验证方案: \n更换你的代理服务器比如笔者目前在🇺🇸🇭🇰🇯🇵均有购买VPS服务器可作为代理,经尝试总会有可以使用的节点。\n\n📌 在配置文件设置代理: \n```yaml\noutgoing:\n proxies:\n all://:\n - http://
:\n```\n\n---\n\n### ▍ 效果展示与体验\n访问我的生产环境实例 [search.hifuu.ink](https://search.hifuu.ink) 可体验以下功能: \n- 🔍 多引擎结果聚合对比 \n- 🌍 支持 30+ 语言实时翻译 \n- 🛡️ 零 Cookie 跟踪的隐私模式 \n- 🎨 主题切换 \n\n---\n### ▍ 进阶优化建议\n1. **反向代理配置** \n\n网上相关教程应该很多这里不再重复,我的SearXNG服务器通过香港VPS反代到公网使用。\n\n2. **定期维护命令** \n```bash\n# 更新搜索引擎引擎列表\ndocker exec -it searxng python -m searx.engines --update\n```\n\n3. **监控指标集成** \n通过 Prometheus 导出搜索统计:\n```bash\ndocker run -d --network=searxng-net \\\n -v \"${PWD}/metrics:/metrics\" \\\n prom/prometheus --config.file=/metrics/searxng.yml\n``` \n\n---\n\n**🚀 立即行动** \n\n快速拥有对抗 SEO 污染的利器,快来打造你的私人搜索门户吧!部署过程遇到问题欢迎联系笔者交流。\n","slug":"searxng","published":1,"updated":"2025-03-10T15:46:55.535Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iescx001kog2b0s7mg6qs","content":"

\"SearXNG
厌倦了商业搜索引擎的广告追踪? 受够技术社区被 SEO 污染的水文?希望搜索结果里尽量不要呈现C*DN等平台的低质内容?这款开源元搜索引擎 SearXNG 现在让我直呼真香爱不释手,使用频率远超 Nextcloud 等自建服务。

\n
\n

▍ 为什么选择 SearXNG?

核心优势矩阵

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
特性实现方式用户收益
隐私保护匿名聚合第三方结果无搜索历史追踪
结果去商业化过滤 SEO 优化内容提升技术资料检索效率
多引擎支持集成 Google/Bing/Brave 等 70+ 源规避单一引擎局限
界面定制主题引擎分离设计打造个性化搜索门户
\n

⚠️ 同类工具对比:
此前使用的 luxirty-search 也很不错但是依赖 Google CSE,对于内网环境日常使用多少有点不友好。

\n

之前看了下网上普遍推荐docker方案不过部署流程与官方文档有不少出入而且在我本地没法正常运行,这里我们直接按照官方文档来,事不宜迟直接开始部署。

\n
\n

▍ 极简部署方案

▶ 环境准备

1
2
mkdir -p ~/services/searxng && cd $_  # 随意找个地方创建专用目录
export SEARXNG_PORT=8080 # 设置服务端口
\n\n

▶ 容器化部署

1
2
3
4
5
6
7
8
9
10
# 拉取官方镜像
docker pull searxng/searxng

# 启动容器(推荐绑定持久化配置)
docker run -d --restart=unless-stopped \\
-p ${SEARXNG_PORT}:8080 \\
-v "${PWD}/config:/etc/searxng" \\
-e "BASE_URL=http://your-domain.com" \\
-e "INSTANCE_NAME=PrivateSearch" \\
searxng/searxng
\n

📌 参数说明:

\n
    \n
  • -v 挂载配置文件实现持久化
  • \n
  • --restart 确保服务异常退出后自动重启
  • \n
  • BASE_URL 需替换为实际访问域名,不过也可以后续再配置
  • \n
\n
\n

▍ 高频问题排雷

🔴 镜像拉取失败

现象Error response from daemon: pull access denied
✅ 解决方案:
参考先前的 Overleaf Toolkit 踩坑记录 配置镜像加速源

\n

🔴 Google 频繁拦截

现象Too Many Requests 错误频发

\n

⚠️ 这算是一个玄学问题除了更换代理我还没有发现更好的解决方案

\n

✅ 实战验证方案:
更换你的代理服务器比如笔者目前在🇺🇸🇭🇰🇯🇵均有购买VPS服务器可作为代理,经尝试总会有可以使用的节点。

\n

📌 在配置文件设置代理:

\n
1
2
3
4
outgoing:
proxies:
all://:
- http://<address>:<port>
\n\n
\n

▍ 效果展示与体验

访问我的生产环境实例 search.hifuu.ink 可体验以下功能:

\n
    \n
  • 🔍 多引擎结果聚合对比
  • \n
  • 🌍 支持 30+ 语言实时翻译
  • \n
  • 🛡️ 零 Cookie 跟踪的隐私模式
  • \n
  • 🎨 主题切换
  • \n
\n
\n

▍ 进阶优化建议

    \n
  1. 反向代理配置
  2. \n
\n

网上相关教程应该很多这里不再重复,我的SearXNG服务器通过香港VPS反代到公网使用。

\n
    \n
  1. 定期维护命令

    \n
    1
    2
    # 更新搜索引擎引擎列表
    docker exec -it searxng python -m searx.engines --update
    \n
  2. \n
  3. 监控指标集成
    通过 Prometheus 导出搜索统计:

    \n
    1
    2
    3
    docker run -d --network=searxng-net \\
    -v "${PWD}/metrics:/metrics" \\
    prom/prometheus --config.file=/metrics/searxng.yml
  4. \n
\n
\n

🚀 立即行动

\n

快速拥有对抗 SEO 污染的利器,快来打造你的私人搜索门户吧!部署过程遇到问题欢迎联系笔者交流。

\n","excerpt":"","more":"

\"SearXNG
厌倦了商业搜索引擎的广告追踪? 受够技术社区被 SEO 污染的水文?希望搜索结果里尽量不要呈现C*DN等平台的低质内容?这款开源元搜索引擎 SearXNG 现在让我直呼真香爱不释手,使用频率远超 Nextcloud 等自建服务。

\n
\n

▍ 为什么选择 SearXNG?

核心优势矩阵

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
特性实现方式用户收益
隐私保护匿名聚合第三方结果无搜索历史追踪
结果去商业化过滤 SEO 优化内容提升技术资料检索效率
多引擎支持集成 Google/Bing/Brave 等 70+ 源规避单一引擎局限
界面定制主题引擎分离设计打造个性化搜索门户
\n

⚠️ 同类工具对比:
此前使用的 luxirty-search 也很不错但是依赖 Google CSE,对于内网环境日常使用多少有点不友好。

\n

之前看了下网上普遍推荐docker方案不过部署流程与官方文档有不少出入而且在我本地没法正常运行,这里我们直接按照官方文档来,事不宜迟直接开始部署。

\n
\n

▍ 极简部署方案

▶ 环境准备

1
2
mkdir -p ~/services/searxng && cd $_  # 随意找个地方创建专用目录
export SEARXNG_PORT=8080 # 设置服务端口
\n\n

▶ 容器化部署

1
2
3
4
5
6
7
8
9
10
# 拉取官方镜像
docker pull searxng/searxng

# 启动容器(推荐绑定持久化配置)
docker run -d --restart=unless-stopped \\
-p ${SEARXNG_PORT}:8080 \\
-v "${PWD}/config:/etc/searxng" \\
-e "BASE_URL=http://your-domain.com" \\
-e "INSTANCE_NAME=PrivateSearch" \\
searxng/searxng
\n

📌 参数说明:

\n
    \n
  • -v 挂载配置文件实现持久化
  • \n
  • --restart 确保服务异常退出后自动重启
  • \n
  • BASE_URL 需替换为实际访问域名,不过也可以后续再配置
  • \n
\n
\n

▍ 高频问题排雷

🔴 镜像拉取失败

现象Error response from daemon: pull access denied
✅ 解决方案:
参考先前的 Overleaf Toolkit 踩坑记录 配置镜像加速源

\n

🔴 Google 频繁拦截

现象Too Many Requests 错误频发

\n

⚠️ 这算是一个玄学问题除了更换代理我还没有发现更好的解决方案

\n

✅ 实战验证方案:
更换你的代理服务器比如笔者目前在🇺🇸🇭🇰🇯🇵均有购买VPS服务器可作为代理,经尝试总会有可以使用的节点。

\n

📌 在配置文件设置代理:

\n
1
2
3
4
outgoing:
proxies:
all://:
- http://<address>:<port>
\n\n
\n

▍ 效果展示与体验

访问我的生产环境实例 search.hifuu.ink 可体验以下功能:

\n
    \n
  • 🔍 多引擎结果聚合对比
  • \n
  • 🌍 支持 30+ 语言实时翻译
  • \n
  • 🛡️ 零 Cookie 跟踪的隐私模式
  • \n
  • 🎨 主题切换
  • \n
\n
\n

▍ 进阶优化建议

    \n
  1. 反向代理配置
  2. \n
\n

网上相关教程应该很多这里不再重复,我的SearXNG服务器通过香港VPS反代到公网使用。

\n
    \n
  1. 定期维护命令

    \n
    1
    2
    # 更新搜索引擎引擎列表
    docker exec -it searxng python -m searx.engines --update
    \n
  2. \n
  3. 监控指标集成
    通过 Prometheus 导出搜索统计:

    \n
    1
    2
    3
    docker run -d --network=searxng-net \\
    -v "${PWD}/metrics:/metrics" \\
    prom/prometheus --config.file=/metrics/searxng.yml
  4. \n
\n
\n

🚀 立即行动

\n

快速拥有对抗 SEO 污染的利器,快来打造你的私人搜索门户吧!部署过程遇到问题欢迎联系笔者交流。

\n"},{"title":"命令行编辑器的优雅新选择","date":"2024-12-12T17:40:27.000Z","_content":"\n意外发现Zellij+Helix还挺好用的\n\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境\n\n稍微了解一下二者的快捷键就能舒适码字了\n\n甚至还都是rust出品\n\n即刻尝试一下[Zellij](https://zellij.dev/)和[Helix](https://helix-editor.com/)吧!\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh\n\n![实际效果](/images/zellij-helix.jpg)\n","source":"_posts/zellij-helix.md","raw":"---\ntitle: 命令行编辑器的优雅新选择\ndate: 2024-12-13 01:40:27\ntags: [技术分享]\n---\n\n意外发现Zellij+Helix还挺好用的\n\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境\n\n稍微了解一下二者的快捷键就能舒适码字了\n\n甚至还都是rust出品\n\n即刻尝试一下[Zellij](https://zellij.dev/)和[Helix](https://helix-editor.com/)吧!\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh\n\n![实际效果](/images/zellij-helix.jpg)\n","slug":"zellij-helix","published":1,"updated":"2025-02-23T15:53:44.966Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iesd0002iog2b94zz4o8r","content":"

意外发现Zellij+Helix还挺好用的

\n

避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境

\n

稍微了解一下二者的快捷键就能舒适码字了

\n

甚至还都是rust出品

\n

即刻尝试一下ZellijHelix吧!

\n

// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh

\n

\"实际效果\"

\n","excerpt":"","more":"

意外发现Zellij+Helix还挺好用的

\n

避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境

\n

稍微了解一下二者的快捷键就能舒适码字了

\n

甚至还都是rust出品

\n

即刻尝试一下ZellijHelix吧!

\n

// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh

\n

\"实际效果\"

\n"},{"title":"原来我还有个博客","date":"2024-06-02T16:19:55.000Z","_content":"\n2025-02-25\n\n最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~\n","source":"_posts/原来我还有个博客.md","raw":"---\ntitle: 原来我还有个博客\ndate: 2024-06-03 00:19:55\ntags: 日志\n---\n\n2025-02-25\n\n最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~\n","slug":"原来我还有个博客","published":1,"updated":"2025-02-25T04:26:34.224Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iesd0002jog2b0gfohbye","content":"

2025-02-25

\n

最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~

\n","excerpt":"","more":"

2025-02-25

\n

最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~

\n"},{"title":"梦开始的地方","date":"2023-12-06T14:53:35.000Z","_content":"\n不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。\n\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。\n\n> P.S.最近我都经历了些什么:\n>\n> 1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;\n> 2. 学习了一些C++基础,在洛谷上刷了不少算法题;\n> 3. ACM招新赛被薄纱,差一题进入校队;\n> 4. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;\n> 5. 入坑战地,爽爽爽;\n> 6. 被一位巨强的学长发掘,加入NUDT超算队;\n> 7. 面临三个考试周,熬过去就是胜利;\n\n虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。\n\n这里,毕竟是我梦开始的地方。\n\n> 胸怀祖国,团结协作,志在高峰,奋勇拼搏!\n\n今天是2023年12月6日,加油!\n\n------------------------\n\n修改一下,有的话还是不适合明说哦\n\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==\n\n","source":"_posts/梦开始的地方.md","raw":"---\ntitle: 梦开始的地方\ndate: 2023-12-06 22:53:35\ntags: 日志\n---\n\n不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。\n\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。\n\n> P.S.最近我都经历了些什么:\n>\n> 1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;\n> 2. 学习了一些C++基础,在洛谷上刷了不少算法题;\n> 3. ACM招新赛被薄纱,差一题进入校队;\n> 4. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;\n> 5. 入坑战地,爽爽爽;\n> 6. 被一位巨强的学长发掘,加入NUDT超算队;\n> 7. 面临三个考试周,熬过去就是胜利;\n\n虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。\n\n这里,毕竟是我梦开始的地方。\n\n> 胸怀祖国,团结协作,志在高峰,奋勇拼搏!\n\n今天是2023年12月6日,加油!\n\n------------------------\n\n修改一下,有的话还是不适合明说哦\n\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==\n\n","slug":"梦开始的地方","published":1,"updated":"2025-02-25T04:25:44.687Z","comments":1,"layout":"post","photos":[],"_id":"cmi0iesd0002log2bhbbb1g93","content":"

不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。

\n

今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。

\n
\n

P.S.最近我都经历了些什么:

\n
    \n
  1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;
  2. \n
  3. 学习了一些C++基础,在洛谷上刷了不少算法题;
  4. \n
  5. ACM招新赛被薄纱,差一题进入校队;
  6. \n
  7. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;
  8. \n
  9. 入坑战地,爽爽爽;
  10. \n
  11. 被一位巨强的学长发掘,加入NUDT超算队;
  12. \n
  13. 面临三个考试周,熬过去就是胜利;
  14. \n
\n
\n

虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。

\n

这里,毕竟是我梦开始的地方。

\n
\n

胸怀祖国,团结协作,志在高峰,奋勇拼搏!

\n
\n

今天是2023年12月6日,加油!

\n
\n

修改一下,有的话还是不适合明说哦

\n

5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==

\n","excerpt":"","more":"

不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。

\n

今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。

\n
\n

P.S.最近我都经历了些什么:

\n
    \n
  1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;
  2. \n
  3. 学习了一些C++基础,在洛谷上刷了不少算法题;
  4. \n
  5. ACM招新赛被薄纱,差一题进入校队;
  6. \n
  7. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;
  8. \n
  9. 入坑战地,爽爽爽;
  10. \n
  11. 被一位巨强的学长发掘,加入NUDT超算队;
  12. \n
  13. 面临三个考试周,熬过去就是胜利;
  14. \n
\n
\n

虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。

\n

这里,毕竟是我梦开始的地方。

\n
\n

胸怀祖国,团结协作,志在高峰,奋勇拼搏!

\n
\n

今天是2023年12月6日,加油!

\n
\n

修改一下,有的话还是不适合明说哦

\n

5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==

\n"}],"PostAsset":[],"PostCategory":[{"post_id":"cmi0iescr000eog2b2ugh780z","category_id":"cmi0iescs000hog2b6i033sxi","_id":"cmi0iescu000vog2b5ufeel1d"},{"post_id":"cmi0iescs000jog2bgkpv8cr4","category_id":"cmi0iesct000pog2be99zbtna","_id":"cmi0iescv0011og2b8l1mdj45"},{"post_id":"cmi0iesct000mog2bf2al1nlk","category_id":"cmi0iescu000wog2b0h9u4our","_id":"cmi0iescw0016og2bc80rdo6q"},{"post_id":"cmi0iescu000rog2b1eiye9jq","category_id":"cmi0iescv0012og2b8zqxfcql","_id":"cmi0iescw001cog2b2jcdagbi"},{"post_id":"cmi0iescw001dog2b31u2eu89","category_id":"cmi0iesct000pog2be99zbtna","_id":"cmi0iescx001log2b83jq36q1"},{"post_id":"cmi0iescx001iog2b666m0tt2","category_id":"cmi0iescv0012og2b8zqxfcql","_id":"cmi0iescy001pog2be25hazxn"}],"PostTag":[{"post_id":"cmi0iescp0005og2b38g8hgyl","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iescq0008og2b9dm88lql"},{"post_id":"cmi0iescn0001og2b9rmqf5nk","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iescr000aog2b4ys15nom"},{"post_id":"cmi0iescq0006og2b6l6sf7kb","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iescr000dog2b3jqy59bu"},{"post_id":"cmi0iescq0009og2bettuhl91","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iescs000fog2bcg4k98wu"},{"post_id":"cmi0iesco0002og2bd2on1smz","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iescs000iog2b58e20xax"},{"post_id":"cmi0iescr000bog2bhmv17lab","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iesct000log2bcitacvj0"},{"post_id":"cmi0iescr000eog2b2ugh780z","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iesct000nog2b0pquciz7"},{"post_id":"cmi0iescp0004og2b3lrb6vyo","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iescu000qog2bge6t05db"},{"post_id":"cmi0iescs000gog2b47qaa5er","tag_id":"cmi0iesct000kog2bch6p1fur","_id":"cmi0iescu000tog2b8egvfgfi"},{"post_id":"cmi0iescs000jog2bgkpv8cr4","tag_id":"cmi0iescu000sog2b2zls0z1f","_id":"cmi0iescv0010og2bbxmo28nd"},{"post_id":"cmi0iescv0013og2b3dh6h5cd","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iescw0017og2bb11o5jby"},{"post_id":"cmi0iesct000mog2bf2al1nlk","tag_id":"cmi0iescv000yog2b02za1h9i","_id":"cmi0iescw001bog2b596xhssb"},{"post_id":"cmi0iesct000mog2bf2al1nlk","tag_id":"cmi0iescu000sog2b2zls0z1f","_id":"cmi0iescw001eog2b0rhcbadk"},{"post_id":"cmi0iesct000oog2b3at3eki5","tag_id":"cmi0iescw0019og2b4blahv8f","_id":"cmi0iescx001hog2b715vgqxq"},{"post_id":"cmi0iescw001dog2b31u2eu89","tag_id":"cmi0iescu000sog2b2zls0z1f","_id":"cmi0iescx001jog2bc61880bm"},{"post_id":"cmi0iescx001iog2b666m0tt2","tag_id":"cmi0iescw001fog2b190i311k","_id":"cmi0iescy001nog2b947p1tkh"},{"post_id":"cmi0iescu000rog2b1eiye9jq","tag_id":"cmi0iescw001fog2b190i311k","_id":"cmi0iescy001oog2beh9906jy"},{"post_id":"cmi0iescu000uog2b4t49836d","tag_id":"cmi0iescx001mog2b3lhl2jhz","_id":"cmi0iescy001sog2b1k2shlxy"},{"post_id":"cmi0iescu000uog2b4t49836d","tag_id":"cmi0iescy001qog2ba35khqhv","_id":"cmi0iescy001tog2bg40q68n0"},{"post_id":"cmi0iescu000xog2b6y6h50af","tag_id":"cmi0iescy001qog2ba35khqhv","_id":"cmi0iescy001xog2bgue21ybp"},{"post_id":"cmi0iescu000xog2b6y6h50af","tag_id":"cmi0iescy001uog2bbrccfrvi","_id":"cmi0iescy001yog2b6j7j6oq0"},{"post_id":"cmi0iescu000xog2b6y6h50af","tag_id":"cmi0iescw0019og2b4blahv8f","_id":"cmi0iescy0020og2bhe1d2d7e"},{"post_id":"cmi0iescv000zog2bhb322isp","tag_id":"cmi0iescw0019og2b4blahv8f","_id":"cmi0iescy0021og2bhw106599"},{"post_id":"cmi0iescv0015og2b22v2elt6","tag_id":"cmi0iescw001fog2b190i311k","_id":"cmi0iescy0023og2b6iex3r57"},{"post_id":"cmi0iescw0018og2b1wrcgmac","tag_id":"cmi0iescx001mog2b3lhl2jhz","_id":"cmi0iescy0025og2b0yw71o9j"},{"post_id":"cmi0iescw001aog2be8jp9doe","tag_id":"cmi0iescy0024og2b6emz34dl","_id":"cmi0iescz0028og2bfvgaev8d"},{"post_id":"cmi0iescw001aog2be8jp9doe","tag_id":"cmi0iescx001mog2b3lhl2jhz","_id":"cmi0iescz0029og2bcemycesf"},{"post_id":"cmi0iescx001gog2b9r0jg006","tag_id":"cmi0iescw001fog2b190i311k","_id":"cmi0iescz002dog2b8po51iqp"},{"post_id":"cmi0iescx001gog2b9r0jg006","tag_id":"cmi0iescz002aog2b4pc61nxf","_id":"cmi0iescz002eog2bazax9en9"},{"post_id":"cmi0iescx001gog2b9r0jg006","tag_id":"cmi0iescx001mog2b3lhl2jhz","_id":"cmi0iescz002fog2b6cn975m2"},{"post_id":"cmi0iescx001kog2b0s7mg6qs","tag_id":"cmi0iescz002cog2b7o4fhy2s","_id":"cmi0iescz002gog2bhsn11hti"},{"post_id":"cmi0iescx001kog2b0s7mg6qs","tag_id":"cmi0iescw0019og2b4blahv8f","_id":"cmi0iescz002hog2bcgil5xy1"},{"post_id":"cmi0iesd0002iog2b94zz4o8r","tag_id":"cmi0iescw0019og2b4blahv8f","_id":"cmi0iesd0002kog2bcg8q9esh"},{"post_id":"cmi0iesd0002jog2b0gfohbye","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iesd0002mog2bakx5gc5l"},{"post_id":"cmi0iesd0002log2bhbbb1g93","tag_id":"cmi0iesco0003og2b83bufzsp","_id":"cmi0iesd0002nog2b89abeqkw"}],"Tag":[{"name":"日志","_id":"cmi0iesco0003og2b83bufzsp"},{"name":"TEST","_id":"cmi0iesct000kog2bch6p1fur"},{"name":"音乐","_id":"cmi0iescu000sog2b2zls0z1f"},{"name":"Vocaloid","_id":"cmi0iescv000yog2b02za1h9i"},{"name":"技术分享","_id":"cmi0iescw0019og2b4blahv8f"},{"name":"技术","_id":"cmi0iescw001fog2b190i311k"},{"name":"生活","_id":"cmi0iescx001mog2b3lhl2jhz"},{"name":"Archlinux","_id":"cmi0iescy001qog2ba35khqhv"},{"name":"系统优化","_id":"cmi0iescy001uog2bbrccfrvi"},{"name":"板绘","_id":"cmi0iescy0024og2b6emz34dl"},{"name":"学习","_id":"cmi0iescz002aog2b4pc61nxf"},{"name":"开源工具","_id":"cmi0iescz002cog2b7o4fhy2s"}]}} \ No newline at end of file diff --git a/source/_posts/Your-exclusive-email-address.md b/source/_posts/Your-exclusive-email-address.md new file mode 100644 index 0000000..089abf6 --- /dev/null +++ b/source/_posts/Your-exclusive-email-address.md @@ -0,0 +1,131 @@ +--- +title: 低成本快速搞定专属域名邮箱:从 0 到 CLI 收发只要 15 分钟 +date: 2025-11-15 23:36:22 +tags: [技术分享] +--- + +> 失踪人口回归 👋 +> 如果你只想「有个能用的 `@自己域名` 邮箱」,却懒得租服务器、折腾 Postfix、跟 25 端口斗智斗勇、花费你宝贵的💰,那这篇 15 分钟速通教程就是写给你的(当然,一点💰都不花是不可能的,你至少需要买一个域名=) + +--- + +## 1. 最终效果 + +- 任何前缀都能即时生成: `helloworld@your.com` / `fknudt@your.com` / `ilovethu@your.com` +- 在终端里使用命令收发邮件,无需专门打开各种邮件客户端。 + +整套方案 **只花域名注册费用**,**0 服务器 0 运维**,完全白嫖 Resend 免费额度。 + +--- + +## 2. 准备工作(2 min) + +| 资源 | 用途 | 费用 | +|---|---|---| +| 一枚域名 | 做邮箱后缀 | 约 ¥30+ / 年(阿里云 Namecheap Cloudflare 均可) | +| Resend 账号 | 托管邮服 | 免费 100 封 / 天 | + +![Resend文档](/images/resendofficial.png) + +--- + +## 3. 3 步完成域名绑定(5 min) + +1. 登录 [Resend](https://resend.com) → **Domains** → **Add Domain** + 输入 `your.com` → 得到一组 DNS 记录(TXT + MX + DKIM)。 + +2. 去域名注册商把记录全部照抄粘贴,保存。(由于笔者为免费用户并且已经配置域名无法再次配置,因此未能提供截图但是步骤非常简单)。 + - 登录你的域名注册商账号,找到DNS管理页面。 + - 添加Resend提供的TXT记录,用于验证域名所有权。 + - 添加Resend提供的MX记录,用于接收邮件。 + - 根据Resend的要求,配置完整所有必要的DNS记录。 + - 保存更改后,等待DNS记录生效,通常需要几分钟到24小时不等(这是resend官方的说法,笔者实测只需要几分钟不到)。 + ⚠️ 只需改 **DNS 解析**,不用转 nameserver,1 min 搞定。 + +3. 回到 Resend 点 **Verify**,状态变绿 ✅ 即生效(实测 30s-3min,并不会像官方说的有可能要24小时)。 + +--- + +## 4. 无限别名 + 转发(立刻能用) + +Resend 对「 catch-all 」免费! +意思是你 **不用提前新建账号**,任何 `@your.com` 的信都会飞进你设定的地址,只需要在 Resend 官网查收即可。 + +--- + +## 5. 终端发邮件(可选,8 min 部署) + +网页收发邮件显然太麻烦,我用**rust**写了个可爱的 CLI 客户端 [**rusend**](https://github.com/CGH0S7/rusend),基于 Resend 官方 API,支持发送与查收邮件非常方便。(好吧其实是Gemini小姐帮忙写的@@) + +### ①-1 下载预构建可执行文件 + +在[Github Releases](https://github.com/CGH0S7/rusend/releases/tag/stable)里下载对应系统的预编译包,解压放到 `$PATH` 目录下即可。 + +### ①-2 源码构建 + +下载并编译rusend,准备好rust工具链,具体编译命令如下: + + ```bash + git clone https://github.com/CGH0S7/rusend.git + cd rusend + cargo build --release + ``` + +将`rusend`二进制文件移动到系统的`$PATH`目录下,例如`/usr/local/bin`。 + +### ② 补全 & API Key配置 + +使用下面的命令进行命令行补全配置: + + ```bash + echo "source <(rusend completions bash)" >> ~/.bashrc + source ~/.bashrc + ``` + + ```zsh + echo "source <(rusend completions zsh)" >> ~/.zshrc + source ~/.zshrc + ``` + + ```fish + rusend completions fish > ~/.config/fish/completions/rusend.fish + source ~/.config/fish/config.fish + ``` + +在Resend控制面板中,找到`API Keys`选项,为你配置的域名生成一个新的API Key。然后在终端中运行以下命令进行配置: + + ```bash + rusend config --key re_xxxxxxxxx + ``` + +### ③ 使用 rusend 收发邮件 + +详细功能请查看[Readme](https://github.com/CGH0S7/rusend)文档: + + ![rusend文档](/images/rusendhelp1.png) + ![rusend文档](/images/rusendhelp2.png) + ![rusend软件帮助](/images/rusendhelp3.png) + +--- + +## 6. 成本 & 限额总结 + +| 项目 | 免费额度 | +|---|---| +| Resend | 100 封 / 天 | +| 域名 | 约 ¥30+ / 年 | +| rusend | 开源 | + +非主力邮箱场景下完全够用,不建议用于接收各种广告或更新推送。 + +若想要「匿名转发」隐藏真实地址,可以再套一层 [AnonAddy](https://addy.io) 即可,本文不展开。 + +--- + +## 7. 结语 + +以上就是「低成本快速拥有个人专属域名邮箱」的全部流程。 + +零服务器、零运维、全平台通用,甚至能在手机 Termux 里发邮。 + +如果能帮到你,去 [rusend](https://github.com/CGH0S7/rusend) 点个 ⭐ 当稿费吧~😉 diff --git a/source/images/resendofficial.png b/source/images/resendofficial.png new file mode 100644 index 0000000000000000000000000000000000000000..7e35fa25125a73b797f3f701f2902473856d2ebf GIT binary patch literal 219948 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�!!qt^c2 z{Fka8VE9_L7E*bzYkupc0Y&x8>c1rR8(@f&_SaFVp$4juYrbQ=Fc`lleKl_BVo)?aWn zatGyRwPr*}L@i4~gsZj?evXTg&-K7`qOik8<7|a@p4OH2J*^|Flww#JE-Y1I@@q2n zSt8mqrLo<}Dee-PdQV|sG2bclsp`_3yHZ;h83ng*PTl488|bP)e}2wf9sNB*YFD{o z(>`@0)g}eG!zi3tjjJPODtmrbviN&AgTYjyi)UOJV7s5X><02opRQ)s8y&s_JX_?^dl;E-Z zItmvc{!6`e$>M3C{#|{pGo!fgLB}x>MRKGI;hO7sbJ=S<3421hNbs) zD-OuCW@Va6w4z?VH92(S;>qIEkvjI9=_e1;Czz-w4NJWXlR?!q*%*suPl2CC} zc_pR%*L^I=u?s@i9-wf~Lsy6NP2F#Ph9J`(B?#_zqt=P)X3tpfP5DJIj@=d$^;(Bf zqQ`x<&Mpv@^uD7PDjcZ76|W$$Sa@9Sp&}@dmxGX{?`8QbGELZTH%Yf6SFrIqbkZrK zZoj|U%scO%{djA8EY~czM1g538nSQ|j}-yQJAFW1vgrGR%^TFRcO&?cP3}bjj(=ix`$fXf+*Elr)IN*F7I zfEth?c0j{}hKAZdzTP}7{OX
  • sYdgZo&aH+H}zEFN(7qt!ck`Or+8w*IWOoqW}I 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

    8yc$4Y;On4*w!SJ%Ig!?m_XHZhm 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 literal 0 HcmV?d00001 diff --git a/source/images/rusendhelp1.png b/source/images/rusendhelp1.png new file mode 100644 index 0000000000000000000000000000000000000000..44f0cf8880720e172341c11ec6ff21f1e25057ea GIT binary patch literal 182532 zcmeFZcT`ht^fibLUO_-nM35%ZBcSwN6r_Xn4l2D1p@#$%8@-oM1wx0=LXZ|jrT5SY zz4s2G1?KYo-gjo!{6A~fto7ZsT!afg$$iQ>`|Q0B!EZDa$w}!*iHL~Em6hbRiHL}` zh=@o?{vihLn5pR91HRn;pkxFlBBJm2`VVckoO@&+3_q6;$-zFu{J^@+onyBm@lTd}LR3Wb(@_#Ob&n^`e zBkb44ZJ8sI|8B~@zX?40zt^+7^4I=*T_$_?)_<>mU6*_C-)kbW|NS5S|1(Q3g^x(1 zq!+uQb=cLDt?CH#kunK2`%B|4|7`#S1?d0F^;gP!&o=xH^zY_kF0lrWCah9(zLDkD zD`dSz`dR7i+rYo_t!*{?%U0Xz4Hb@fB4E8qtOST?o*%yp^<4_H6SeRQAweJfa+ ziO04lJ$mQHtozE&lN$HMkUy0Owc%o;9FJA3HcIJUdm>-s&6~t+Uy{hEsHxesY&AN2 z%<5RzJmUTcAkuIyb?O~)+&s5jL7X2y$^k3C{FHa(V7~d&e&MS3&7{8To5#HdxgNB>+YNZCD$mDzb9cvTzw)VbYg)l2!kllCycIPf+lf2?l00WsyG?ZmX?Yw>pd1 zq$o+VZjVu*6U^r;F{zFouX0ok3-9xnwqfXIvnxp6_}+s@_HX`+JRjz*LzqL-+^suW&Kff^G7bU| zjUHPQV|Pw*!J_x<>v*IJ-;{qk2>97(q!&vsE?NqDdf?SNiEqn%_04Lk{$%fLTVUaL zGZ{r>SgCQ9!`^7%HSG#3u5bDytC$hA-}-P)U01r4Du!@`vm$6n#Jff|Qi`LtnJJ}@ ze=Kyt1+;LV56(F)F!hpVu&4>>vf18N-DQF^PKVKu+pz41E65`u-{TI<4VXl8$ z%wHV7j-g7Gs1AE{5p$FHrZ`GvoIol0_LBtWM}X=y2FhUkH?MUOZc7Z&i)H7UtiwmG z4HZeC{(X8P1lu&vJEc5vv@2gVM}BN{-1qMXjZ`^ao8s)A@o6%br#iVBY1}5luE7S5 ztfB^Gz)TJgY89B&MU08SjLgafc{-3y2?*T+Q@zuP>DJ6IZKsEit&URR6~3MNV)v=7 zKat(qTTVt!&4S!nu6TL*H8r{ zI;ao#3Uo@-7dqEX!3gt7KkY2}_Me}&HEO*!+2dUrCo{ivw(I0s5l#=OXlb7q5h_&D zC4IZf`vl*n``2{*^Y6n&Ny1^D(SG4{34EqOx84=$w?}6yE-nPe&TVh=)wnOkWHpC$ z1mB5zSztU=h{g>gO+clM7qzAhenS1iX7LrPz3NLx1DZ0*TQhI%$5C*UGfv;;`~s47 zq|X@OFKar(_Qb4vZ}u}K5H{F$VMvfxgra;~{mH&n|C|E z?4Xs5Ccy}HdcslTGy6Vk(>Qi99kLxiC6#7?94s;rX=e^04)Hr&TkU(fFxRZQ*I3#Z z0~fG0M)vfJOW$C6yb?<%^6!%c4z?f2#eMd8d$Hdu6RTIG?;HP~yMffr@Jof$Dt{+Y zNPND4t<_R7d}%2hIQ+^5+BweEm&-Dj$`53fm2U8CW6oSpW*YE31_-;iuM9l=_cuj? z(QG4U+l?Hmi9D5)NV#xV%tZ@ga}8S)>Ri_m&)vzl7rN;+^h54ddrB)zFEriN6?2$d zY*Iap?w*o@STE#9@0A){vJDmLRXYElryc^wu!rOY2)iaU^-A)9^o!g2u04pCs)L>v zDfRzdE%wh*#51CCXy<7c{bZk424BvfTZe2O0WosiWq){1A(Z|GXF5Angv)%q@-tQL zSOvCL&+%IcivTQR_K~dHz>vT;29GqY^=Qwe{&#MeOD6f{;+}qsY&&+F@9GHcni*^# zK=WmrjBMpD1(%+X9IKM29N0PZY#5<&#l@!O6T)wPRA~tg89JPwhwgXW(_HRNOC(<( z!MXIpL92~9D%NKYOz8wqck?owsyRI7{@ynFX_xtm?BDm3HLkP%#JSyYi7X(AF>;zN z?>@>|XuHQcZ_dO)iH8_|0xutpsUi(ApSapwZ2z=`1Mh0bT>^#Rja@op*h1rY40_yC zL@1b~SV7us1AiFwMFLp!^oU410e*G-EwSJf)+y>9*#BJ*T{;eJb#>s%hNBK*0n+0))t*s0p`EbVij=FP1=-Kc>kVys(|PLXKi!$0CWC}m*Z&2g zcqXaj;_|JAv)Yu{VM1E$YR7Nh^ZGP~yfnx|IpQ>?0=A*F{8rx|@E8wf9(n@N!+mrO zVsx&Z-oniWa@KyTNU_YUa&WQ_4BY%zUgG~+qZ|{K@9wKu>u+Ws_N}_NQk)$2X`V#^ zc_l^+ysYH3LH#XZ*S;j&Mm?pSWIKR4P29`fZZ&3~xKv&_JoE((J^IxA?b{!l!cy#s ze0dx6VZlezqE{8y)wNRs3?5@HMqbZhAaC{Af3KZ`eh!>3aigY^qGY}^U8+v< z;&`6_?JuHl`Yeg1K1@Gq##|1j{hFTG%>#Mr{9OA;UsXNi#s7>*B)fKO!*x@e)iw%D znjhCkM`xjt${EWJ<>)pROr+SvsWy{RGcdZDCH9zE^=?V=yIx3kZfX?dpk2mT{#ekx ztCOk>)nM7wmwg*3pP>nJK&FZb^sF)cJ9?Xwwy+eVw3|uvZweEgWdNV>2TV!QihJZs zUY_q)yq$ens;zPe`I&K(nApfg0@{H=t4;ZzI8{%Q_N0N4O;p-He*Dpgh}2S$|2yK0 z_$N+jsz-Nc%7%=Csn~$&>e-U2Tl_;Q6V;mWh%@vdpS#+t_^`WYXhm4FaCt$t& zw@=!m2k;O>rk`E~5$rFl=)OHF)$t0H&mRQ>#91kUOH@H@2GUkIXL%?n(2p z%rDytujSi-K*{IYxR18Hc1lWJG7zviS>3z0+yNXL0G$qaL2Rlac$d~h!vL$qgdj-Tzkd@8E%`*LRy$HEt{v z+7IN;EiX@QbpbKvU~Q-~Q(+ueW0|*!9t8~->Gq^bJx!^0LQmut8kF(^D7b7geav~X zcIb$0sXNv{+q*a4~!T8^?iLlAu*%wivG`tKdf$cvA%D?65P?t1`xK&0s7#AglW&gqq$M zVL?X2>psfuet840da}33U~G!t`4gE0{%;9B?BA7F{@Q(cK3}GXn0`e-K&rRUAZ^kI zoXmWZm!A%{#>scR|;wmlxZynpRy&FRMseIZ~>_Ij_j|`>%M}}F#Ya>ny;?>?1 zM8dY#Wh4e!Dz@rg;{XDfayb3NcJ|IYa<&B zX2gR#COPi>)k@r9*03EjGkvcucRAs3!6$zm@&*>c3i7*7#iqg#T|#OUK_*j9}3V|94n?tkuzm5e1J+@m0>R zj>UM|xlL|2Uh+-{TsFK4HHl4s3Vio5Rmxj4tR_Q57EY$ zlheoF9!|jpyd%`o#Pu#NmifNvi}YNTQwyEhtm5M1nR@=Qd1?vX(-4FAynjVewTJYg zWfrd^>3D3jvb4|V^3>ogSFwE&lqiAvFJ~cu9Le?Eb6l5J23DUcmU2GM@Zv@P-q>PcDeW3e2q^p3p4Agy+B3i6fXmy)?4Y&9;{Z8r*BPM1T!(F0iy zE%oo3F>k)P&-O+CO9}st1!r7U{L$vPYWe$SdgD-f(Yw3=@{2YSuvHm^uQ$<@$YkBv zQXcA4T3OBrNEoZMQLS83&(Yr$*UoXLZfBt1*!jLL=yRVDCY!)x!W){%D{Nn{{gj_y zdn(`(da{(_%8F9YA1pPn=!oZA_WXDdL_(R&vhFyHjF!1P7f_JPIat}5{lkB{*pEfo z3#^V}8gxsH)z2%8x9^juKeIra=AIv9(@XgYPNAtm`fUu}6VWUG<)}bZe2!XVH#+|8MiAFVSH?4PL%{ zNss>Tm=alpe*gYqG+E5Ljk%-5=f{7`@he?=#s9#k!27S?-&-!Jo{F(=R1>&l*Ui&#u2gsRV-nE-l91#m zUhZVB(V`6>i%E37z*n6ME^_!TZ+atSKVGMZL=ET5y@DTXvifdTjj%zE05~V`)yo;z zoR-3-nxKN3T&*X@8Uys`Tu*OLTAe5gm8g4JL;!&5IWtfviuR+sBA}L=Xq-#zat6el z9eS4LPdF6Wo2;I0UuciD9_@Qadl9F!mNY-S7<%#WYEKqhb%xbh|NeYiJIm)b5a~Wk ziqB{Thlh8E@!hW`B6kmC5YXq=Exx-wbZUJV>+idt43?}J|NK>@Csiy5;5@X^YP4f$ zXdOU?t(vt)q^XrvftP#ucZ-54cwD8b=P+ERh_ZUZFpeq}Bsz7Ca)&ZXHIaAHkE2N) zaqXGe?YO>XGMdGW6R`WrjNFOszD&i3*_UGO3rbmDKTn9Ih2MyKt=VnK5W1MfJ}^(9 zOHwpej(376sR)usD#h}x@}0r=IjnorCo8y};y-`+(hfkJxvGI}@B19E_?2Ck4CqD8 z`EKhr8n=0e>BVm~#8~|z6RnVg$HZau-LX)pfFY49QU*WXj^)) zl~Rc@I)v;;v2m3)=5+dU;cu`~yTy;dg${V9=?weG)?{6dToAGQ#e}bzf1KQ7=4@O8 zBvH3WU)^hSe6eqBI4=4~eFSN?I57sU_|X6Io4#`0cKX@eb4O7GBrloJvlqtjIW;dHTnIAvZX4t=0lVJa*=jT z;X+TW#MUz1&B=0b-NtmaNRt3ZiDfGVdtg@Y?(FB==IYM}JOTl5xTFuH#R7v;%mk#j zVXx^k-g>h3kRr0)S0$0x`a0YGa(C?fy?epvb(mS5OUYo7iKe;#t^)1(#@kPwz>Myw z05ghm9_gun-k{WHbiO%W#rFNvog$4i@ulgcB)gNhzrRsIrN_@N+h*fPWME0>LB$r0 z<`GOX>{@x*^v2iQ{%NTfe%%od;;Zw{y_9VVPtZD2$M~NhE}s$>OB*j$Jn!ZlRrQjm zIbQ%uObfw(JAHw&e#(wgYE(1i0dLIeC(hcrfqlc9H*YF6eR`tZU`!qx^UQI$7`yyY zn*F;lcv!6y8uYl-ZJwQdW)_ocH(6NqzZft52vN8YIHB0I3Omu8AXT(L+QVb5nivh# z;wm4b?sDlBqR!WcUhGYf^)^E}LL(v)c3m;{Ta-|@d_jBc-*a-j%!hyw;`9B5_NUM@ zNxQAyq!)j7B^FX^zyMSiTEZkulaY2jQ3!bu{gwQ&3LI;#_Qv+_PNEtSixhHhWw1Qf zW2H|^m~fJ3eOCc`G-j(k|A$T+Wv8_|RB4dA?g~t9lrX=Z`U7=aY_Yw-{_kAP43~=% zi&9LD4-tRXr(0yn0hEm54`^g}zidjNuQ*Y9W1==rL7~0`pai&L|4UrdX|1OPoko9k zooet97#B2{s=%!pIImSL0QhzB2#9;`#TA>?v2UUMPx#@&&dFg==dk+oHIVzsp7nmk zcHJdxcOcpkLFW7lmmFZ*oosy?CF#4bM5sMinjyPkefRD63rORJn1B?hf|i!y3wh-Z{j}IFOHU5R@k+(fE#UlCAvCXfGJ_-g0HER*jMJ- zwAU=v5LTBn7Swd(;FBYTdZ2G+L(+uhy1zLoiM&Bm zOnBayRGUk2nHMMByhYsJtV*+RysI=;4*phbTB9xOGI7^6At~3+$M*naGj{%qgCtp( z$gI{Q8YuWw%d-^Njym+j{5Fz4e<_Kv$h&m7u*s=16%_F!_>m*}oNp~UI2F@NyUXhr z8$KBbNZS(4*4OzY=s2wFFkHN7?3E!=Z5rOd9nHbAkP#r!3-6H$a_GN|4 zePQ&T5!$Mt%j|ityU_Qgu5|vf_}uKvYyulUKXxGkgP%G>ybgEJW)ApXVCIgO@^0-G z_RJE3j-%|KhCdb(zV#{I{E^0)wXx~rw1(pziS48_I^TN$m-0Ve04UQ2r~z_xCC_%W zG6gvCI+#>BaRGA@|GqgC4sX}VRg2!nT=JSjJb|&{KeDNLoW=pEuE3%ZGoimC49Jn1 zEKegl#{ms+c*Ds3U`4C5wI(BAs@`|6zm*A23-gl}aTI<0S5acUjk78|_>tQH)< z*c3FfA867K{h)|X*DkVA*CAtHdKpGfN|{(gw$%Ci7TH2aJOXe35_)zJKh31{p}CVmsLTg3?Eq9LPiiVC#j8 z0$+#ux9{z`gwqN0XGB_e#tB`H)ZV*||CpOOIJR@!4CB$9I&f-MYF+dYP^OgkYf4Ms zwMK06gO{FFUT5aw61%{loY#f->2yCvePY3(jnJyA%N2!Yb?DDuzb4~f0rKqMUcOM; zUz9R;T}Z!{8dgmRcgGHYupi2bM>$Mthdkh77YlMvfrAws)fJs+t5VyeUzNO=QLq=1h zZ-Iz|B~D_T>mG1v52oI4YHC_)SQ2&^2I+5iM&vVBpUzdg|`$^-evl(cmnoQ=)YHEHO#nSroigxHmff^jUGz?G% zv@hQO1k_0VuN04y?d)rajIp80X$-qyWM1v! zoFzA||k|Glo8=QE*PI{Cz zr4WT+o0eTBYsFAyxj`WDqyxYv1aETJY>i~n9GnWKK-Y^}zv~M?97F}>iSW} zG0EgN5ID0spcQuRFHOlL(^$o^qyp6 z7;nw!FTOQ(NGPmkS5IjJvj6-VmsM}NI^)KAp-z-BrPN?=eMamb143B3K_PgVmw%>T zaelMa(%k>(U~Lk_8yG|78UfMa)(s2Ls55_Md7r)(zKp6yb`1SIGjL+}MI3;QrVWBJ zXq_;ZYzr69u+%i0M(#X1|UQURJHopy6_I8J~6}k|#rQ_!pbJUU&7( zSj8(;S*>dC*D#^EyKYJy2;_UN5A%Dj>Ec>BT5AN5@mDZsxw%>{t|gof9-s-x_Bf|c zX6^UZ-H_&(g-QJQ0(Pd|lE9>TAohc+{Qwd>bpY9$zriFj?RqHT8bnM^C8eo-FuLX~ z+3gK&;5t%VK2Jpi#(Q+dOGTWI#I3ZB<`lx!AplWU@!bShgaGz zw6^PXIkBfHBZI=lck%^ffNJe&r!#Tfp;$`D|yr-en@Fpp{K4#yI@@rf@C8>-#N1}(d*@;|hg&xBM z!0@uTQl3rq=n*pz(GwuZ&C7ni@EF?+NY6P1h?+YtQ5t%hJQm|PQX*88^*$@R+eyn6 z3YY|za@qZlGigQpz_W{q7HDV~7M?>XbsSZbH0Z}st1>^+^x^g$(ik2S5eZ3t=`=aO zUBbD$-|1kprk-{hx-r$zxnbEbT8~eMbp61Ad!=1@&8x?|l6bD{8wXfb-~(|sp6`Xi z$^DnQXt^F~zeyHywYknJ9_zL}`VTJNwitP6pj@w45gnLs=MCad*)_ zWvniK|O+Z8JfGQ^=>g(@=>pBX(1AnaGu%lLJrs#0_7 z$DM6A^rkX-PkJW$^5Lj4>YFEU0mUAl8-Az89(vKk(tY(Oo@;~ANV8hFoCAa5fkH#* z;Pd6*qa!(n1g+mC%NJbmI-wpT)(E3P;2uOr#Pfx~PF^B^{ z1u3m5y#c!_j3?{7)?>)Iv=L>xCECsP0TZA+|0aXd)&7ecUCfn7-@waV2|GIatl-kaF(O%CupY!$gY8=n{%`c_NYAHsJ= z%b@ErRScIDejDhk9-8ZIT`+%gFlrg8ysVMN29Od5wUvp^5X~DT z6oRd`7xlgs?}tdmyq>+>TcAh)1SM4<9;^2eY|;m&_U^DSh{yN{DLF_dc5|mWUW+R$ z8{&67>iS6y`a(9%u2%&3ZNgL9m;%nzIseI;&Y1Eckb^NR5N#PI59(iE$Y|8c-8MzK zd?&NNjUk~0@nOT$!$>{c1E|6Na<9ncT1YW9$N)a0QipbiK9p}y?5!eIZwy-T_Oih4 z|4EB+8fZ~R%OMx~q}5js6JV`JLIjODiXR)3b-l%ELqq;FeCAR90Kc&q5|4N{|Jr>| z-fH4z=9Q^q!egkrkH(A;j0_xz|DYl4TU=kPmCgRY%&MXt59A)iVphh(%9~Xa{*r%P zYyMeh>~WFD!Yldmf=EYyg>J!fD^B+KV7Aa5jENA7$qv7F8e@{V|eK z?SRgc`m_1>R4MRq7yqD9c05Q=I7kSt;1Hn$kY)>0j<@)2dy=^_V5j!=o3+~>50SY% z{h@2=4SpRX7Inl0RBM-Q*;EiA{i#PH8i0M#d5pcpj{70Qig`6GP5CfB=HqL#=7Yi5 zpf1^P3Ta9vX-V@kbsguGFUK4i=NWMFqEdYGJ3eFS#PlMgN}Jf(r(au5Rx|O3$9AOO zdDH5WuI>9BuBW`LODDeb!AyRA*KhN1WG=1LPtxPkfsP9Q!_mDvO`!FrR@XKldgzxJ z!}G(_`Nq9D86K$hJZt7i_vhyg|(ZfX%PZ4TvEPqPrR&vF!Ff5rS;aANx{jO zqo zh5x(j61(Fi6tQmeEh&1|Lym*bKXUf!K5@Ccz}F=}Pp$;4)}zf_%04+1Pz~USwX`9y zwO>CWvaWk^?R$i(LDn_d<7)za`Er9VF6m;|u1Q(+%fY0C{lX+yr)$6?8nnV5NhgiD z!pfpE8=Ww0NRRdibI5q5Er7`OR^)FCd)+{BEq0C|&b$B-cdw^$I#}dQL6DDlkeSZ) zHDqeS|@F}a9`&zU#2O}T9r2ghHJ}pxQ~tn0AD)E^Ym+-cJO2v zc-(|8tdBZc<*ev)5ls86#Qh^8!pxA{#Gjcu-X|{%WktORtD+a`kBFJ_R|TMs@%D5uus`ysct&nke1M~ z;v-~wkUAi(clO3&&{FKfOyCJ`=KU`2gi_{43DlJ_NBfdokfD!E-dp@OKI}y`aL|)O zsd$R7KHAMlwd7^(JynX;q!^XmY+r9Fk{6R6`iEJ~BRZ-)#`UaI%(*6mtDHud-$HFB z#da@np(J_C(G0X_Hgn>M5VK7+FFiAemjT~D$;Khm%@R+P3 zefZ4u?O00)^0S@cbiDD)8~^A7=FMbMgfpg9_bqK|2=>LMjC*qu3hV3OMgwWh{1I z2mf(+W>|2r($3nG;mX*g1^YY&lQ@IWF(Po z^Y=9+c>$|Hwez|afq0$1cWoznJ&5A5A_m$kNrm||Z_~8aB z8w8XU3EwS7e(Q{`t%E*Mg?tYSD=N(lx}9FAi=^@n7}Fk^$);vdGhW`Aa?gr1^Wcfs zZ}9W%F8ub{SlByf4~y=kUu$GV+=$p3D;yl2QjQO zlz1I8h>Rx>IntA8Q8IckWY3uHuFr8^Z5I@C9k%yF-Oww{Qs)TDazvwYZ6E?N?a&xi zw$&G&@Q|QpXqW`A3dk-onm3)^?3?|wWWf`d7R47CpzTpLjk3sXp3FUet{|PfQ!cr; z^T+1!3x!G~%s1|~9|z27O*&DCkckbxoy^}|X`XVQ=Poiy5 zs-Y2a+=e^opJ!9UEdy_Z&m;-fYkYeI#P;H*$aKP%Ssi@nO>)R)&b_B|81UJ6g5z@0 z1v2qd7_MKRHy|6 z#KZ*HJkdvamjpFp8A4c1;PC17T2|Omu~CK7n0qUkt7bCOq=rY=;j*av#wpSJmoJt} zOL@z<8B0Cbe=Hpi9T54=7Wg6vH?9lj)LYf8Mb9yZy6O;5IB`j7h({p`1mhr4e;%Lg zFD3>pQ?j3)SOi=wib`l02mxh1V2LDtTdaSb^;_;+A{Q!Rk8V=WoPTl zYwE@C)k&WAw5Ey(xK~=&nTwkHBAG{5-yE1Rh|VM{BvApNF@9^ZHYL=PJjo|F5!(bP zLS{h*fGki>PGQL9dxA<5dH`0jD9Q76Tt0 zE8&}|kr;EyajECfN`!(;wtbq*SHkSk_B(2C4cqX>UMTcj$8wEN2e5WvD#ema(<5?vD6_ZNTZN*9pOdaP;8YUZkcaF&In7_4=|05Ju{o`tgy9f>iWZw(g^ z>cz(7t|tTD7?kVClxZE5fA+pn1G}0{FWmB!)}mN;cLDh-yQvPLEdXq+nPD$*=>qfz zP#oJ3>8@^YHHh7Ie(c~b!_f*@dKXrrp8_VSNF{(XoOem~_M7^BvbT=12dvzyJ9k)? z>r=};pR@?w=VSBuikrW|7zz67Tcq6X){!FO8nS2W=;8`8X2u0C^}%MpJW0Tz?h+hJ z8*FO2O#oZH$7nLD{>0RNH|CFvMLyUTNlDMHs1XU@p)+;A>H?X0{W5vVZhg3fJp-~X zoVojn^Kfl2Jmtlf*kjyd@ygN71Fq%9X&v53+MoJWvXZM`V1r`=R8(*JZpLm-e8;qQ z;f0yazW~M*{ZZ*FmsF9n86d@VfN$PBB$5k^!7FC2C+G);mG?Xq489h zEspyg3>(ST$Qbc$X!A(v>c&{yCNAX(&nf(V!TE-A0oYbYe{_7LRfa32`uyp%zXaFT zC7sga7al)vGdnmVT`e1{{8Lpnmn(Ad^e@~$Pk=|HusN!>IwA_|kt^ytX!R6fb-)@#pM zArfrYWO=%_!f6F;+V8!R43XIvhgE-d!%T%;84&4sLPdc){214`b z1d6=_sB4~7+V&p#QJHA-`l#*f^loJo4ov`2rENmnODHJ!ohdEy(g9~+Dyj)uw0-N~ z^6KPi2%Ka-Wr^qnkW|oLyBvyz{y<;(|J7L2cys!Dh z7F;p+Quh=ge;NWj(aUXG*-kiLz#$IXkrMv0+^{^VuU#pSrVa6VWjpV17of_q+O=x- zV|BKrC%*d+k-FyMc9m04hT`KviKUHOhzpozyA;d_X>E1T`91^wqU4NG(*S$yZU1g| z#DdB8ldgCm|9mwqdpM9GzNx>k^lrSEs@qPPhsVXGXY6XeDIy**!z9&PCMRh7@g4(b zeIJk4@sIm^8PQ+$q)VQ;`rA0iJGjPuNTnZ$Z9{Dr@fek6bbL$G_Gy?Ez(&0P5I&W)GWLK^QYd-+HGT{-)FgS zY9vq_5YiEVtDE0@>Rh*kNI!jBM#6aBy+2C<`%}wub+kMiFly-m9#1EB70>N{b-->0 z37*p7noZn1^<@MpZ(n(RCu;dU?kdlx(U|H!ee=JjVFJs-+&&c3K{3IVr%K?P#TEP&P+Sl%X@30rosHl!WggSRDJGu zBm=aO#3H3BU`cJwX4>X~_mr>g1a}5dW3{)053jCQ*r;FJ*U^;5E;s<_Jm}tz$yH|?HusMef8MrYeJN64CF-ujR(K|zp1t* zW^@`GC^+V=synt$Lbjnxb*S7r1~GTU9a?@?-l$dI^o4&qxU}-j4y|1TEe@)u`mS$x zCkqSU4Unc>AbN*5yN>ca5-A>-5di@R40`}WHjZw9dr-xjym|Yk0vqFZ>OLo5pp%DG zUOqXVkL=9X8ZP2&SlsmX1t6T$2|suM547fZtE3DAXe6%xsbZ%9(5i7S`e-_~{@#N} zb{9k2zKOi-44gNKh<=rTUPTsuLwj~VlDJRJ25?IekAI+R?W3BZyLZRgeFeIUSHP=a zY5e*AQkJggDs~7BHOBf8ZA}b;5_qZ^%DUI1icW1p4wI_3F-hfFG_6l=k&e1l#|*k* z_3lJ-n9{t}E7Voi@{8u zDF6U}gUg}m_buT_l=rhazwSstlQcn>&lxo$KB;fgSI4laes639d7n=;Acq9tW&rcp zr78)yQG^4t_7V zYwsCS^~H^TXij4iHnD5KIRvf0J>CvDce$`YI*AqN*0@g`{TYFk78+Nn)VEG4i4-;p zeVHr0^$vEvtJvyD%ER0EF1E-eUIX)?klITiZAa-vN~3H?={1k4yxbFQ<2*!jRebGj zvzm?M4^$80{6^v z*oTtcD8{tiHnwfupZa9kxgJ0MtcsQx)^wbkl)aS$3?Z<3=j!BmM&GhJk1hWJ^NV2~ zlld(X7wl+7xXI>tflR4TP9pasDwai1oQVC*AmF=aAln`{s`GQ6X!a@6=W)idA#QC5 zZH71u)y6wZ4Al-DHr>F#)v%#?us~Yzx^;BKyx*9ssit&fREdm)f<6koYzi$|vLDft z^Aa3-Zxc04SXiq<4t+E}H(sBb_y;&kG4sEx@X&}~alHtxQ&PPbb4NA=!@RPLwsE#0*8rNzOO11)W zGEPp%GU9HLncjcq!J-3D@J_f%HN{Btj6N;IhmIR+4ttTYY-`4Dr!WE|+VpT9shoX{ zVv^5`PQ=Nsj)x2AY5HE|YWQp3UvCSh>x)aQ<(RXh69AUwS9^C2%ihO_-Nt{rA6Tqd z_b;D}@cIZgqLzOJ-Y?0UjboJMTLSw2EVm#_F_>tLbWyJIawOSgVSKTzu7h}`x%ZLE z0obD74|FPVuwMl{|wH-oczVhq!3F)xHUkQ(unb>Ov1gM`* zmE%x?c-30c8JSKQse-*bUgY?FkmeC=oPpMR08_ZoLpiTp7w^R zD^8sfTbtn#AYCLElwQstk6#SiM#0qE-S)=A0I!xR>zROH4c1X+-Y6C09={G^!K(O) zU0C?<=A2OEP3tf+?f7Id%Q?s-z9JR9oTS!=D1H6U3&3q^L0CK?C>i+jS!}7;=Xjbh z`t4-;M5^X1aqE8+t+_`i$qm8A*>vEB^60GGOFy_iPCljHvVT|FieIl->@Y^}4xfOR zt+C$7+7O^Di9LIUiG{#2wx_BfS(_^BZGbjA?w-<-$d_UHqgYl+X~JRPKF3^Xz06|& zH#_op#ENIoS^Z>#w`RTbX~SmYC1GOF5CjCYPl~`Xozahb=a}`=Hf$4DE#k5xz$M|m z@x1x2C#|m??hRbrx$u=^qIQl-XJ_{7&b6}VMveB_8)FTM01`+jHmX$KrE1QBR5QAD zVrh8xc$4NGlOycrTV!%H(#F}T{{XF%-4&3uf_Rw#Smmc|NaU9L+F!2V2KseTiDxvLJFUozv{Z4 zhGjefTo=kaG*%SJb5{-0FAmu~%G^iG-q{RiERjTh7v+V)##k*b{I!v$MgmdUO`j4i zU}Ea#=QI`<1}*1~VJ8wT7mi`)l83gjzgJ&&-QqIjlus6PaUfk_lz~ljv1*h6b`O=B z)(*IAI`N{%2X%v*oWV=N^d&shH7#0f;meZ>)CHAMgI9Q}w5Q7T>p^NeioJQ{k3~8b zxMJrS@rRd~gz+i|xS!^quN1NHN}KjVy`lvGhQxqGtBtgVt4s`HJ3xS&!~bCSX6JMU zZ3%^mGwGA{U#%;NiYf2=NPbf$K}|~>JXeQ`5*OOjIFK^Rs^Xw(-^!(28R)|7g?7Eq zZJ_NtxM2Ezszl^qvDTkEEcOkNC_4X!XkhnG)LMrsg9dZJG&K$H6;5V?C>J8(0ZF~z zK;`92-ug&gg=9fzD!fsw@m0jL1OQp?hf3neuaS>cn03m4z_J$?ti1lsT70OD75tj;y^%DMO;YYH%UZd&TFG|&fZ{_(h6uW{A0lCH|= z)Rfsr-6SDNnXmKRx49qHuP0NpzYv`)RMbhpOT8Uu5c8KuJ2hZPb+3$R>_2}%4I>$) z)IK<3xSlb(kTyG-A%WeRyr1*3IRtywGquaO4YHq{Mmw+9=Jvf!7?#`r3i(op#P;K3 za!tUcQ9C)sj9+>icqq2LBw1dvutcWNu>gOqfI(L&1g5z*S{@t6r88d9cD`rbxtK|E z28U&PZ%g2BO|6eq(Pns_oH8UsPvcGAqg54$bLIXn_>Nj_OM90~`lChi2MyXpuSDgJ*`nZn8@075GEv z#sC>_&KW4G&$?g(CipEWHSViEgNbo|tGfyY5|F&JKJZ$&q}Kd$8mfq|@x_MD8(bWQ)EuKyJd^3zRLm{N%iclv zbYT8Fvn2dW7M9(2OiLg$Na##14H|H{7Tiu)xm6TDNT0Vl5CE89c~u*~ox-U#09{N# z1O%6|-2;fP#drgYXuugfb#pdZ*xA8FKSGhd`n-nE4s#SKeW8@@x2FttI+N^cose{% zKxwf9ZF@}hmvULH93y};U~v{k*_!joxX#PWbS)%K)bAiajCQ}U{`rD}K)$87i%UKF zeX}~rGYdK~ZNRJOa-CSbEVufz$B(xY$0Dqf=Wnx|;qedOyNu>%(prs-6<^5{^@)WF ziPQe;>RkG${J7O=8FlZV^v9QUXMDcCgPk!Pu8gaFm>^&}npB{C4Z=3XaH*7j0Av+x zTQl^nO%zlX5Pod8q7sHn+f9<`@}b|3*pCfz-1U6t!$;=P4fv)rY04}_E9^Cis%|`qE80>dDkI@PVkB)8%2X3VF3{T ztZRNHY*Ec-gz`tKLvt8 zFmPI_OS^m6d86y$YF_utm{+eZ|6n?J@UOYR>CxE<2p z$Ig#5n0SLLv#u3KN}r4lD(@l!rVT9A1-I`{S`e6gbx&pH#&bvH)`y!d3XH4ML4*|P zo(8{B6&0P^0L{V-ZjX|SLvJE`ADPs*)zMnIgg)er!$41y_%1hJ;@D~B$IzZdw6b;+ zKZ5~p(^Qw$9{$R~&DXwbd9T8G{UKZ;AYIwhO@Kkt=MAxph~ZZKzD9vTb^7PepOa|M zS|gYe%Z7@q04E;%msX^i!~pAeZFHF9aJ4zYr;fjE0BHMO9J3`+jogyz3Q2xhJ;@F; zI`8_@K#|*fOc05kDyVE`j@)Z@J0;+!)se@-B{-#qTF;!fO)qVZmH=-fEC1f-jqxf~ zK&<0=SM`%74qn+}(D@%M$!6bqzjaQr}?W;+HjdjI)K9&B^% zbo{EV81P5AD@LYkXTK(oU3wzU{+fb8(hl8i@q8LJU{rN+?E>99PoB2=6W}XvJI~Xp zDcf`NX_{0!$J&xm3VV_y3)*ulkkSCgoc*@uP?~O)A|XeE&iWc8N<96l5tn4PWg^GxbW7sB27Jf-3>ltwWMSRT!iMO5fKDbI+c_LX&4|N zT}qE;bPEO|NY_ZEk&0pT&S7^b#Pcce;Mq~gV{?`0;~ucNbK>{b1vrlx=HB={CMIb&ng*#gEq&{8TTQC1~ z&!Nc)Yy|Z})*L!TddsbAb4mF$_oM^%n@J(q)kk;!A>zN6(Og&+;z{!7ezb%m2{4s_ zADJp_{<=g3A=5I|5?;arLH3N8;1m4Lhl1YApn7R4Av5+|Y4QPY?4zzj8WzU*U|+!T zxo<8b2C4Ue_=YKEdGYxdk?gin>24SOg+|1Pffp(!7TcY|A>FWChE>fq5^@-;ZBDG$ zIlscWUu|Md0*IiVmrP{Z>f2VufEIyQlgTLN?*8MUn@IVnXN!Fq1Qo<+@fg=agk5kQ zlOwvdMwb@!@}a$;j&*6-fRd@0=RO0giOhnxLvX|!&8KDBT}Qie zb7o%XGrz;4x*`Fg$Je!t(w=+k(Q0@LXN}>~-+nViL#= z4H&S<6_=)8pQ)9DtCt+3zAz!K`zvrhEo2I0SOS*Pm+Eedr^g!(VT9_~iW}gPNp5p9 zF`yJvEoo0R;;8#g770!@-HcTP&oN(jH55(1cMH7vRmRsC;z?M8_Zn;T&IaR#r-ORd z71jXu2pXOS%-*FJr?wkXA96UWh@xh8GGFXWi@&<=S58KTYNzBZboglec_sUX_t%DZ zp%gzooo-x{_uKfWOxmoxkt;*Syo#84a5vspAouZ$(~Wddc+-A!SC7Ao&1~bw^uK`* zt_tHnwyd&=>M`l>!;?}*4M-`;61F!tD=qOFa0!h57+6bq>i$~B>J?f4nwg2dSVIN0 z?6|LhZ*cZ_7Q*!3=U!Y4W&itgqMQF@|M$NQnBEeO_-Bv*dBOi&rT@o=#-A42y>295 z^S$@Cg?fh7R8%x#8TNNv1^zpRCsjNDw;VWE9jk06_uC@Q_xLF2k`D1pS~*sjW!)r8 zf?tC0sMn1Rhh4S@xdc21pZ@-^Gd)e1ie=p-UB2wS$2RIto{6ek)!qUCE19qD-gC~R z0Z8T9LxvXteaX%im6fnB?K9J>)+!|AGHntN5a8TP^LHA`us-Qqx%vCoue+tjTHXK7 zaj>FB)`Q6k)5!xGep&hRq*tyahrT9Lwo{f;Q9-a*RJg(Bm#&QgNe8!iiwU4L<`=X~ zE>n^v`CZ%1)&8!kT^8WWpzsVDOsIq)vQ%i=nBPMo_E|a6p6Oc z5pSy9S)VfI)GJx4Ue8N5_cF5a-Uw`F=DE7=Z z2V^z;q2(LMfkkNBTpsnU8|?4tgyR}^@8z0|!LHxF$tfEW0^?mzPk%3Uf5Lk;20Ysh zD0F5~(J{=N!RF3R!ZOHH0O>V(k8xz$B?b>k$;fUny10Z#YsQR@8i;xv#H>yZT z8)*3+78RIEEYd|6Bo`!b8X9?Rj5!6l%#<}t;M(JVuPm+z?)@x6YakPnlaoEx#&!L6 zmY$!}!$Kb@xBxpvEajSbXLvjt2EWk~|2pEP*!!C7j#gj}(awh$B6rW+alnv;&dLYL zTi5AmxWFcpbb7p#)BdB~;J0<@@|LZ4Y1f9Enwv4xX8WqZfn~iq`cPxV;c0OY`ofdd?u3eqS|9?-I#jtV zT`I5}YN+h`mYhx)0vtNn>b}Is7cX}Ms3*^8*M19V>y1f@SJ&(3C~+O}rw=-$1$KOE z9EY@7gTx1W|L!JVY7!9eY2ySA4xt?c`K2eQ2A~|Cf3I&YLd&@hOp!{$F4LTEdUU1H(<5qzsy`>W);>rcm4>tV&YH;HJW%tT&9gp zPlm|I^RY?{mlYZ_3n_}ro8KKV*Q`tItaqD(m{W4m@S0Sc1W5|n4akhwI;_~d>c#3r z!P$=wC7ls7Q4FG-t?H-hwTe!$^`q|BuV24M@Rm4FH6opG+v1UH)6I<~6Q9k5k9U*N za~{j1T?u4rD}ZVRVS24d@Gr#h^JNtpW@f?m1hQhYW`NR+%ah$?xAJT5NyUYsE&nca zWsITh`X9$A$5)tnoQR}=BR1TG2K(8BZO#*(l)8*=jBabVJyfh#`o|U7<=xoX=}F-8 zI+IF`37H#7);ZNA|!tGJjl|LX)!Fyd|tim!4Ok*yo=@xC^*8#rZZU@vc%s*`6POT0AijoI&W)feu zzxrtn;E)6mc+ee}r)ITNIB3(Fzx(BQ-;klBJF!@d2feUo9<-a+#!nH0bvHx6UIRPw z2*7-(IZQuQlUDv`jV0QODjB-dpkTMX2js4gn#Z$(abp}W;)Vg9!|ne86!$-%hJG`F zry0QXIqft<(d&GGOU~jR(Je6;gyDKsUuv8up^WL$2}&fe(qCVOL5K)@KwN^y-Cb+% zm2q7O2?=^HxkT-@Rfh3G5YlCWuOY&+expd{bJd#QmwH2i4UZZwitv(^ZhXy+@Y$ZIwG77A92+ zoO++;KZC#L(EO-mb)v2x=BsR1h}lXT1hpq*0BbMkgQ^dAf8YqxtXR3)Gdx%BfjEdC z307)qRqqyhJ-IWy7FKBsrbRNuy<eI%#Pj zQRo+=C&zun#V8gvQJ#qg>tb{zVOa=c3}SD_?GsakSyh*MqrBc?4bVWOJE$?-jcI{C#HBGNxsuDZ}f zW4}~b45>SOJ;LRSs4IdP&uJJASa9z~OKlZm8mhlNZc9%xv_3j|xN;UYc7Vr;bMJ5O z#%E6XtL~RgS@otW!^K_7KKhrxI&LfWA2?z{KR~5EaeD>r62A1Ko zFG4w6e3k(SX?tkKJ$;+U?4AyGH@7v%0*Y^C`EVg-4RbuDxki3dpUu{ork%A*_ihV zC1tHirXJAs-QWPE+}p|Lp7gpk%R}7Bi#MH^q7ya)__hWcx!H~`ML=I~pt2jrqvAz(;NOa{6VSBbItx=1!Kuk`s%^jQn?(Z<>ty{*% znZ@U;m#NJv3CRAQ%gFL>1ZbU_CT$=ukk3@mKXM&_W(cSMceYZD1d-rKDg$sZP~A{U zNbJnY!6uyQM0xt(9c(XVBvEr|{{(9s7`~`xr7I%$OIVm$jd=OAvR`3fT(&u-YFagR zW0OvAG{Ah?S)E2>4ktY}e=8U^+b4os@tUmb{J!*TwL~#L6%%TEdEnY&5O>)*)4#XQ zA)4tO9U)&#_h$UYbKEzp_P5t)yIcODxGbdp9h}ac5hn-Xa~jCUkLB__xmFxOWEqh! zaK#Ah)S<-#mlLqNab^YL;_yW%OW?EFpG7(gNtrfJ$d{xCtd?{23!lmQt_|s{5B&Cn z^Ecl^( zzci51cf=Q}$^Y|#T?2g@4KH28Ef@0v7EJ8=RgeKET`hYEJY$3agG#qK649WedS+8) zLD{H*0bu8^tbSVZRE1Nw#Ex~=(!!Ewe-R9;JdHIm4J1Ka&!JzIUSihVEqLz=Nb<2C zD&g>+3<|r^Y2l8~&AnV1d^)3DTVlDr74RH4A0K^ke|w={q+AZ4c7xZ%!2V|;Z&tuo zxZ`x?_vc6Boiz)-xg*)W?nPQTZ-BjC5hQNhCk_eGZg|R3q+6BLm5Im%We%T!O-~G{ z)5S|yfQJ=qGKv6PV{P19O{yQg1&Zz@Q2YX0%-aNBT_Z5t3P@7DHl|i~ZgHBo91#*8 z-Nk*EUpY=)XKCDDO|n#qCY&;u%^R3;-@fIlVmMJBU`q|Fen4sebJb=Kncl*v z*)%c}DmI$gfP_EJ$4`vpoS@qMd)b)?>!BuuJ7(H{-IMcm9{ieVqnD5fmr=GV+hm#` z)B-V`2u%JeW0isFNe+8zboRgjjG1qYG)>8ACrvL})Y=KO9bW|5qdV=4CrVDg&ieOoLZ zaPT=Y>%nyIKMoVw+4I29q4GG?)BSKVAHN2O$k@c<47F-g7vOwK?r-fplKQ(%%rk_t z)80VvYLk%PW&$$Gg!y?Zk^33nGa}-F3A)kbw4+4YYSMO&nd4y>=2jzcz$3ZJo9`9t zl_r6urW3@mlfDkWBvx%Wx=7P>hxWIhY2Du1v!kV~O zJ#9wg&PFtYkm~g5Y@n#$d|_JbaCWV8;@U*%{?xFO)@;o_O0#|hwvbA{U3-Fr3j|T?6AJZ^lMvWlTxhyzpyJ-z3|p~&X&mtVq-dLY#X8*Q z!3Wgml+R)G&64uf(^NoZsy>qhJVoKrb?I8CUF3tyB??)y*N{8y<%fn>xclS zxB39cf3E76-8ro?`wTVb;lHIC(Ih`Xt#;`O!-Mi{EAnc^55RxtdvDJ%^>1zO)0mr^i`*w7 zs=H2+>+kQMmX_6;#mvH@V)6J}Y4yMG*vKv574(e)GaDrCybYtFzC=t^2K_MAfi(U- zH^(B%GS;hncAYBU(5e#oz9V^Z?&Ues4}ctzKfiw1{Bh>rG}w7TfO&7-=#{y4m!k=?QR=(-F38az6RXhxsHs_<@UMrM3vDSRD|bcG`75| zD19Rf3JR(n2eogDK)IN{yZP62y6t$mqZ@px^4g$nMn1O&K9v{ z#YJU^r6!9#dln2VV6(dBUZ6Ie&$%M)VU!t{es7a>6Lz>mI|j}#AX`Wqm;qV3y1FRm z2pNSSv-mxF&ufki5(C1$>rH~WiVTY4n#Ap^eSCepj9r>p=!Bgg?1L}Ci{A%pt~vk# z+5jFHN=~Nu=xt8mSW+8roC(v?vZ$X{|Qa8k}|H-_wej z{VG>9cl|n*HKv=I5Try(aar9o2=s{yA z1%4%GBPUulP1wmA2!*%4>zg;w`mTVAD;M-EQ26w;$T4*Ib{g<^SNlq99{j$n0t(!5 zj@zpYVm^gWi;N6|jxqXhA$-5FO9x`0*2&m+HC72T@bTpqimUvyd5pvA4BKHwlQ69G zXLKPSU(=sZ^4k)f0c>aMbqpaTl)j9Gl649G=V8b(IGoSDFp$>7b`G-IG!14h_A+2lzolMw-crM8k57_B8X_j%) z%GTaql4>Fs5&%IN!&9o`bq+3O>p(F!zbEdT{22tKGG(`vm^5>?HU9eZOOAjeQzCD6 zJtky~S(Uv z6Bv%p{FXn+!^LS9ZT?+A=m!l>NS@T#>u&3uXQOIOTdJJt0`xnJ{fZvavyQCSwa~CC z-xpClQj)Yw=a`p0?)~|qUL_aDLzR>5EKO~;XQ@IC3o!2VDbGbyfbcq${XWe&dC=Jg z&Zl-k8gMZdkd#q|KkLhE#olG@Px2h3WR!93?aZREowtB_ zNB~-$_>|GnpPSF0Ki}HbHz&Z=gd&Jg_2KG4C|pfE@$sb;yqI2{iWe_VA080;x13D+iWtvF5%=#Ud#yQr{TMBci|$DiAAv$__IxwM zJm*VAX88A8LD@`5_Cn9)?e+-tr*Qe}0u)SaC#)j7LqV;$NIgviBo45dMqMmp>s`M5 z&p!|LqZyF_Hd#S>9c#Z-y_w2Kn{DfWQUiHGX`&X&)p~MRoHlrN%^rbl^Yf28_t>(G4&?Z2V$lV4Xjle2w|Q9;0*anVHVaY#iAT?e6_k{a05r)BIwrBXZdN|~ zlPHvH+|?8+^L+Pq2g(o_h7xHqgSF0`ccO~-3JJ-}ds>7-Vf!?;x`I#ct0jq%nDNWe ziPbq-rsbM9S%r6b8PvcMefth40fT=ZlpbD)K%4Z4W`5b_l{KzK%s7b_19n^4p2+%l zZg>)LLeKg(V8~M|*^I-S|v zCx>1nOV!p-)%qYQbqG`lkqkndo{hN6H&ejptaJHUAIoi2Kd`mA{TdT*BxDcAt0nQo z=H_xq%2v~ltpE!YztN8UKv#T0C&+wPACO}cTyNcw;?OIpC#RM8dBK&?WMPx0tjsy1 zAs^ca1S^?1cuWctQolq{HUuQQFB)8B2|k(V(d7Af^A6P-%*1(VFel7oV|r?GWJJKa z`$oY-!?8spR_FC5#MbQjE2?mQYXTc&W6X8!+AidYCP8)sgZS07t>jM6e4ehDf!OR~ z(Mn<_>w%Wud#kjx5A0$@qy43KK0hrsQf~?jWM*Ym3`#pm<2LyGB@(~%@`}11s^b(F z&4B~R0Zrh+$)$yp4|iW;K;V^zB}hhR1;(L-W!++x5D=27#=vkraIXYJ1V0^inPgJC z$@g$ElX|LFE{syU%8!D>;KK`(rWEdA#v|jKd}iDr+}PdTz^qDlQzaot?cJ9uXlB^3A*e;?=E;ZXMiR zZ|oJl1Jb+ie*IdsqS$mC)n>4}yi(o;(ycQN@s~E5UHTe#hD%KEGX@@2ptp8*c6XP? z)xSB6Bn3QwzJPEZZ!!$R?b1;B1b`jLim*AqRyfT|Q$e$;&tnTRg*S+M%ZwYnO3_GU z4_-;&os{3H94RS9thZt$Xy8=RY8(&{XgwJ$bxm4Y8aL8w%)V0}83i zSH~0uOR%WW@OA=)$n$B3xFI`7LYBXIco|K6J=7hD6MgLCG*S zEnKxTBkT3+R}E?Q+4935$)qYgRAj0IklEP>AxUwQ{Sdq5SGI?wgCzr`@j&sL(yE)| z=SeWW0AoyWB5r#DkzS~-$<`)B#d7SE!88mx7c3nduaZqMT4Vcq@8k*ahd#`MhQ18V zv))ePeaX&aBut~pXB?4HO(mOJ@n==wxYw$M#JO5uW?XRvz@u>lrnDd{N`RK?_)vpG&XoMum^dGP4y3RD-m^sOe~I&)q#t@dK{$%z%T<4j5=ev8WjP z?KNhd*EDxTvKgEN3@t3?+L37V4)OAIY2#SXPU{J#+6mL0hg`M{K~y$Ouda zAAc6=sSlS$K=zYiQ5r=1L4|b(2ake=F5KXI9?He?jyhQ+Y(lkD)N!PtrmGg^KGrmx zVt^iK*6?w1H*Rr+2b_Grfb1Uuyt~@_WubZ8Vy3`E$B!SW;lIF)Q~}saF4$wY4%1vx zNu3%&%??ukAj=!1Dk?=C`T{F)=r#0Cun6o}jF5!`-=U-=O&W-KP%yHpy7~M2{7|xa z;=mK*D!=2V-M!7En*d%eHL8KQ&gwk@8D+jrGgJ$CCx6S75=;$Ki8@tAI59i)UN^_-tY(LJtcRQS$x7~IOP1Lo}i!o-@2)}y2wTTRZA#ySyoAW&Xs*H zVitT~$mdx>tM}UYP(lb?u*)}2yvidk2vB^e*5F|1bQ1!hebNO?BLoiPCXbn2nexz= zuS4~h>*dQLKu}wT$ImV!fB0nql@=?w$Er^lfQu$BT&&My?XGp2&`w^t z@HVOUN!H2*){e<$QuQMYQnA}8{Rh$jt_}IPMnJ0UKCBLMNP9Col{r) zSmQ8r*I4#Ov$iRl?HU!T>NI@~=BR<*GSrklu12(i&Th0K&gq!?)zxia|Aa$0d!_8h zvR?=6?&{lYaq{rI&&N#t1Z}K(b6pheY+j7Fo_13o847uh3%aAZdUv~zLFEVU`dN_a z)7>O}vOgCM{Oa2Ace6u6d5kNAdeAFFD+~f(TYR@!aW*JaP{jF#Lg9MjlG6WSUq z_GgK}S^cJW{Y%OPorWPA=@NHa4Xl!|7w|8LkFDFx=`f%%giwgZlwP?+@E*KC{eeQ2 zhG3^t9c)O|T@8QBJm@*{@YX}WT)E+J>SJ-Jq|fPjR1qNH-LTk-;61FZIuYUM#lODY zZ+#jxVT-T{J)Y}gQ=eV6(FeyCS~1rcQi00N~#!rlPsM!O4} zp^cbeq4~_w&q&^4A{#xcMFG|GZ&InVLn1s^M&K2xuRrd%?}T?SCWD?BsoQf?!Oaev zBUKA{#-ImT_iv9j7U=WgHiA#n8p?nSW5E}i1h8{=`daj}q5A$GU4QD{q|MF%KP&+W zw8?PZ_L%{>qzOejkY~~bwY}UFLCgLKK#*xStR{ZoINK%k=N{psA=ruihXsH=Hr-ga zXH|oRlF0msymQ~B^|*F*vI5PG<_^`kBTi_+!wxLcBJm}L)HL4KD3LGH1J9?vy{?6+ zr;ZIYK?TA*RoP}e@0sQCDWM9rEVp&o#=TdoC0)3n0t`Fve)iZ;eR@wygnf1TjU|G9 z7<$$I>*I-S0MQm*$X&T+p->)IUaH?bQg$D-TzP;uR4WQR!TD5~K#87@ZCUd&-e()F zG7)^afcV%C@0xud>;zEy_nvS}!c?G?e-zJyT;eK{U8k>c)zu|wN!~g}>pVHt^zX&o z?rpzsFdZbV2SjLi?&zM5j}MQ4sFdXbxw|eRY1F92LgCGMNm?zywrzvJEotrZ?5Zzs z-}T zxHS=NU7A`O=jR2&F&}{8&H4k+*pzi!M(fa|wdecR6VTc11L-Sy1%#BSk6^= zzUNOkkA5~=Fj>Eo5F~BNmr9)z|N9WJJAH`}oPQG-&=niey}K}n5xMbs$qe>j=T7$p zgJt|Ip0NxvS&%ri-(NA;(IZ+I(r=@lDkfPLRSHb7h}M8HSi$aCVq$-xvuR^0(K`}G z>4QHxKS9bP(-%OZ+wt>POPC`nG4v;9UZ6k)dwZ}=Wovaprp-P(MYTOiic|;Sb`5OI z8Gvd&=n%u^ZeI0zm1R@VU%@;gXzxh)*t=k@veC&VL*n`6$(v0khi6#Ri%2FamI%S( zyG}S7E-}%Z_<>*}6Wui3)Q8z3&8i4fycg<|H5X7-ohhTrwKlrJRBCYir_AsM&{K;@ zK74nB=N=*1nA5OS5cE4r5aU(Xw3fqL(@O;y04U$NlIkR7H>~Y2iN}!wqyG8c)CI76 z*LL~xToT5OMDE_N*r)4?1Z6(Rml;u1g;cxeM@p6B*PHtxCk}>{#dqQfkX9OXM$Ay) zAE2pO^y4URZ@++E#C)fD1Gmi6{~dK(Xnd{R-fJJRE|(E7O!OhiOU3_n3+lLlAXZoz z5#P`MoDIKf#HwLhq=e05JBt`XYYth}H%o_F+&>^td5AIYLP|c}&Kq6n6 z^0FlAR4+nsu-dLE4s^cF!E#WuMXM^Nd*KAoEIb`{jC5<~bK*aw%08p6HUhyv7=NpM zXXDQt!6y$2JV)f38*01oghTJt~3eT81% zY*eR(6I6cX{_E7{=8V3pgB?8=<|?iA`I)Pax+M1}EuHtsLwitN#!ipSYK(+9o__w2 z{>V3vToXvudis0QMAG79p%^uhqO@yfW^i#HPgKoQ4&$OiAT;Ry$)RH!rF%P|!RRUr zPew{a#QS&x?=@V=4sU&yNiX4(#}MG$kdn^L*Yd|=+4t$6+H+CtdZXK$}{^azhb8DlfdElrg2+EoR4^m zH^9)GgVx8brzRA$wp*I<5Yqberw!FSF$Mb78y@i#iDsMES$f*@_nZd1Z1ih4MxTeW zTbo{}+;14yOs=8{XmXMiDigs6jaPN-G9P3%<6%5+E%?;zSg?=dCfvouCs@t;a#58| zL!Wd7zGhc!v@TZ8D0t0C$HqFSZ+oo?WW(v8FDZBLJC1pA>CFe+e3w`ps0by}uHt*z z+QAT?fTZQdLJh_8%7qHl@lL5Y$iSD?KXucB*2F>rkn<_)ODm{M*84NG96-$y2flU+ z24IJ!=vE38vac2%o8pSWcZ_t1v;|_$Hnh6ho?gBCLz_8Dz09#12Z$W?CU>2HfTp9P z?f$KiAMg1s+Lhx=T{Zj7C}k7E{H3`i8}|kGJ-6HrU0S=!rW)sW;OHWXc{&kCX1?a5 zO7z?WPl~iTL;Wc+RSa}6I}wt(Rcu&Br9D1B9BKHB3!j*jM5N<)@u0Z8d7*l``}JkG z1N}sc+$9l*45*|BMFah#*@phF`sP6#t;bSRm_rAJ@=wD|gPG0#J&B{Y+i!_k6*g@y z(DAZyxLaiPXNc(g?X5z~Znz9p=0RFbR27hjF~;DQ@0(s6z49MMFl+8@gE{b(ym;zy z2g~^-t*xc|(J9-(11~~YBV_Q82q?%$+A33n6sK=G{!&Z2yZUq9h$3Gjp#6jJ%q41t zgw&z}jQBefQ%2MK$;n7-FTyP?=J<7^x-+lMt>ZZHLw`Q5em7rG1@L(N@@;?0aU0#8Mp(SQg^ioy>Uy8#{8hrfmM@qOUvErO8m*7 z%t1B_Fd3R=K8Y&S?}yCt83#E52_QbQ+Z$K&>7K$nqbL<*hsfgj(8H;0 z^+|vYS)XH1g+IcIceF^Cr8h|I6$Kx)IW`6z`_(NzHX0if&XH&?4>-+L{=xe%hxUR= z_2&2XAKeX}wIq|g9iY4OxDfDQ_N&~cA7r=#5?~T5t&xE1iH5RgN}EezgS@>36zM(z ztj-}ReuKf;uaUi1VvuA_$YEHJVrfk_;Ua&Gy5ld-8f% zE3<8z-rhi`+LlT6Xh6d<(hdZ_z*?d|%J~DiMY%~-ubLp!-q$e36qr@&o$QWTpl0np z4LZug9HfsfiVYU9ys3tmfP5>Rm+ZZ%6MHo_kMq`MT!o!p$DT{-c zvC!~FeKUXcWu>3V;v1`0Wuxoct}X&9;?KWbKnIBOlp{CzcoMf4{?wr)jegkaDcOvb zTWEUekgiIek%tsNYXnnB3Tp&sqV9-8 zNEU0r5?@#ye{`Jb^G%|E<>OOuF3TpTzJ8ta;^i9;n$`HTL1ucaofF#F9&|>AX;jCgI<+7W9d)iMbEIZPF zScO4vFg|m*QBEtGTJcL``(`gow%My{=P|Gir`weQZTqVF{3*UII8V=~9)5sk>dsdW zhJP{e6RqjDJr$j}pj92FF=(N{@+%fNKx~>C>nM&9(%^h3U}-=J${wS!Ht-E&N-)r3sU z{#n)j{lLjcS03>R&J6kynKghy=E{f1@vnZT!L0XXSkL9RLZ~)(V84%ZSlV{BwbLp@ z3K^gCYXb2=PeYz_=*EcAI5*jb64*EY?Gf-P^rB0ATUfbZVyhkjj3b=l_Jy96$^I_L z@-qUwKpN})z6?U2+%T^-b;V4EIaHo%m)sQzCiB4U_i3e$l~qoPQ%N&>V{V{_pb6jc z85vpcTdyho!dOg2%&zm9VS`7Joa^t6)_o*U;acN_IIma~>`o_YxPJff9gaUqK2Odm zHSLMGLBVa(3)IWnFCPOC_+k7C5b6uJ_Ip1p%B<}>GWDK@in59mD4d}6iMrEI#5eMq zr4sgVcB7v^BHet$k0()C8_gnm04){?srV?D75^lH^fY~Zas0`&)W?x(Egk4&ZY)Qz zrRp5F*(yw2fAwp6wt`cjSQ(AKZ_$TmD_ScE{Yn$F_xn^@vK0$?4h-!C}eoyhG;W<Jm zVfq@maw6sW1=jQa+q5yq+R#2Wky8tWX`o9Cl7^}@5kL}ag45Ky%*V&C8?AZL_DdYe zTQDuXH|qivCB2%x%;^4?Ld7HXqrb<|{VEiXipOj2NGp|Hq%f1(ZKt|^ot}GTxLhF1 zVLVIu{OxAHJy=y<(&ptPHpbv@5APQ;^7YVK0t^Q*)n}hNGNYJ1G3e%O7{o$Rj5X%S?RuNBWRxBY&s#| z24H5L^3M{9`SL2e_Co2kI!4J-Kp_QGuYzbR%og=Ri-wet{b=VTkPW_a99uPL>Ez{y znJ!b~GB%d)y{8*vEjQsX+F9ORUn2-@fZ$SOUtl~-PAzjR&9%-Y8DYlh8=~>~J$_Zk z-CRJOgpz(qkhNeBp~1^*V3+1WUT(@&<1v-mS!1{?`jMhX7jO>h2*e6zmDX7LJ*bI{ z%Ia+Ot&>QSv-!*)X0^EC046m5MRwxVDah$s**gxX+4r-ttBw0aWhP!@=xOAKsgt~# z8Xt8>I?0dH3$enRJcmMe?Up826^nVT+KJ`^t~rj68^W8H+nFllYr7@RC2V$*S*V+n zk8%5lj6BYd_Q0`a(2gWF=}tBNR{1FNo|) z8m_^FvlD{?@$jD7LZ=BxH2ZPO;pSpiZv)%mZv4R2k#ZJ*fF;b<#21!o70JF_pK46A`6U)!8n0w@+y2k&SAL&?XXv@R_d(XFU6B1v)wv(F zOx?h}W12*Y4nKHk`6GqYrZ@AJuwzQopQFn**$wuIoUEVGC5G-)uMT(OH9_0;%-R5Y zuC&{nahY_4fnBM?d2hbc3Lf$IU^(1LrIClT{Oaau`Gjf0^7diJrnH0dgAc3{BE0> z&miRYGTs>L&TgDvf-UB^`tvNzsS31mL?t{#G2D|2BNw(#Sgn?iPFn3MJpsn$y4}IS zKq1#JMDem8%5|b!_u2=vRrmK`EtSW?(#KYPQ-n-HDVe>V3p|(eqlfU%Cz$b((kBn7 zev4Gr#Kz|HydNbU@@fk30aTfJ|wt;aUq>d+^@dPSxM7n_5Aj6y#bZJTCTueNr~FYT*=2$}h5 z{|$lt)}sZ7@bH@ER)VgLfYz;U1WVv@+ibH;iAzX)Qj+D;4o)y;TW0VjjdJ>+Hu?*eZN%U1>~qgPT21b&NG~ZH%mJbrc~t z4N?HP=dw*ZoY6UhNdp*mk;`Yff(T*`e|@Y66jDgx9`2{aso-e%bkUN960DW<)O+j>nPz5@iXbXYHM z5v1AO@!1BiHCK1^$n{{UX-JPf^a0*#0mw1bbC!1m+kT^gcz}&zgAGK}iik`JuTP4S zlK&%^SDv7&`L+Z#eJ(5DFr1)uA+=}{Up5sGUBO^k?tZ)rTi)S-^Lu{USsiTa&9UkQ zR9l`;_;1$w+zw-xy)G@he7+6iQNsFhUGQlT{Ll9b*onFK^KVQXc{*?_7AO{^i|Up~)X1&mkX=LZuAopNVM-_z!O7GW`?Y|CsGR#v?h z{4am^X?DpIkUSm^`UN2KMLNaXW`vKW<8*jad+wUHdaW4|+6hIp25pZv+D0D<2R0D8 zATb2)Xo1#E1#-2j8qL8Ad?rkU^gF0cc?ZZy-gQ>AHT9Cp+1U?{#?=9Ww*3M`@Smcu zeeQ0H?H&C}N5`-h%_x$j%)mn^Rf%D309@T>n{>|lXQvjcF-T((Ubr>iUJIwzn$fF$x{vwMD%?PSwr0xs znE`G&Fk&js8_OJ;R5JJmNfXcaF3jg`U34A%^AJ&27ZqEt)fa%tGgGx3JkI6`B{d>b zK&IHeVCEKt03AHDFsla8BeMYDuqr@clTM{2g&Ra_Jk*!&&k$Dvl5EV*Bh{>E4c-Yg zKgXF0IiRL+6cy&-Srf3GrU$m9`UBiycye9A0S<=*y-R>(3K~9slSRO$??K3$c6s9& zYHy&zXSy>!(d`z9pYn$NnUzhpM59{^D6nln;q3bH+rkEC#=$B`?m@JIqto^{znnwE zm0J%U)C@LfXlP)ArkZV|S0}M4A7@nove2trrMj=;m+C}FMSzafX80a~wgTvl@6#J{ zV3v%K7APjGg<=!GrcT9BZ!Y$$`S>_-m=wm`;4*>)Wo;&XFbv|8-Dv$ZncweZeKpOQh0 z9q`xj^B|&PWp{sHq%LLDZd+=II|smD-3WL6LmDWY4fOkAi}Z{eQw1nRFAny*opk#E zoK~#>HMg*_L_OuFrW~1^2wX{oj0lco?Oa2&4XaOub6}qayUTdBN_KYbyYlk#uARXw zAkSLZR_HhH^{Cu;QUOwsQd0-1#n6{>kQ@g|C80K@m%KXp8gAVm2HijS*Euhoe0zNv z(_^^U|F~De0i5cCV&KQC??}=cr>BM{N3=us-t6mv&JFiL*NzXOi(8BRE@h~ZXKAR# z^41j?Pg((-)qSzo{ZWBnnqpe|O3Pq>?rh96cW0-W+Nlfi5|R??Hw~QWvm8oI5HQyB z4}^t(tcLB>y39CB;X(gDi_jfxm3-yaiOL30%4j2C)Y~nnj(+X_4fz8g!#^25VdU)^k<+K++!6A1LTd^B3GGb6}CP{UKVk%_FS#?airUGpl2{;b0 z9{3`=5SUMVJXU3E?0lvVd0}d2XRv%aCfTi9YS}1wi->!2`j;1Qn%MRngU)vvUgpkQ z>C`-_BFW(YrY9N2y&~Z<)o88*;z!G#ntX^xH5#~pOBp29Bk$?`O6PX*`;Z(DCudE= zf;9c{Y19AejDQk73EbZ4CcZPtO|WS(;l$I zmG--z(vC4_m;{WV1Lf5PmI@H+>bTyYx?6yBqs?PUVTIh{BakR8g@OX#8I&vb)rg_S_ng(KgXb`Va^=J|E|j&>_Q=0VKdsttYeX?od#`<(T%_HlK`Z739@q8fG1S3MhiW#*50R6>B`(sW z$Q?oM;J~bDwFh;L!Klj8Shf@h#EAllhj>Ualj zGNWeH&Gm@6z4xEl1z>gO0P9jL$+g`)SR$u({gbh-RSKCMOP-8#Hqpl3_OR6y1ywgY98;sSx;*h6Ipp?9eS~&|(LEd|lfr!FA7Dyj!AzL=`6h{NF{!19uI4Y>OA4cWp;Nu3qXKDDbSXoo#- zXw){{7U881!b}he>G#|ge@{l9JFAI1L*-40I?RW5xTSa#8|4zSj#j6)(GIOY&8^tL&Oq?g01%YEr`xgnp zD&T%PZvqK0Q5lyLWqLviyOdPRZ_FACa9DxM^b5!pzx1vG-)~%cI(HXMJm%YL=56t_ zPlY&BBCE4?#>HJ%P*(kqE6w%2R^Pu8NAOEu&VlLi_i_1uYx(_uFMs!`(g$zkDzN$I z&sCst-rU-|&d0~MEe;z2nq-1DAdZg}`#8%Y~CxwY!aL;TcEW)_@^FvaCYf8 z)VKYdZ`>aJv$rQKA{{KPqN*C#{_28=u@yzf{$agd2Mze;&WN*wiP<-cpzIb&(4AA#T!5zKgYg`AA}MO=rSj9PRA zL)Pl-!GgM|X8^c1FPfsxvQC`sQbX?TNOq-3NH}(|(LHMMHK3$72d`!-2a<2_dvr;A zogZH5Pv>_iMeFFf25h&io;^RSD09{oU4+@mOPvZw_mY84(hUA}v)RoGb3j;(M9BXA zu6J<<2MvZ1O{`TNTvc;!fo=rXfol~|w-bHgkuSeNNkRIs_eBU@MzRP+sS7h4yvv>F zm54cTy2rhY78XZlaW25K;IL$(TX<%0l=>g4i4&ReUEX6hq>!n z(}8}CwBhNq>yxtvR=qJ_<$7@9P*k0>q9NLSI_Tsys~Jz^u)O-4DCmOqTc&^Rbzc1* z;(u3e()g=kjauo%c!Sea&hL`atePPsr>WAR+S)QPE?#+ASC`4`?9f%71Ia}SQc?sd z7yIn#zJxFAt_TfmqnDy-QF8Im2_G-nR;uSm;KmjN7Rkf4k<#DZqlYVc<1K;W>KXjH z$f{ZOs)`ET^qHv!-(pEAyIH33S|>URS_%2J3h&q!DUz{>_$G$(rm`z8G*N^bPn7U9 zPi^@!SNP7(PN6PRZ~hlnwy$rfsL9ZGlb`B3)lyeHo5#w6IvFWxe(^}z;L1q3+HYR= zr=WQn8x%TxcYgy!9?QJt{dP<4!4PKETaqyvJi&@1Zi+@MLG+gD`}M zh~9Bs(0WIjDJ$XrgS@MR{QP=^C z%qX<&FQegC-V}Wl?CVkir*aBJn7Y!|LC_P2orNXQ(UD6F2CMwBD7y~s?32d<=k7>) zJw+Ndxb3gs0Rkz8DTKQc(&$OTpLz1W16383kH79K*%?+X-4eB6u5lcEyj21EprK!1 zUSwh9Dg^5Ka6HfllS$CYzj>p0d*oktnUBs@c@7ev{67IRI4dV7o|YEx4Jllfmw#<71dC>TLD@R9p+jISPlQ->Zo$$h9-s|+uKAY(lmKHT7q#L)>>7GmqIiut! z%^QOfPmZ=Vzwd9%H1bsl&%b{C`XU9LSR}7G;z%)+z2$PiciWSxiGQ+Xe);YliB2Jk z{i1X|VfQ4Pzj2j+HzY4Ls=J9KCN5wXVgUo5aAk?uuM<8a=+<5M&jIWZVE3N8z<;^p0}Mxj+C3C zD@hWbR`NTWa)1|+J@WkY#C!on$9-2Hiw0;v8ix5fJd_9;Dd{M1aaF7?>K_nyeS7BO zqUqe5I+$3jkJWp~ad`shDn98Ag#)ZggU`I>XC*7)Gk$5j{2miQOhZHC)*lkD-U?!f zH|D`1@|FSd3vX3FzaQeee%oyWolh$0vtpPKl=D|awD#|A!w45pH%ZMsn*FTVg?cV`gKwb;ja=+J9UCf z(+y8~iwC>CswxCkZ{`eWfY%Lp4>p?Q@u!31@3iBz*^hi5;j$j7gdLxt>yN>ztlbN` z!QkF)EFDx>TDiC=O;1bxtbcAmXgezV&C8Im{?yQ*_2F( zi;pXBqK4Gu^hzwfMqnGzu^A~fHUjJ3J_sYOO^fKgw~L1&`S}I?vGz@9wK+|W?3M-V zD%HwTL=?O{ees0jy)AM{Jb6$Q=Rq(jWF5%a z$iEYDy9s)Dh)^!s!RhO*dA{Uoncdv%i|2{^o%($=H`N`Y-xK}T($dmox}0oUu|xuQ zyHtoO;@2dm;SYVRlH0ncL(O7KlNp~Tb+xEf;JSb?nUS4ozgYt6nV;->t_ZD<& zPO^W#hqN`bGBamR;+9fD^`B@qxr8|EFGvE<(P%ddsZHT85r?_C%hJZDTf-}^Rl8&9 zuyGR`U9>5r<6$G^{1noCw!JLu_XDD}}dIiDcx^Er80%+*Hh zQ|K@2&iwo+0JVa>+%zCFHDzLA%ewd`=yGwCPD$ppwUkaUn0N)Q&YF_>@`1xC6(p1< zNmtl@c5fX0aN(&P-QWNrDkYE$$+rh$<{O5kjEz<0bBK(Lj%)+@#TxOFG|1ZQJ$ACj z()L5$@BZ^ADk&)`FG-9uFd*R7=0w11=XP5F`U+l5)J@}tH$3>d4!Z}6yR{_-$_Aef zJ}Cu06&xvlM35(42=G|V1nJbPNZ4x(0uS9!mqk{{VWSD-c1yoLmKD`@xYs0s0ClO3 zj*g7MSY=y=@~Wy=`XIkBULcOXkj=$nW-JCg@CB+&>SUZNpgP*ts%;e?4Y!Au1=I}L z3|mS7rkm_yclfp>ET<7oSEr5jdeQy5&0cn3bTkUs1@jLKfOx&2o2zc-P0P7Ps>=$S z-;Z7$bS|xrCnXgqVa`f=#z--iF#H8Pz*Mxh%PJ=)$3VxYNpbzW=uvNV{B`F1gu113@mCu1ZJDN$n#I)7 z7Ytlns&WgyizNY*p)?{@rJt`4kM9m)*r}!bdNJ|YvahXULvsE6oQyj|iAOoUp;+)?Hr&q!;78p|XR8VOfAEHA2?~l@Wcn(%mA%f3u?R|3*YYrJPZsMQvmo2;GUaPY_>GkC$r$5>VP-uZPp}5czOcC zo~cc zT5Go~wjC1IsFW3zl^Ek>vlSeVD1mAqY+c`;IX!~&8=!F!hF<71qg@7T0IxA^T=LfF)Z=oWxiO;=Z!3T;ck!Y5zv($xvJn93sAQ>!#Ztxx~> zt*{8Z6hgcpzBA~bYYQHkn&RMc>>3U zDmtDR>RBZ$czt1R48@X65wKh&xs`KSQy3T1%RL3rvcHd+?hyM2cL*)paM;`2gy1IG%}pd%Q_(!siELNJabdB}|CCy?>Xz{m{g~ z03w;dl6`l39i;kGw<93y@-#Iv@>6wn^-AN4?r+!)2il%tr+4Yjz<}Mz{X1YP6#ARUPgdB4 zYkGQC9yDVFWxV0Bfk(ruO;3j=movF1=p-cCL+9q6{Of!uHF4=8MZYhCI0} zipP|0jck@P63V5T>0p~0p+DKIi3o*4Uw?c(kn)4YxqQZY{kGDmRp*uHK$mE)03w>a zjMW<k2AP}L+7c?FPn7F+JUz++5GmLaq2_uN+! z61|TY9)|--jN(aXwC~mkE(v)^w8Fg8)1Lu5yafT|DbLIHxYHd)yr&2V#uovqljDeJ z#6!S;c&jy2gv6&nEQ*}OHIk3{y9X2SsVfGDI$5HPiOV9L!u<-D2BrDYe|!N5mX?A! zv@B0^Q-`N3TBDPauKW6z|9lUELqf~}!+n9=!K9q6EhB3A4li)}^29PbRt&9_Uai8u zlrA*2LD3dH8NQObX|C8xqDPgJQ$NBWqC7u2$=u2_qPEo1YE&XVJRmu0eKhd(RQ1*5 z#N~_bfs*oPl*vfXUQWMt(>mc@Gli3We6e(kwx!Wk#|?uYJv%Oy&E!JCc`x(C;H$vb zZP3DuPKp);rcXr$6}Y8(-qH(vZbgNh%IK*)gDJkF&+nsFEScArD78mBgD;b)RTN%M z(g+Bs8uKi{DP|lWt}}^9ZQapciNErKKFa1jy0SCC=b)Tg!JG3S1s{ zg}U}vn$O10CDh3Z6$UEQ2RC=wCRqr8ypV`%ts5I zZLjRca-$Psg)27u(kY~gf(}8fafBKhj3fvNvyIhzanS4_sm^3prN*PF3;Azn(P#NO~uYcz5w6N5&UhHF5)F2XJp}P zW;V9!Q-CD}>eFLZ8T8}DbUKFz8>-koe@Vo>JDns00ZA$8P5 zL+joN`n|CM-jqZd>SKdrnWsyKIq11TsOKSjQrwjvVeaWm9_ z#T23xTVDR8P^lz?+1n5!j3?93Zu5YU@g(v7OW$D`RTu9Pl*0$XjU@K+THE9JsgR%n zN{4u&Zk8?)%oV8kFdiF^s$nyWh@k?B)? z$NdY0k|@srMQP882r}{8$CTWkn~aWMBcbvZLOHY@FB?zKG~WO!o0wTxkA`xz-IUjD zEBsl;QMHC<;&423?)b#ADHb9gjcxo^Ze09_6~}MQT2R*MnW+)OR1Ya-`rgMgau@YIsvK?$)QAoATJ@AAF{#K`g35a49LZNA{z&opUBbv^XwuF;YpN|q)7Anpi&envnna!m^apEpl&9{pO?l%!Y zBP4aj^65fN%l%!$3L~%KOz*`25 zmuRX#QT5P*1+B3m;ot9fxAHi!5aa%~jLOf)oi;FdW|Q_OtEi09{YOH=C#q?PSdQL{ zZ(Y{;^8x7O;rdUf&%E!I#0H({5=C_m`BR8eDlc})FbD~=od$qlduvOUFXEEh~p$ncenD0+n_|EWAfG0R^QVKHbH~qjQV)Fpo@@F7kr_M-mE( zaT}Ux`@OM`$ZX{A-VJr2;FC=*Kk7`Z(et4M3a)4kk%OAWYRFy1fRFfG+^3R+3KLa~ zJBoY;>Uw;tnIW3iHQ-Aswd5e?iAwF7Yvx#4*k?CNf3Yb*<&$gDYG)j{_Gjb8505eu% z(c}`ifbSu4`)+a=lb8KQ`ZCBgI;Z&wk6V3^>p>h7QYFSOZ997~fc$12Mb7#IN#Wu>zMDj^5Ky100 zf!q2MHplxv=oDF2+V3x~bAVlG`ZHNE0NPiu>F__9=@Rm8nytksTMZNhe7^9Exr1U!1_aZ<*`Cm|V zd_Lb$u6C2u-3nhW$27t$xN0X^8(#q?p9MT(J7Xo8D(91Or78CTsGO|kv1WsTq>8pOg0|a)Ck!rxApF=H2TeqTK9!>HBz81 zdw2gN&6`~MPsL+|&6vl8)5mWfuYUYtLr#u2IVxD^rm33Q$agRK3>g_il{vwxBdjsl zzk2oew2IA~5m)I76XJD9FZJ1*?suMHCztL!SsUJQuCT-5AhRY7=> zVIxvo!zF@QMCDgLT(P&`$>t!{V^z9@!h;X`+!c3n243_ZQ1g12uP&~7R2AiF896Qe z;@6J3tX3ybtOwowYS%JyKAU-1d&Tt@lzENjRvlENr4=Ffd|m1|m`SkZ^Pp{L?lDZ? zRQf{T$=mFQy554VX5H$k&f{|7KXG@%+}_?xu46ULG~nTKqjDa% zAS0fTM=JE{*o5d0d&Tt1F$HQ%19C`E6N*Mh;PIx0R_{2LBcK#9R7t@`JNr<{O8R%E)(dk1jf3rEQbE$3lpGz__}z1Cdfp63j`C zNKdDv`BOxzk7ATvfYMzdf5DTHUm7|0M+8lXP4uI2PhUh7yU(U=>@}A42DoSZ4X1-!07qhRx9AkHufJV$kdsSeCi-Y>ZD(np>YN)f5i@!eV(#EMR(vH4D^n|HZ zOy4d}gROECY6}x8z4cNFNP5&WrMRYzgx*{-7dQDwqDKYv*s5~%Pd>U+rRt_4QR%pi zg6hoI+h;gN8FR{mO|FqkskAni)sfea*1;xnq`+(LZtH0#^IGCydhV`eTZKDS#rjIx zDC!!d)eG%ryE^`O-uCVV_v|I%<^uU-6%ZJ#;Ks+oToDCx zmCztiRaFaoBW=;sw)0vVF4EHjvqla)RXj6Yow}Gv96_tJRJ*VRk%WYF8$3ZWU`VjC zWv@o21K)DnNekdOT+=0Yzv#F)EJEB3kpQ|n+3Y6|Sqfl)2fT_e-=)eXpwoYm#c`5Z z8JPJ{so#qQJw8qc7-mo;lK=u*y1)N3Avz}uoA}h3ovW*n-0wLFvvprGSY}yWOQZKz zbWZq0oo=QWU9gCx0A8C7oc^dSG;D8MGDVDl`L#}mjR&}dtfEw~2or7V%5UxnY+u;Y zg+WF!oWe79_bK!YP}kp)aVqv^&eYYhX3CNZ2h{JjW1^XvMy0Msx~Ih>4he_hNz$oT z_f6VoYH&{Pd8W)KMO{2@?2G}U2=ldyCS1gUwdjgA9h(bx=Ws?g-tR@oG?8F7(xY4N z(y!sN4HmBqZOK`OeZ{YoC6Wo$C4@byjJ{;lkfwL>OsFhf>y?Kp5*ud&zZ<`Dlx7(S zZJu-eaz{Y=4bI^sexsAI^e=3t85pB@lIk~lB(HMf6{O!I!$iJ7 zdCBTuXDjH0Gh^duk4E#!bBua#bHUTF<p}uQ8P*)n&bS$|>AV) zw3`bN5&hls{%vBZ^${swZ+uZ(^D}X5hLPXCL2Z1Y?u)y*&oZ`XZauguYtCwlU#rXJ zZWBvb+$3oC=$3QFU=1k|y<>NJZ_^V^rI72ODVxv^EN%OwHnONCgTY*K4o}FvAD4FXNm`WzHWE;!p2EnK& z4?*U9a>gOQVA~7Ew6;TCB8^SFWg%6U`tyyFo=*LtrH|1G8Sd_}5fS#G$9M4`Oi}B` zO6Zz-J#IK2W_HN*ot>RDW)B3NDLnl5m88+<*soBYBtl8{kPG}) z2^X(>s*om>zLO#JoIIBTJB^)*Vp4>!CmC9xW?1KeWM`GHdWa=_^W*D2yQH&}(3Ckx zMLqo_4wn@eRRnvk4I|>~?m<={(kPJaS2cavK0N#}T3ipz!pa5K>@E{7>nNm>UQXL; z(WwpP^d}0!`PTH_L??V|k(4IlQ+l#lsBDWxhQYcF7i~LkqQiOJOtW)w5>-(qmC8$Z zWeP?DKJ|7xpMYMm%l19Z^=9flm1p!ij0DH1otnn2S$HMBN#i!B$&^iH`IP? ztum%CrMzEib+6JQekvQT%VKz-K^L~8q+w8sXP~d>oxo6k_i4r+6kLVuKKGsm6kB+bh; z3EM}!Z97_!~K z(H_IyfY?Z9q8QeZq>s?8VN!@_xTX&nPEA6DTd7Mr8B_|+0KR?6R-U1WcYGgb5(HU+KO>9+iC5O;Z#XRXnUX#U1 z%!8WWd_Imf7vi(0+UVpy7yrqbBmYLNQfcsW~2AF*E z*t$u%tzwy&PW#)0ORjGA2@vRRG9rrggiB4ZTxRY3ra^hm*2-wA*r%TjSI;(oqWExsD6gM?4zqUtp>eS;( zOdhG}C-Cxd+3$&-?TqJM)N-iRSTuEUUmEwT9oI+$WGK(UAYRJ6c8<#S=iuVv!r#s7 z;n$U0VwG3FnY&jG^HGbo9-}q8v%+X(LwBIry(I8nh9#h6lQrhyDX%VjTVv3Vk?nLr zoKC0CR%o^g%*{YY*#M7A@0sGypJ^b9%+u~@=xx2zat4kQD+|**Q&ZF7p{YOpn#iFy z$DPE}9_aHbHFwz1gN+pwnx>~bm-C7R*@xOn9~l)~dG zx6f6z-Q_6)M49heSOr?pSUJh7&|j);5Kjv%&0T`o}?}=(%yc*n>(fesFgamh2%l9Kw6H*f&XQ_fOxE07N<1c2W5aXIlrMM>>09c z_{K#5x?0NdhII~E9FZxY4$ig~e5jR6Xv>XKxSwNRgD7+CozdJlO0sSbwFY6gP)tQo zuI11um-r)RtJeq!ZMOg^WPy=lgj%JE7&ri|U2EKuJsxsk&LG{NP!|!A{z@{DH^gJU zJVr}cBr;p*X`mZ!Hf3?m?cjb!Cz7@yP(cZwpQGAA+n!sa#wWz&0tuB2S}G9+A-cR# z6s}$N!wt2v(XYO;FxIE=Bmjh*lx$_T!XM?Ajwmo41eQCPgV=%>*bFALRjLH@jm}Zr zb3A!K()TcUg!0)#WbcORGgx_C?1(z*x7UIY&S*@XRC)nGnbN;PLg{d z75AnFa_z8h1dY?q(`!CiRK2}!VTheHpG$kTH0NoR`T*rLxt`_7l8TG~w+$*rS*}0P z$A^0d8^Q|<3m7if)gyP*msr1d>e{U{Ex}MIgFTZUyGSvaYlYpFVxv_FsIJ09{vzcuL|6FM6`c z5N=k|=lzOEBZ134VM=>pzOkL|gGE-8Q#T3Hi{73542j9octd?Oz;4PS&~R{k)6p$A z*~G?NygzE1@|&|thHrt6aQD=*V6u4tA=HKdq{#d|cJl zHzx7KetL>gmy(=I?a2-3i&JvE6Esat-Q(EmQT5o{DyuoEQTf8TeJE`{Q<+U28p;A9 zOh6pev-bA(NL5aGYTeKLsmQoRub(ZuU-Z{3`nNpg{LEyrr*iBBD9so~TGFo-avVXM zC&QWDX%e_xm{x&beS8#&7VAvoy7V@8U*GTFukH|!SHFb~4kVAIX}Q1Zx->b^c;zoH zCP~iB%v^7Kje1G1k#=17&pLtx*iw!=5fkWI_u9dMRF#HFgd`b0(TStTL7_P#I2;kd&lirSl~r)gA#;`mMd`H%Q1xW3?!n z95!puz}@KMa<(T4{6XKmc<}-Pk;3XXxnv~5(APMpE+s3rSg3uA@PUUXG0L`TN1-f( z43zG2GleWJ$J}4R?@9TE-B9#E8|k=ln!ret5eJOV*bCO>LI5YtgSh zgJ8Vno}*90xk?)h`2GMJ3$PjiJk~S__e!|qdvtU(EneHnoY=2f68LFnL8qk-!$)F|kc?fr=&KB^YZSnBFuLSdz6qR^GeORH>$-V)G!8UK& zi{tUDEaugs5z8xozTp^6qt|h#G|wnUHg_S*3v(A8!zAt3jPY>;a+{d zbX?@EciWEq5#Iy9nsCJGZ+K=aECNtN%uPoLGunAn6in{~5KU~{XV4wA%WmN>QT-gf zQ+|+$N9Z2iqquZrblX}5Cz*R)8WD95o$Lq8GVV}g%SFO)v!<(!mEB8skI2{P+h0_0 zo<4m#(h83#^phW5v&Deu7Zk=vW{U*rBpJ1-nZ))sE&$OaYYykg?$Ie& zJvyLORvSg}V=b1R0BggZrn$Ln?_W#h^~flv_Z$et{qP-x&AlyQpNOG8_WSCzn1b{y zZQj*EUgr}D50b0Gnhzz}_60V@F1s0qYV}-L*TO(bUwj{IqQL`}bYqi6jVFO!p1Kj&xMEd=*`+XD(@wvrffE zFMKK-2|XGnO<>clzv#1=7>n84+wacOP_@>miz7DlJ6a6xnM`dyY!V3#4b5QL-=I?; ztM1+{QN6C{x;j5SdO4}vQ_Z<7H|ZajN#P7($GhW!Bqg6La6{{==P zq6Q;yaB>&qoDCRV2IS=r)*2!_eo#96eOaObC4kUN*kRtfoI0)TG%97v+Ik|r zMy-EGQMl=xwok>6+S5gEA4Gsv!&z2rVy$Uvg(+)I`qjMX{M#OZPy?;T!g~v7es1n% zac5Wv5v$s1=4V5QO4E^}*ghBi%KF{);ez9~zQ7}e%5ne}U;D3zhkpj&b$W;WBQHuG z9>RunobKJ@p53b>hh?XSp%A~AZwD04QU&BC|7B= z0>Z9bSG0nd>AsjmIa_8~$`mYmwXAhnxYzxEdhu}OU4*&D^JD>2!0pv1At_V=1+0@U z_M^2ow~Aab^dWqPK`(fV$2pwOeN^grM88#z1%?`vIHd3wyW5a1F3qaT?bksiyMM!CEigU!+0F0K{!Hr19M;b3x4%^!&>>3$~3=T%#8ZSf+3<`PG8U@PXhdu-z1U}koxQr14 zA6sNyqDM|g?)7{U zSH1#AN&j$deQR-eIDu(X)P{1QknPNIZP_y}9-kHTm8zn2!cfa$rJ=t<6gU}-<2BgN zKI*p@mVX`B0;{sJ-btwsl_NB=mTLEgN1$~MdbcVxzo zS7<_r#Av+qZf;1AJ8O(a#{cyxc7Q?-{1q>qFhrZWtd}qYubQwhcw#h7l%J~?SakKg z|M~}U@p>O_3H|`!uqu&HMWv7v{AfFFg2LV19Vqq{0-W82FxfGsrKNLEmA9i~m7F9y ztlbtv+5akJfV_d^ABj+!;PRt|u`vviciGXR|N5{;Mc;?Emk74bd%y z3k&uD41_I7s^cn`Bxw<(O1+l8CuO*9~=+lKFhp$3IaTeP|X1uI|Ku>NqsFxD0bA= z-E9(l-1)gfCDcz*$GP>lF9v~|(rSGI82qY;T0P_B;E>4#y#6HN2Ya~}8UMae;4sL+ zCMp0DLp|Jw%iQ+a&;bEqL+^`)ls%yJ0Yfwjz+JICs=)K(=XR%4vUH}H z=G?z{%%Kxedg6vq-j2If_k#=$H z@rjtWQ6en8fqau&EbTU?|hi?RAtuIBvW?R=jL?k ze;2xkqa5M^2lz+;ULfJ{LuyfRar-3fV4mV$o`Q-5pbtq3c`_gMa#+kqqJu+1wj`Et zLuS9S_x}F<^C?R!HGQ^^X&AeFB!nXn8ERnlj4p7)J*s52apDo=MQoYdM3QyP5(IJTi zmKTtgyYs>c;hm)EGOOjsva#aQ+F?LN%iO&{+B0EzZo|mLk})V8Hc^{GkF(nNw~Y_Z zlottVJUCT#eIMnCG$bKwk0Fxkc^1ZQi z`5=axM0fKt2;1(!?b+?gARh)MX7=%AlF-OM0+=*4diwH>`Ht@xso|mkPQcI~2i8tm zBOkt|{%JCHYjhXPXPrp%fSl!`I`ua2Xm|MvsEbnf`H7b*IVI+=u&RB-f|*>E8I zo@)Eig>vbL5SBn#3QyO3zvSugFio~J7+!1v5iOAC5xLx4l&#rjAANQOgV?Uo`D8o; zwsV6ZY-Wci~ zU6OQmW(xS7XSCKvMMXKGB-tOaa3@I-@JT()88-beVp2JEYP&LypwJB9Lm@j}Fy7Vm zD_pDDjq1v5Z>}lm_n*{2drs0U(@pxdaiCn9osRJKek3F;7N?;n2S{Is<+ zsL3g!r4Mx>j);gz=W_WE;^|~)3rk61Ftc>%1z~z9Ay*)*Se==@nCu=1j6QaT5$8@6 ztILCqb3WJ!bI}P=@RcUGx&*>vlX6Z1C+}T57gt;x9QHF%;y(Tp54M0GeHYj$^)#q&pOS$C32xMnyiHlKB1(Y;~` zfgc7Pw4saRRm|)V9JKF=|07Y6p?76pYs*S{PN#m($LLfP+_ItWcTTvyTN-C%R?p)) zL0~eHRW<{w>$Y#Iw{P$79Sz#J9FTv400zT!3C^1_VyfuF*WNzQsgcD1H^Qa#wigNW zoeyPqx7eCOdw{`UJSjp@Om|{%jrnM3^PRzS-)~8v1COCgs*87hi9=^_0K%j%gYUdcMHvn?BkKTuu0iR}!*2i~moS>M{8gzSoMj~1e#fG(H{>a%BQ zfI}Fm*c=3M51BqT&zAdZJzZUae}Cg_Kj zSJdP-yI%)<^sqRcuQJ6hmA#==s#-67=U`uR5NJtX*REtwvXfEdaZ0Z$o>k7fIwX1U;z5uj^iZZ4#yMVGHR zTdnumh<~+HI_uRRKY55r;F?49F(W zIl#*6yh&yz<*<5hb0M0*qkMAQ6P6ZUG4?07fnyNB^AbRZ(4ff&iyDS`St5SV5{35$mJPJC-%7TzMCoYxd{dFO&g-|At7|` zN6UUX&iCH8m48|L!$r?G2A6~JJjyK52Y+e%M$TC!JtzLeM0wB4b&Qxu&Ged2+aQ&z z(rlV3B4nh}7@dj1QfioSn0kp&?FH-KKq&UL5l|zVbVeYa)L~2lxiN-*Y=SEb zxRIfMW*ZVoylmPA!@y%9|D4(L{uX97*z>zJN^Tu894FtBg@{(p#0D5jN+#(Gm18(w zH2(%RQ{h~e=qIBwUj+Q*J9d%PDxJzWa^yI+S|4H1A6NYcSx-G7I648y`r|jLVYmVh zDzF)cH4d+G%X?lm5UjG|I_LTB{d<3d!4ydVyeR6W7HQXn0^g*}dM%kZbXtwyG)%@H zCLS`NeQZC|=hmt1DI2t*MdH-O#n3GAU+39y<+ePT}*sPfr#<{ z5ZT!VPA?tS{9jdq5GOoV6AVsH#o-H$i86Ua#s==UZ@t+prYP$MK&iF8QLL_0r&t&p zx!ZMnKC9IINQLOxh6kn1cv4{j_rR@+(+2x$tMxiuU^$`ZVcHL)d1S3cq^4{v{)pA3 zuWnw8Km~!rG8l@e!HQyKt4i&R`?DuTvDbH9G3ts|K$b~pjPl-5wYST^vnd6hdf3NOvYe0YR1-fGXUIFAhuBQqtSPYZ{9G4E$H7uTY zZV_j#P8)WU^qSiZ>oi?}KmhqMZ!a~Z9aY0Zz!1uWZncff;zx|WknDFch_K6dBcjp( zn^maIx`ZN;JiW-8Cp4=^x5p`sdCl$M%38&v}Fv+pz(OmZ47Vu+%RT&SZc~j=Lg{E?(Tk~u< zvJ~b!+e$NZ+fNk_CF1oC`T7~gm^4@|H+H-km(TVPSeKA^H%ax3{)GK9NUZXFGnI-2 z>U%*%?0TSBc@U?)1$L&BPW|Dqmk_am#mk6{=qjb0O4?b$K%2oV;LZh9%!w)+Oz!aZ z7&spCbMriHJc#a=zC9(0a2< zl73*mjBvfXshjwC*OpbJMW-KaP|1vn)ivK7#cD+5+bgsERUs8!AC1W1mOzy)z~#+X z*Y?`_`oNC;BzrwQBhf2;z0&@k5y%`($cN2%w;b-(a=FVhN(ooeQ_z}{Jr~z*Ia)lA zW6+#Pko==6W&>SHCI^B-!9fE02Bm4Ksz*&bE<2lr8j*5K%c>W)-S#RrIv`@avblMU z>uF3%3VpdL$91}OX2)2WF5<9!Kq>azO)}zL%k2h!l|(UUty$k7qlAoA$K&@50-vGTLSJTXInQRwIl+8Lu@3d>S9yT^jvTV3=0K{iSZe_JXD@;svybpe$1DD67atkpc)%}P1 zdNh-OPR5CHK>%5s;nSZBY!(wGAvUpcQtl!gIOzDq0!rU8t701=5~5=lKg!qK46e5D zTIii+qAO&1ueL}{W^;=HPPGrFEc1ce5^9kt0(6Sp@0!xOlck!j90E@|N4*f5IA-jx6hT7sVP9|*ec{K zMj{#AtB#29-$v#QeSz*W08bXfv zf3k7=7ro#-t9sAcf5r1Us+fjsm6 zb#~U$Ev52;hHEt(Vx?+2RSvqhfqEd_^m#g*gk0vw~8lR5Jx4~l1jii1sLf8b=> z#Ds8fX5D7EK$Hc4AG;g|#?}SiZKJvH7_I#!$qj2ip5_***H{FuM^S`{ zmqejA#};cfsnObY%x-4#VY{mZmLD0G+ZfID`d_R3cSTV=5LxC&`7gZ|j}MCcHz3^? z>De=+H+h>Rq`*P}Ph0#bFrhPYgv2B=sZ ztdk++iPr@8ZnQHXlv^X^Hyb@)$wD(4;~VJVm$H=k5Pvs1fNd}nQiB>VJM5q7-gsG=Kcq}GysGLt*8BZ z6XV_g#}AbTG8Rn4ld!k9HR*m`R*1`r%vD+Re?vnj-(DC9YJy* z>wo$5o2!YVjo9*wl?{IN5xiurdjPd;l4tA{Q#vndfha5BEDPfL|!2V>YmLB*+jYI!4Hfs!m+(pCKzag@% z9_s6RZXuyfcmk3tFeoe&n4gR`UBd*mzXI7fb#bo91RLAhL{WUk4F(MOzUWu%V!QYKKF{->amIK*oiomNOyWN) zYt1#U-@LA1V0)y>%ga0adtS}=ctSbwa6`Uo>Z!<3@kx*$Za?hx)IPxv(mEynv@{m9 z_CMJ<$#qNCHy6R2QQav57h2|qz*nWrTWP!iax1p@IpaF0;VfQW#QaT;n?k zXV0Bmtlyoy)%g!~)W7Xeo^czv1Le_6O|+;S(ulakfq*y8UR~(wILv;iD>CA0q}|vS zWNSI8c#B^wj+=*5W44q1axb^*4v-LH@Rt3`B+=by?SMqvoHz0D2NT2CWs zgzn4AGNt0g)n|IS)WAeNw`qK_lXa??H78#B$y}AXFa9>V zuR~YbZq%^P#%wfdzB`R=vR0qh3<++28df^DS=iX(V*%+)U1dKS#;KoV{qbdV_DNLR z8gu26o+q_IW-PN4~9VDM8YP~dl4!Ecf+sz;D zbv!0%P~_-JnS=A0A%WQi1_x%1NzE_%Nyv;RxKi|j^4G4#i)$bwlaenx%Wi3aL(nCI z&vS81ZoGWPd|t8dRFrfQX>@=4(HZdG|)D7eZZYJN&DK{qqX2)7U1<`)O5(2piRWO=mQXSdSe_^ zi`;J_C2MwLjNw7x{NFVWpy^N+4OqEb=`@iFVp^=-?pPn1W)KIBQw3e)y!lQ6*|Y>o zrK8Y)ws=Iv9+f-BP9iQUH1?h6(M{DT8N}BJ*+& z0acPkDOX#CZ~K3sO0@Wxa+KwxXg{WjxM-AS)C1dcQY#CK$BOOkTeBOM8zVOwnO;b) zrdXKUeQ*^QMZ;!-|6+Gd5prR0vG2>epj%$`5p!_xqD&CjyI8$?DkrZjbprQn{0XKv z3IJKGQ=D4S_Wpfj%$dDksCK&y1PTJDj%QbYtKBK)3>)4S zJmiq{=U#q$pYqNfIk3&&2lA%QZVybJ+9p4NHjgfJueU}#@>d)G`{3PHANZtP6`hUOkQ~nGICfU^zxZNeq0;ifPXqA

    1#~C06Qyd zDlop10Rl%}{4ral;~ytC@V!pT<$kIW+iIzTiEYy)eyA8eb8K!$4H{?Chi*n13o6d9xW`T6Y@%0A96{8Bi`-Ck%R{B_xv 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 M`rX^*H}5_BU$vx>F#rGn literal 0 HcmV?d00001 diff --git a/source/images/rusendhelp2.png b/source/images/rusendhelp2.png new file mode 100644 index 0000000000000000000000000000000000000000..71e3632b3e5c2a81a02f8d662f0e8c3190ccc850 GIT binary patch literal 209631 zcmd?RXH-+$-z^NHAPS;#PyqpzCPk1gT|lIR^cqllZwVkJL`6hJrS~S%Yv`Q>4@wI) z0Rn^~0)bGK&_lxA9MAv0&$#!){c_(A@B3s7hkI-w*?aA^)^E=Fn=|j8=xZ=uV7ov? zMa8J4`N)Wh>KurQiZ0+hEpR3^9A*OiNAIg?38tdD^zHN?b&}8}cHkrfMBM`7>Eq(& z@XXVKN=p2G)uGtS|K+?Tm6*5~IpswtaGvS(_rVVSPEOubnve9f?y1}p6J^Yaq@ub- zrS(X~8s;v ziQ+WfpJS?DS8|2^J+yc`%<}J{@S~Og{PwjwkaPc@y?CYN%%8&-k>^3we-1lTUswM7 z^QX5}&Hp{Dy8QpCw;kqSZfWqI)b9GkA>@T?*d4y$J211&eDms^1U`N7l$)~t--4$% z?&v&xu>i&Qr=iqz=A0NW#Ba{DqORw}Br11NZYxs`@)%f;8`7i&=JnI~seYO_+A7wH zz(@m)oL1D0J6l-0aPpG5fO$jaPy(;OeiATJFW^Qz5NHb#gTMIu^UDZ@y7vN-!n)`p z9nrDBOM_j{H3hZ`E5qBiOD*^06=!?Z$` zB2yMR)yW+H}s2IBEIf*=Z z(Vr^YsV21L`r|&nTa53xJ)_=ryA?MCmJrFTWyi7p{ZLNeadzkc;3CQPGtJ;)?f6j#_vt~wgM zVY*x-m$53!Xw)8e+krNCYbK}wO4^GTwX+>5zXdvi7}Z%A1~+uqZg;KGoVTSG&EGkK z!JC7Lg}UkDT6^o0+&U@3dcR|op+^kFnOytt@6qLM5={4iY5St-cr)=`4P?>?T&-FX z&&zx3eur9gtJ<#n*w!Z|dupMSoY$He<96BMEzyUeJ4|^??u(|4UJ1r=cOnONm32~j zNTP)G+a%*pwT z_>(BA{qoE?y^a%tOHSW-g|%LinX4;HFy-)if&Y>=I#-SEaHDZfLE)mWj}Bq?#8%3= zKNW}1TZ@UAgYJK1VBhX}ixM6}_;~*DU zgn78acdF@a8olNO;q4SUKwwoOdhTCm?=#% zrxtk{iL3XYO-Qsk@gq&Ncx99Xj)^d(OXW?S?j*CV4uT-N=ah496IHqWc2y6RNd4E? zCeG2(Wnd73=9PDDPey#7o3qo;k-Mi6!x_gSWY)L6gj)Jp5N%Xqqz+E6+%qrX4Ev=5 zu4X3^Z=~ISrutzyut0PE4*H9ej(}NRYH+&;wz9Y6m+vI($BSd)kho>7vsWgKuA+LA z?Mw^0_!)O^h7A0mNJog@;5Dk$RLH4sRN(5BD_52S9z$jO7&CckmOd@thRYHh`x`U-wa!EFV`b*w-QW?0JA^T7;HfbkZtTzHf2Cp4Oeoaj zg;9?E7p53x!*;6rv!!(K135lZ%l&B>25-|`RdwUBpx=M1PquiKeIPkx9+S3^e%W?T zL)oBJEL@aDFfpYqn5cu-WnDrqq5PkoP^U?GB%|J&8K7e1tynDzw2LLZrXFoC4e$e_ zk#zC8XnJtF7fBktx==aOs-Vz$FN6)5F7J|!`=vrt6~z^9QEFNyc>DI`(slu=CUna? z?S6RMIu1Fv_hc!m8jaLd4pc0ca z_m>ju+%VeTn!z>T?n|u7ey`Ri+i?WY1Ota$|LaJH?vGM5sm))Kk~ugxZmnVADPMh< z0w=o$u}gBd*NP<=MM5E4w^{N?e+e7qza^kM2FF4XTL@DBUcTz#1!snX2 z>m>JN%EC}fD1<3fR8*9XiDQ0$x|B77yvg1iPHs6MeMk0I8n-rB1_pV~iG=QNegvOP z)q5E6oiJvHcG03d0Z6CB5$iZ{w3B!%GHgnp{Wjq$xpLa7$`Q z_pHauG3pnu#|cxv^xs=&oosW8*3FW$yma$zE4<2wNO$Sx-3)1;_`W1T9g+rD(yMb9 zQ@wt?p!VrWuCQKE(C2j|V?`9L8eH9uxCgT2V-7uAV(c2dKk8;Ef%G#UT*+&144bTk zY>m%AkYCowLU6>-?Zd=PaL&rk>%%Km8Zj>R{k8e&gVia1GjjxS%L;c>a1P~xBZ|a7kV5TS-1C|^m1Ocry!sI{?c4&QXOwn z{=^VLqJ%QH6lf)MEiFLP%%?)lfs*c2?JeWw0eAX^NioGxKk&)c`Z{#?%KI;+~E;8s-~I#hAl z3sz1;N|*A`hNpyN_*#HkAeQK(0x8rx+jMESJDszv*YYk#9k>qft(L*N6q3fGU)sFC z);?$BGu1Zfl>scSj17lL|D~%OEmKQ_Njfb78+`Yy8zeD%=p~(>DP0B^SOi@~#!5|r zy#(nr&g()C>IwrXL%p`NROi59+l##($pyejSsE4TbDLM%#;sv1Gs08KB2AO3`f|m? zzJ(UrPrA3j=@}WNZl`-QL(;GTcX=MP(vPW@z1H4J3C*}~q?|YC;FTZ^qOFCl*;Lj3 zCHUlt5@m-uWeB#r%0eI;i87F1wsRp5A8h1U5agf~o7ccA zm1}oL#5k{W*)WeYgW+9*2uSZoi|3>` z>+S&7pOSg+K00o-e*3d;t}0)#p>dJE#C49?$4qP|mJR(^%tF+JEaig2r*6Le#7eBy z&656Zn8tkL#$8iYH9hq#+suHisj;(_Y^C91+hB=@uh9{2Qfyb91a*!OQwAaXgpC^X z@)!cDH@4Zj#hAh&-_-Dg?e&95ePp zt#d&zsZ6uAVI$u%!MRX%6$M9#n?5_52I^ECLKNwKR2f#TMi=aJ@ax7Ud^5 ze{sVKx9m)BQg^kTwe11y<#t&W|kQj3b8CPj< z*uMHYo^;BG7Gxz!rq0%f7KQCD-6gW_)|Z)<@wJESiYvc`-v3EMWDS@}mkoWB)}1Eq z94`WD(Tt#F)cq{?4E-p@Mc^+H8;c9qgzx4dD1DiJPv;(wl^d#M!{*O5qM}5U+0L%E z+;<sc@H7!bu!w z6%=N9va3-}?bG(GVUD!7m0)Q1(f_P}2yP)uE^X*D=^(`}Sp5=*+{$*ay-rV{I?{S2 z48wJ9b+mF}yIW&MX=2FNqUzT;LcX~W{N#xlf#}agR4WNTv8uL@v_U|6y);*aoA;9j zAzYAOKW-CgA}FqIIo->52Gf>@DKKWM0S165tiaaQ7hyBxO4}#;leN96yw>b~E zA1(|vsTip)_2(AF9%U?N-}ejq@WP~(E>$MT`-3sr6rc+EDxGiePhk^Pw?B25x)p4^ zWzt9$WUD9~5#%}Vt{wx)zW~}?0csq-;=58$dt2_L zU6G~v`R}XvknT?$B3oEvi+XV_H(17Agl0jG-(pXk^K5IvL@*0iR^^magrWs7&0$BA z(i6R8^-USN%*Ke<<$3SMsuvcVgRzHuBi&rGuddXGV!c@TBxMQP)IrI<>9F z$_BHQ78(W!n1%p;Yu_rIGy)xP1V?sda5YGNFqR`P_h)efK2Ytou6yhgdpK&8WZ`wU(BhXmNat_Q9{~-+z z+vs!Y`oQWOGPzuxovygLX6S$P!7Es3%el3Jdf#s0M102SflpqtFle<{cyvk4K&lY~ z#bL5?q+v0~_W6f?V+f{E0%c}@E^YG~Bn$gul!g4ve{9usd)(S54Kp2(Q=%LmTngEb zq&zPk`^08;DP*nU1}biIAs_?cJrhEtd6ZJ*mGhmQex_2`qN>9NTe;D)6%v|MCSttz zOH#I|_RXl1c1qk!pG%1V-$nr-z-3BqYiLG`04)fd{PO;~=w_2%$_aKZOzko3q@4kF z0=*sss5l+%>z|lF29I;D&XoHx!v%S-E{vub^HGiUF#(J_x2R7@aRp6NHBqN+zpQV4 z!@TmtTEv)?2R0S6;()0N^ntw1;O5cDBr$6nv|_?1N7s=jfs>C(Ureo}@>pJ1x<-0< zvVHIfD6>L7i$J+^hdwANYFe$^OEwdoYJGd&mzdoaa3>@rMcA-!2cCN4+{MY#_vPWLo64R{722SO6b-tYtA-#rDR^M`Na3eY1)e6j`KIdU#~jP=Z*@(s5KEE#Xstf)&A&K*|n z(QA_+V`R(qr921$UHG^3PtVuoA7(#&cixJqEzckq1)lucEjCP!EUz9bH^tZt<;W;^ zF(Ct6^iuE7ixPtl{g>LOX!)I6Yh0@=N4VGJe5sTJ%X z{C#%BZHu4e-e~lAq3ASak}`(@FtV>t>q6`G8}i36f z_dCpji%~H`hZm3?d5S}G82g+0XnL4Ml{>Q*DnRuo=jJRqs&bc>2uc*BA7nR z5ge7)o@2m}1!d&@AM$Sm>T`nvz#YrqYdwnkm%|Ps`f$X#UMh`9m69{UPyvE$iQY zXD5+OlniXzw=UYYEu(CABtj*|J5;7}et;E2(_ad$e>F53jzG)MAp{H*e!rIV9<^8< zEpZT;5`|~KDrT{see*m`TqCMd|7)ZK$2-fc-@bAOvN9?qEW|$M4VP+{p=A!5moxNX zAPweDTf+*Lx0SS1H5f|R#;aGa>@x*Dr7G;ljGto;Tb1i)5I1ew)+vf4L4;DGLDnT1 zYE%5m(u~M$R4RO}2)?n95WBx#ab6TaT;6;G4MQ{1efpgv2Zaf(8{3h@>=dTZspCUzEF=%XGz;scgcf%#MCpP+|_dP*4^BlAL=9;jPbDuODnk zz1=yfN;DhmN&3ns+qHxR$=f@1?Td+W^cF_c1a@17?VoE8?^_jo$-B1Z zmN3OM?c)GT@v?60o2+%=NQ%gT?WH-~%Ke7MfRKlH_QN$eQuhg_%8-V+rtR0?7q@>z zR5(q@Z}t6Ns4NT4nrzh^9%%)=za*f*SheW=gI@@rBrkU(THhyYGegEFnVy-y2LUB5 z9v>3%PbC2L`uI4Z;-v4jCNqbb#Q-)yQmoRhao{=!VH%^-1bz}XI`i2T`Gu{8)(OnD zxe{}I^;IM_WYr{F89T7zw$L`q@61XJAn(+-%fAaAn$;}bXqQ>T4P<1i@z^y^Dpi}? z$+y2DEBZ`S+0L>lJQ!4K^Bah|KV!bPYge#KJdQB4g5k&|Z5AiYt)N4f!wbRqNf%y# zaLJ;aNex~NDk%3c@%`>i{O#rvo%+dC4{8{Y>OilDSIJFbMxk1@ch11b zb?(RtE2pv~%2W`%76+BX0ZT$0?2J>gQFAzR+QfOjP)QHUn$%#ht@$?YVp(50W6DAHav16N+#-UYk6I>4`$Sd_%$ z0(&bS?)+dm;e7C;25F&~dSTF6FBShDn(w8kXSpgbuCUOPiOmoJD>n??T zM#EmL=t`Ue2J6o&u$HxQq}Xq)0iv`3ve(dl~KW z(gJWp5rBXs4UOY#eLfDWmv3RR-RSzp!Kkn?y*s(q|9<0rd%7v|#B~Bx+p^KU?4*pJm+ zI;FAEeX>s%4DuPTsJ#al6ho!T|1;JG@Aoq;wCWL-716H)lqLyUaKX5WzvhnM$-gA?lF`z3=1ruXF>ufV9csf_!fOJQvC~;$N&T+l7lKNy~!qi9v4=9<)nUFz5F1`^)e6b7BFK+628+ zwlQ0av+>}K-s^Qu5%H39!&YWN)}{t(j46<8g(=F&gCtA27mtDN+JIY5Ncu_~cY|@W z;$%B&50RB3Hgg( zR*mi(O*6sPV$S_HjGYRJ``@qIy{``UILV=*V~{MmwpRQTQ>YJ~PBHo0AQF`+3m(`R zCY0k;$<{?0uCA#&;U$f3GCrFMvg}vDb-z<=!whK=vYMRGd}z7Lu0HBoMZOa%`O{$q zd@|pUneb~R4}T&HUhcXvuaNsMl2FuI3Dws=okknE<4jsa=K%*{u2YE+P=M10kEY8l_KObE>GrsD&;c{17Y_z=3Hh`9Wr!XH*ECw zw}uq=Gt=nU)`8N#4<+*jwtm5Q|F*Zjfh!DPuMGp_xKR^wt9wQ~X3|=q9S$hZ`OUK% zl8h2AeZpG|P>m4CmdME(EVSI^w1h#w*^MW>-qAUpn1cm{o&b&9rRX@jrgpnXGkRm; z7^nYu0i+_9R#eoUKW{oz<+yQUvG~DAUpxR4x}W#|RF7VqkK&Z3yAAY6vRO@W%6e9o zb&%>06bi`#?i-D?vvNb{mo&SMO#@oVz+}{9jZ?sDgq%h4r?(sH89vA)-86}`2-IFo zoy>K`RP8~X&T}I`SK~ERElaJ^j+hzDl9v~JJ}nz|@V4!Q z;!D6RJAvgkV!!&}j>KC1P0>XLK4-uM#JkPq7S(^BO%3^6KvxqJ6lNo0*DNesvwVNc zWvb52Uuw0q4q99hs9yyI5zdUbdI($DYF{zp5kS}7tGmd=ttFqpqI!gnLh^RD~M zA!cl@Hv{Tr_27=|2%z-_9UbIY?@W z``DAOw)3qHq(D}(L%&znY>Is2y+oVZK)ny7wrYp&OA>aw-7$j(0m-#jTzGEj#BzT| zV~^*fxEvJt{`WcVHr{XP3SuAB-+7kVgFWkr%JuON?E=jjmSH zD6wsCX?9gE#roLD;ABWKZ-MU6d*Z~mZD%qzxN_};9gY;)zkW|JC+xVSgze*p_u@ES z&=%zI=s0@Fse3TX+fGPYs6mK$UHCpKqTP;k?&9?p&mtp#xlo~k{UqLKoGNw$7xcgz zmB|~u5NhMQXANCHwTcJ=JE~CI$ybsQ+*VP*uY6ZMI*144<=$DvP{+Y(S^QJU zy_a=+-MdHZK0U?;N&=@k?dOj2!lTt+U)B7w=O*X5qn2uil#+l}f==$=kvtloNIZgq zMt^r2WQ0#azU_co7tG>ZFCWkTnlDt%pQYI?(2OJLjrDzGml=5YgsqR@hS)RCsSx-3 z`KUQ$x3uJ7AWb60aWM1yju?A@qPOzv%9WDmR?P)@$f!4O(nYR{7Y^M`sk9M?_7Dg$ zd)n!XpNW1Q88rF35fuYJZcPQ*vzo|=y5 zHxOy|{Tmcb^YTkhPMT&s& zlv7haadjhCE#I`vtg!EX(B^bJ@2%mTk{0(dZJ=NN3eerS2N&Ar-J11RVd=ECS5X5Y7`aV1RZF^0 z^g#S_Z>JP3b#B6u6mgs$6lhjB4YFPGilYq1pEF3B6 zKCO95V>2iOn#FH0e#eDEMsc@o#}smGH$T7&D=v%?%2rz!-!D+TM+K2JaD_}5VLR;9O zKP!de%XIH$V(#rnLoT6x?~{adBeNP;$IJMkA-mFFjbmIwp1aah1r=rkjJwiEa+Kr# z55_+h6lt^?qgLqphW7%X#4M;7E@0Y{FRN}yw>r@p1dkejxV?Hf4d&cD_aZcAkDc-) zBWkg4OlW(|+%8S&ACH$0;QH$2IW}o(BW|`DA#7xOvlZ!1-Cd2- zQ)b$?9GnxahzkAJVRvi(OQm`UKzyGN{#%*yVsoNM|IU)>Q`gg-dUtGm*x~j&Boc`= zUI6;!{yQs%|MczT0;beZtxQS(aUxE;4}X3M^pqxwI!sTy+-K_t(q$3=c`?{Ect02Y zug&p=4#kbkYXCG`x0X)IV;4?1h#}fegNc@GQr*sZbFAWyzLR)w_5FVxl2rd^Gvv32R)21j{{ZTYM1kl^E00TFWu}^5xFf zyg-8Q>&pFN<&$Hz!N-p@_q}JBrOpAC7;E|q3?IOx+M&Hfpx}OQR&20WkJdiH9--cy z==XG}L;z*9PtD`cRajI!$yLRNkdJo#e{@h2_a`wfi-5uC^!8+8Uh%)K)J$|UF4B3! zK;Sr$aUXqh=FAzJhJXS{8oIFE_LbVJrGx4PPOG`uZTtW?ha4mpXchLoXAxTJWKxFU zqyZXeRO`%m+P_@vO|bT!Z4;o|Rg*_gdqXDkxus7B&L)5(S_?G zo@cNL^Yh}18@K(}C&a*^fT53oh37yB+jZr(?N$J8Ufz@aGr+#2JCN@n(PgM?!ny=t zQR$tic346e=+t;lD%+lG)60+)!zzE^+&FJznud1j4*(EzK{)wHJa~KYLChZyuBJW~ zZWnZ%B|@$c;cJhZEg?%4EjM4EPRjL2enG_wnA61YbERWtOPyD^`W!gqHQSGNd3Esp z{*>cjR>dPaOGH@nVt<;k(#f&JWTQ{c&en-lW-uHY(BMU?3L|YaZtu^5?Wa>D%=O*I zz7!-1nVZ$nx+I($CzS3>drvzGa_x>DPMo1Rlkc>aeDxX|-|gGCovBIy-MTmbU4kQS zZ$oTKX|^P>riur(_vM@`ZZWrG{Etc)G z*5I{0{<+b9I{ES-Dk8`3xGXV{+xKvr#j@2oYoP(~$Z2Do^%gr`!T`Hnm{D$6@W1OQ z_GhI{^PMYKTzK!_*G!ilQx&%sOA|eH{+T=no_kQv0rMC6;UrYbQtK8XrQDK+_wL=Y z(F$wqPV3|$p(r2NPn=`(-o8CA07xD;%&L`GH7D+ za=*f#eXfZ^*rrM|UDE9iA&b^{Kbf`?FsW#coaspPHGfkn$Luncy>Srx?Afz;Wmvee z-h+dU+cjQm(kaZ`w;{27jAy!Ia-Ql-1Qn{x1Kmr9>0~)mcf!~jZ*Q_x2H+sOUi197 zeK*u<{sCm=K4B!UmGvv-@5qZ{oMm}4$lpioH6Huk-GF%Rl|&&Q>12#oIJ~Z8WS5eB zS!M>ibn}6xevXotH`9d+@jdPN{1{E>c<~Sn6`YnPt>gkG_@`9J*@Kv^bE_Z8Bin z8aVL1_Rs3($?1$@LIK$8sd%bnc=pBR%$cTeHT`Uclr`*Dd)PuH0|+#t-G^N6ua@*R zbwf|^%{LSMX!<8qJ_}kS%Ks8H=`nGZqpMu~@l~zxLS4X`*;Te{f*0|kZ~c&F8o&?S zXV@y9w%7US^5EH~^NxPsgixG^O)NDd}0zC#SMFC&17+SROQV5khEygExun<{8U z5?BL>p*VJ`;-RN?gXcRiZetKj2x~ocmv2~kVk@j0rO6wVZImeAWpf#y**ef%73k0A z%M*R}(G@RFcZU|EnT zwf~^&bNy!KfQ`poMTlQ_FhoXvnWC9BQwP72zA!Vo+FR%Rt2i3)zh3B@7|d)oJq#)O z6(BcPSx0nBk_O4qU%DjC&IdgK)WV=TEiMpa=;8L#gP1?bh^DNS33crVb5*Q0a3NCS z+wPg?I;{!l0&wWuAgFb5%$%g{nk0y>3D5!9N}QzU#6#zSbY5k$WLKgcuHYT#3}q&0 zHYq@#oF3ANy%d#Yhn=kVz=CGOTZvAQ9+&zCq*l2mbNM;@&mW#|sAB;S9UpQlx6`)5H!{@)$1{@oB`|@)}zm!yC0dq7SAt zXQSJK!LpE*s{Sl_?8v4rF>2Ugi&*I%K8==_gbd*^cOcE z2oUIFn;^e_X6&8)InnPr2fct<)`3B=kY!Nr?KmK*f|O4A1Ayk;tr!XyZa2#jrX^OmOZ>fbohMIXQ6)yr{!aAg&%XtSj(kxc2zd0UKitB+ z!s?#Jr<-xW{-OhDwz|BfwG6Bhn!w};qd47eI9>T``UWc<#%VVj*FwFBzdA)Y{X&TW za`Gh6kOG;P&ZUWVi!LXMIFt1*&hzD(ad);47C7{rwvU5}3ksM18N^!x!qzRigE`7u zxsjnV-ZnBZNM)%EJTL#Fez%0}>w+dvuJzm9+T|+dayirBKBKMum#DX(PNzY( zWaAPlWyl8d4AU)(Sv(={YxDr}bE5)71++e7yOfS(3$3zhjx7Cg%j z$aYdN4FE0xY80eS`T4Kd4_wMBz_b<03EQq-$2HEi<(xTpAvJhsEXD5BkX~*32Rz+! z%Tx$93J2_qXQN)fMT!QGe9Z6{SD0S*d%Jlq$Z4hY>rae9&?ku#cljg@yY{QBMeD&o zziAaJj{eFj&6Q4L0-DzLDPnD+uT?i=0SAXKqEhBMCB6*}iGGx=pG&G5e$qX66ugmJR@8k8 zNq#pfb;&~XdLRw*08wGM@vBf_TT@=Zv@~(F*ia96BTvCka62S^&u>=Hwyg=WF~!^E zb?)Ld$aJ9eojZ?LN&!bYKVaBOzz?Kr10azX;2oa07Cm6~-es5RTEFzC%-<@RX$r=? zhF3lQM+VvPMHU>B(IHKzr2q7FRb(~Y%QGi2d7H!LUjoztdi~!vPWFFQ5BLxJqpCV3 z#KPAD?x8!|{|q~o?{eOM$Sl==x6I!EON0D>eA^ZWRqXgZ>r?ht0AvL@t-f9l>XRI} zdimBrSwWzy1&9nmYjbeq@evAcRO#7#gR9QFJ;Zqm0MCt$yJt`J`rsU(yZC!p@L8#8 z1z+czc5Y?zuLMAc)qfl=W@ObEKHSM2Kb|FSK=o}aa@p?w8c|1dcYF9kRd2j(^d#NK zBlpC!=V%WVEaUy{=mA-9G3ie3+NtZ%?k*kU&Ba_(-CO{2D}h2vu9*#}2_3w03t86u z-!gu6=%S%pcF@BDOPEliLG%86xmwhv?I{oVX>I25YN_)V`I-3-IRmxg=M6Qz(NZ5J8_F4;FEAb+7Kw>d;J>%YjdQ)xq6i*)Kj)T(hA;Ndro_Z)+&@*}bFFsL6Q+uIGa$dS6v3nv3wXt!yRsNZykT_e!Kw9= z#@+Xei#6#l(Z|s;Dcs_M?!+aEn$LFTQ5P@H&OUS;%5JZ5-e8-ode-iVLnx~A_a>E@ zFOs+(>#Rza6bzxDJfJBErxk!|JKV!LH(M)&K@Foel#*_liR5 zS2;KJLfEpEFl1Kd*sY0XW1!M+=GK1{@fg})ccWyBdzBvVc60e}9tZa(-^)EOkeCs0ti4_X$gQRPyhn+j(!K^2_J)@3rCFa-oEw4Z3f0?;<#Wi zSc$FTQj6n1(acjTVyVfUobaO(peH(^wq`x0aPS#;#E;G3w!C@Bli9PCt2+eD_Guz= z6V$2~bk57DYR+~#)cf&CF_>R#aD&m?4pU?xgRQWti)UaJZ}K|D=N>aa>QOFM9jK&E zlvn4rCtY&7nnWKwut=Bk;!6@TkBeRZ%IEq3x>|QrG2{_IYTQ)6M5l;o7ihB-5RJ0{ zLEsGDk4fp^bMwT;x2jrr7=U-bj2?^8y?@)&mPijpS)K&Ht?~4tVk!$DU6`xl~xy=iAO48C5-{24H3^_{tUk z<8SnqjouXiR8bmqsC%EQj!HJF^S#o0_3~YSBgYL`H}s5_BrE}H#X?<-q8<$m%~I4z zp5BBQWa2&$;|s{_zMF+mCO>$5Dlu?td`biw-w!r*R+h)y_J4IU>C^+QCmxo4uRRF*YsBg0-o9I-v>CW z`H1+T7%);OMDQ7zcDKMbDLV9B0jQOWH+s}b zj|1?liXJ&IVE0J?1eElRmv6EFUvgqIpsS#rP`WbL5f4Jvi|JS9LQfQ#6XjsGLFjxf z?lF&1Nti)~^Ti991UadIBa`6f2^660dL167 z&x>`c3erCNAo_noPqp%UM{o|84agJk!W;b%sL5W)k}>IBJYN*%#|e+4z_>wua1V9Ll&lr&5Qy zx~Gu`<0#&fb|?005q zw}j&2w|C59w#K|z1lk+0*!$zxEoak52h9lBmIIMC$%(MTarZ_E7k$*gnhY<{OvQg8Qv)G?^F6K!pG%ZeZT-jOd3uHm zlDU)B4jLRo0qF179fDrf&}sqnz-c&x#=(R!^MRkx`4KGF0sbNQMbXYhc(|A-5LIp- zEdg26GO>D|dF;X}?i@>jlG12YPV`aB?wTGl`shXwokBz3&KN zj-F9Jj+EHAL!y$cv7v@(~+tDb1^ zn@!E7)4Iti?*3@8taNtn03wRPle)-n!x7y z5l9jbY=9>sP3a}*{%#puQ7I70;@om9eKz)y9Xmj6qv`t=a5Wj07`C^R&ozxKEhNH; zs}#~!iZHe1BA^W!<@;U%4hR@M_w-g{Bn37#zcS+@~K$T=*iHB2msXum~wX?y8>Be zq1%5v&>vMJFKQL>%cXfC5JM<)kqj?aAOZ6@|@CkXIuV=K|w#irJ)vGfD zF%Lt4#CXGpqocA1F~k58UN;2=_{RYU4(KLP$1QeQ#MgAz+h;xAo@|a#@X?0S86IWn z!#=YC@xnCzz?0?!+hQ+3-xHW=35@n@Eo-RcSw^7sQ&ykPEfcj1?ZCHW%$)^< z2x~s&9SiNq?_y}=B)~La2=1z%Gku+Uu-_Vc&Wq)c7k3#Mh?QR6kohlCf zP_}V*Qxzb{njhN8=_eQzs)WIutu(K+N#^Q4<~b1t@c{utNjlr3)VD-2(tV&RX4BgY z**y@=d;C#+O#0}Yb&*Puepdh2uNQ}qcY%eN)EO1??YXBX;8~EQQ+Q_D+5h!Dr$tvG zorwF`Y7+h;QX440?>{2oJ5qq+{0(~C+xAD%&B=3)zGxO?}HGqDE=<i3%-^Gw-y{Og-p zww+``V~x|A*)}oto9VB5H%!;rprhF+CfJbJmedQ(XCv&(W+J{B+9px)#K?+qQQN|z zc;S{mzC3LkHH1u!@W^rod{41JwKlY>cO`6B_hEyj00RxU+B|=@%@1S3)f{hwkyo1a zhLxxL9H~X4mn3fKTsz!tw3~TzV<4mP{@1tq8NgSbr~~!G3!j5$r! zDat(0?U`)alSJ*5z|fz_1U?hLCC_h`#Dx!Uf&mUu&jT?P-46z^%p`Zj9H%f4-jir_ zizV6&E%(n@c=TO&8O4#AbT&DmVqvV5R6+YI4Ky)p%epf%o1@*fsi82dvHNopQcf=fQYO*ifSJ zd=W47&5qxcEHN-NFW#MO&_m?g54zm?`E$AR=aO|<)qco-;)Y8x?N;jSY*yceX<#4N zUBajPQUwysXEu5E5$MT=3Y_kWRoip1+UyC~6WQSH{Jf84rGO8Eif8&y0I`8)=UoE- z_Zv^tg{CB*9xMzg+k~xu!<6O~_h=HZNVu?d!>EbL%GcEPS6}=V_zG7a8fcJzbTZwv zql|spz%2neT1gnT%oyu;1V`V}H0U+qejN7nQcc|jEhej-L{W|dcOsv4QVLphbiKW;=>*F z_o>MGA&q5>c0l@SNd&H;wX%HYk%lLhI!v;OQ`+p-S{D=s&4cr>j1`iQOSpRX=h#iqHYPR4#_YJssO>pDxE(O&rR*!C z$IYB7h^s&*BQW!4d5+JhZ_nP;UzRKSV8$Fs6N^e+SboQ4^$t2fshKEf+)n+3NR*jLZnB+({> zl-7Dj?bhMP{|9?-85QOGw|irOsK8ILXoHZJmKH^jmK=Iix;utO6hsNhp}SKWhEh=m z7`lcWngIp|$)S19`Tg(vez(`&>v_4?<`rwnAlG%C*Li*8I6mJ}10*cPzD`ifnGzs@ zUR^g^U^N)gUpMPU`@;XrHbX(t+H(K!lW5g1On5+9>%?9}#B$m0jo_S&@=}Yy?lj5C ztqBD0;5D;T=%s3qYN5WrYg3*ra!t-S9+p0`U!6g zK7VOEQd`RXrmE`wab6$})GW+~MY5I0@+Jkb8C-nCjk@yhMiuwP@aLiu6vsgWFBxy( zn(E<3Dmzm2ZrRnBV#cjCYhyQrNi7cP&fZWy)nd}vFv?WCz1*PPBaZKLS`PU_zL2|X|)m%Ukvd5P_p$BD@qdaNJH_?1Cf(pW?EW%nYOSy zkc04}^((5~rzf68ek~SBb!hn@;5O9u1@MUC~oN{LAox4ZCORAlH?&<%*T zSMSg4Vr%YFo`ItGaXrZAuP-s)NnqK^RGf~xqR#bAGuQV24kZQ;>rWSrI*iR$J{o8-LO)l$ zBn?sh6q2kyYm_K7RJ$?s1Lfz{Sot2Dv8`mLYl3K;`Foa;qx62P3V!oJuX#_Jncvu# zNOy9gxzYGjNw0<%v~XHv4DKs=+@|XPt)Gdbnx6rz;OLRGH{k-KcEuIPll~V!q0!^k|=~;7P$IdqKg0ZGcgQ#^qP)-zBtiu0DAJB(zbFjI3X1uO0W=;w#7F zxkWNh{b%ZCSQ|Yixdl9WB?VkYsCb{Q9dD|L_%|OxE8epR{Oszc5xA75%&g@#*lZd~ zC_@w}TOmVh+&9o=%NWz{l@9X`YC4=xiD$*FWxwf(AC=;$Sa;J9)1JHU5RKl{ckYY3m(aI$KS)7=?x<|Onjqkv0!+Va9qe^-fft90Q z-8p^En+eT4CPF7Bz9n#mNe@roDL2oM)JAtNqvbI^`B_#a*}LU^Ho?vySIY6+n!lCG zsb6W1;-Fy;TI@@okw|BEIgp71&Md|3_HgC>-F~&;j@X&JgkWuJ>Zc7ur^v3Rfr?kt zt8eJ;riQiOV{p(w&bnG4YZX#sL#Un zdMv4d$CXB(2Omy*1N*t&L4OwHESAV@z@qL}b0SnPFZWa|L{uuVIc^^{DeZsvlkR!o zUT2cOsZi_sOP+yAC&&vl#+)c&@8l0_Ew|<~kfRh@`V8lDO%7gZLG}783-1FP!;^)B z1xXL$-ar_|{knGt$(KG5b!;CzM#zlZP6mO*rSm0~q%9)e&AUDsJjJh;d(%wXhg_Mw z`*=b_6{OfM4g{Bs6bx^XXl7FwDcRb~*NGJ4Y^`1AsdHmEb*FcIx9*U*=EtBd1LQAh zL~K1~pfOHzgVYo~_Wo640Daa9VWZHHKRq#a2y7YF#j$wUmNXnLaFS$%Q~SFfH}-v8 z?==vSNu4TD!XB#xJL^xh`lm}APgQNdu9NRx6sq&6pAM6(fB#33M%pi>>bjHlqnNrV zu{oCOPdNq$7z{5_V$4-)nOR`abaz`$|3Mqy$v`bo#b0xW z`M&@w<49qATecNw`@-?)0gm-@(KB3jD=6-m!Smh1`*&lbzL$#O@0~=ouGWbQ!jH;?~Sz;v3E*f9isiq>pJs`9>;h;bf!z z%}EE=D}&=52DR4g;k3g1F^(&CbMvpZf0AvABc*m(01&CSwb{&HFL0>}+jq2K55uPr z6r$G0bXszjjwqi!7P#zgTlYLwi3jB)G{`-=LnDx@@}t{%x8U*BZ0gB_Y-;90YBmk3 z>MINMLa~U*fz3ASG)Phe`>%MdPJ6@Z|L$n4G0rMbsWcD&@35 z+qiw8qQv|PE8RV;|H)jv1gytb<2^}Y*t@Z2o4STRxO916fQqYYb>|Z;v5Id-CF>Fn z?+y7;s>~L@*QAPnDhVydJmfc@x-Y;NM=DVI!@&Aj_q!Y9JF2m2K^)4n%GX{YeTFc_ zwG_qhv7_<3R(dVt4~h45Mx?n{W^f3cG5X`Rb2pSg6Efh3k$?;YBKGqKlF6UTWx1R0 z9QXTrSxIniB;&{0@9mdH_&PtlyF%XuFP?Rwfrv*}NnX4C?@o{jmE@kdEL zkVaKI>dQRPvXs@kBEW?gx%Be1*`GDC+~ei;{STPi-1^;EmzI?SFGY(^RaDsTx0ZjO zIT*`dasgFoV|Zwv!;J8*9NXoiEhG~FFiMM@qus@Yo19X0I}G~Y<)fa3j50sO+~(9D z#w}RYl>XA2!A8^l?SecgGgUZmgB{#bJf!Y&uQGM?OCwNCZHJi5-?!_)>H4><d zmcq@uRj>QwPlncAk_MKG=}R;kDjU$`(d+cM+SqhE{fexG#+8ySv6uB6##8FTtHOIi zjHZDPB36gjcszdcl&_!lx>tNKr+q_^i^N_O9(Brm0yJfP3k9ZygT33hK55=?x@4Ut zgA5H$hrzW2DuVA2j-FW(Y*{lc9^{r8g#g&F0o8XV^d_}`C3XDr&9lH=^G}m-VrQ%y zN)fH<@dZiIsqo@7sG`nH;m8|Qd7@|;uogtW)a415e{gX&g>{V*z!~ zALkVjYVKUvs(#Brr*|>o33f4*x;Nl;3fx4F?REvitJZd4Z~>MZxC83AUcNk~wc5{c z#~G;gr0^Zx8-S!%B)P1md%$PHoiEBdW;VA=%S`SbES=EzWQ<-5F_bja^D^lHTsa7A66gr&WZVSICaMX zqX%xMCkbP_KY&sogagHkmv5Q2Gwiz!8h`uV#la$<>sr=JD&RHi4qme8tq#*+_BrV83*qV9Czx3q|Bmzy-MlBSzvUR z{?}yX&Fb13Ul2UC> z8HD@BTFUOLR{uyw$((fxkp%o-&^K1z5}OwGJ>HFj7~@T9)xPg~v>yEW%3g`9S@+t? zy{C+JKkZIuJ6ZR!pR6rq-BER0bw1DCVizzMM824j@?9*6cZ;OwoYazYRNcM}HKx(!kFld z={Fh;oD{tOY|a0C=kR2>P}8h`Rz@lvQe!KbO{Q(S`^?F1w{ zjVAN`5bX~WS*v)uz+8GA2l|J*&nsO4~QvVs_C!h^CD4m{X{n|?vu`&YX-~jYhfp!am&=9y-Jyirj(wK_ReQE2ly~1z zinv1=c}J}cT2;(_{mI5;oyY>U&8#6Ej8^x2IoTms3EpcAP1l*^NZC96bFXb_2@VyW zHkt9RYb8pc&JM9mp`oFC7w$2bXd~NinAX}th+ErULLOIcr`#KF92}So1f_ z>_c81OJ%K>!WD}bq^AffkuKkM-9>SVHuZOV!q6LUofyt!`dGjr`ZgU! z>sr&+xY_(K^uy?u3%2($jeyvPTL$L`Fa6Sw8o3PX`%U6?8F>GGx(AItZgh?M66YEn ztm|?S;f>{qBv6G!DC~E;^mX;9IK-1u&?#oVxWWQ4tkhXL5CnogPSYK@YShDNl+ z`7i(6aqgZR^|oM*`nNYj!@>loFW1>kvTEj?EN{`;eJ|6kc#$OHz!S%*9WUVoW40N+ zsvs86JXvQaf_v8){fDt!Dcn46rL#Fn+P}qW<@nax<_JDPO=?_I4C55SJY2%!`8-fD0>6vW z^!ngL)~m0%1b=T7*t}-#B*V|;-@nfSl2ds(&}ky~17siMCNo{&V88;@e?wrpbY}_0 z#y8Nw%*WTM%qrxMH$3#6(87+z7V1^G*8u&24B(7e(1u`G=lY+AyR+L3A!_u{0}WYA zKqk)*WTOH@&Y>EZM&+XF37xqThg9|!!cMcwk1U^0*I4V_=1yRGE$(p>gp9C_jO&+R}Tj=VmXf3 z^0yHpJ$FZut~dUy3gjK9I!)T^>i{XCn%LCn&l3OCdM3=%kGHt8w{Qa6@McPUHK$j(u^KAX1H(R2tRwO>Jw^19 z8SpxQyDfn06P}8}rPsUI< z2;3fkz>SNT2_FB~feta!%MLbaG9Z-9TMgwY0OB?CmM$QrI$IqO&3PYrUxqqs^ZNTs zl0XD|)=##-^0J7rPMA)dY@?W^l`g^M%Z>Y9gP?A4hgV7@aO*k6sc8XC%ex-|k!D9X zHmBhiX07AccvOQaPP=d5_6AYBS0t2)q>EoJdPvtRj&A+RIiao3KIn2A2of6T9Yt4l z%O`p~+jsjf=DVxPUL}ECOTGH$QW=o+v&@1b!MBL3h>KS{K9W4lgi2so6X=XgnGy>enmYOQehlS~#rN1+!uz<*Y6OZ?PlReAx_l{W%a&S6*~s|n7~V92YS~?%6O?jvaKGa&TqG-rB~xMvbVPYo^_t8V!ub+B&+fk(Px%F zkQxu9i~%0o62WniB!E+G^mB>xEO4>l{bxGsw-!#gi1MrI=lyq{zcKGgS;c}%rX$M% zwp)7plxpT!k0^$;V*mH19>M;jqz1&N%kBTe)Tg`ofA+0E4*ur9wE*CElKh{3?*F2n zHQV1w*{C#)_`AbJyejbZ5x?Fb;FqQ%ZTdfh3BtkB|K}eA{_p#i{}}ckAvwtpHy#cS zMOs1I2OyD%0@|v}O~OD|&I^FoaWEHb*Ib+Y2^VbR;n06u9o0l;e5zu(^!N(`io0Uj zW5|bzLUDf6j#-ON8>+LBZlVs(%iXId;@+C`{qu=_ZPL-FtQ*joZsNxrYt__wu zKoh}h)#qSN-Y;Hx`g>o9g0gEhav@R*L~l|)V+&3m08;!-HT8^T$f7%T4tj%7#r*Fb zsMpYadChXte>1IF3jT5yT!PeaS?UA5O4BH7p(5yj3`ATd<{+V(t?P?M7_GP*WsP=zJE;+B)Y`k=L51NjZ!b6#1m9G zx<`yw+RyOIOwzYEoCO)UkLhf$+m&g|Knms;e@%@bk3ezvBy~=E%sjrwWB9kq^e@;A z4@4h7UK%bOsxQ-36A8yC4IZ<$%v+rL&duC50wQ zLt6xowE<6mS&EU+afkE#KTiGzZoV(iMweF6B_&zKJ```vn?J}ckSS;{2Qrv2JT zlVK+sBW~kLShB!13oy@_rKF5WDd`_f*4o8jn$rnm zgM=xUNY{1G#v63P%6`Wigxh_8?tO;4+f5KHN-V-^_CO)oMC0iRn9IO+X-dSeNnm)z zfQxUkrIdMC@mqcUGg0sT5?f4@UVAtL8{jp(u2^psn`Wz<_DXiejT&+2lsqWauZ?~5 z>T77ntMM9_{F7&1)rVXjdXFo+O6zLi2sfMp;5{#<`=75U57lujT4== zz#rQnXg~FuScwAKx^G6}9;i*t{4UVA(`?Ew_S#!h7-Ch)@$9@6Eg(;+psXCbA@1G* z%D+i8`%_n{(tz8E=k(ayTm%#@Be#K=%}at2&KBvzzes&(bM6Prl2?nwYGZp-!7L5; z?H-Ytj)N`fd{0%R^vJIwKyQtHEbk5ym5lE6*5~b!Ob*usJ&s^tRr9BG_vF9<5Dzk! zL_Xi(6630Nlkr`__rD?FBN4YFOAT6$kM>t_6(z;bBa=UW=GsnMO2Pl#wzFOWF6~@a16iL;T@uMy-_Say^0@?aR}>U?3emWp z9`9Nmp6u{43k&PNfB!xgXc41DcvKlZ|N4QCG=P}9!?ZGv8=?x7sY@1nIXn)SrtRLz z&4i5c{f$X8WaXV`7MqU%+WmZ@*6uM-2Jd*PWWM;cmNLJ? z-5va@QRX8m>U-p%*Wmogu-;L<2wm{-)t9?*!0hDNV@DsuM?;c)M@JuO!?r1VI}! zqss181ZiWM(5%S&-&aGwbg`(bM`;wfTCwY8$$lZYx~=?uM_pg4oB1L3iTW>Fe-FU! z5MGGrO-*(V)8xEgJSoR!A?9`z3tj>m`1Jx9$v@GI0xmYg8Up^>oFt6+B;R%FP|cN{(OBzc6NlC z(gMwJ|G^L2n5-M;@q!KxiiJ(okxH?HJL;~J1i2Io$g2bI9o2ayJ?6) zz3QHkl_MZfGDeFF*WCa{Pjg^1^(g}r61IUQ@-+cJtxU27#DMI^2CaUQFd)D(+llAy zMUIw2*_zXF+;ue$>5o<>*5l1tXN$%^ls63`FN?&HZeVl#=li2WHNn#_| zj}ovi6J!P*&%mN_i28*U(%!5B1#4c zQ~R=CdVN0=THgj9QtYjb?s%5jH;XO%ji$t=&zz0!nuEx+j3v}=E=GB&2^_3W8zD{46`v)2L=2?p09Vgt|)3iZ@psjT6q|Wy?&1))(1MaAleh=>H)NaqJAeIW#zH_i~+UZZ?gRi>Tq&0DrW!l?9_qg4L%Y+s5fCot(bOXZoQW8UP2!HkX#9NfG`$QX`fLS#FV zgpz4O>RwkoiWYS-AFuUoWM-6Ht2jxju_2af86%;cA0+JuQ9xU=RG6Qpx|N`c$!+rl z?=BUDyYKUOZs_vO#eY4pvtDL@99=tPSo2yI5!Vp-@kaFiDYRYvj%<%Ui* zpD)rAut0%l%?y;?7*W{Hn8_(zLYCLgtE#8dtM$1U!)l(Frccjb%gTQ2j2Qlr7D2Oy zUl~wJEVueO@Z%^K!@5j94If(nYQ^*GwQs7y2Qvv;WQXt zY0k~2mh$cFbY{m>qWQA-l%Xo3Z*>s{W`YR5^cgNk6JK&z?0Zl9vD*KTaP^vjF1iT-c65j$T!A&yDrRa$(ARc+UA!Mmi9&o08K_CH|8BAExOk454=A)NMA~JXxVB=DOT2_$8jahi4&Ju zzt*;p+#X$M0BJcpqNC0!HmECu+1F0?UmSfqM4RG!*2n|R9UAi;&hI4h zSxkQtPb+8mAZlNBnNHaDsSFxWUXMUp3%&x1BllmAK71UcqKZnJ9x%~MRa@{J8d(Mx zMf!qGV4GD~coesAm!cX3P`{_ZYl!XqkYF;1aI*m(rv14M=6d4{Z9=YkeGwIMGP{*mA zf$WK!?Us)CN)FL~djH=Gaom_`ow-5X560!VT#v7f+mm$cbQ6fuu|89!Eco5-MY=Ee zEYBp0)Ox5roZmeq`?x}Nd9jODO`Gk@_MO?9wo$vu?qkRkC}yF7BaQZ6G3*#v50~Kgc`zH8W>gr3L6#}Iz|F))MYxmqMCXjt!rFSGz_Ju1;5gEV1L9tS zmG(GUb)g|%4M~~Y&T?-Ih)|F9eu;$dtl-K&Ht3fzTQP+r6q#9AlL8V{Uu)-=nT*1e zaKfc5tgP(|LPbD29L)*giA17e*-h{<(HaqL2oR}(Bqx&iDra1q7%|O43}z%n?9teY z)ir_*n|Q36>Xwz2(u>?{#JC@C7#l}PRT~_K(Fm|Sdh}IdN0~R&3H4x<#OlS15Ayvg z&}_zIf(dKEsv1}#92iV8k+T@o9gPJ+tunp>wYjQZapJ5xT~lw`l|KqOoLv-?xJ}i5< z5doUqOJo$^K(d&iH&(1w_@0%oE1JE^G~zYQ=NmdtaC*L?C!C>uOuTnEwPPQq-wKMHd78sLW7(({r?66yTtTi($)e}DYq-G`ygktWhY`C_zozU#JJQ48gkwSUaSPl zbJ%IPND3+h#25Xbny5$Z8TsW)G=HaF4G8t(R}2TDUAYvZqa$Fc&Bh_*3DOQNAZ7?dtgA_Tzs)}A>p6|_tI!- zHZaI}*D`B;rnT=zeuki>aj`iC$QgvG{g!zDabV=tsQ)f;wDQ>8mxVzomOHtwBc3}# zpuJXs-Z<#BAl&1kI?LF$}(vE*KWKBcA z9UPp1`f5y)@9vyDJFDEk42fBNC!h$S?hBCQ|I_}5u(#7x%5UbX{3v!*aHre`O_poe z;B0;u#wqY!cOYxI!dkny6VQ1yFYgVvhbJpPXK}#z0FZ(ci1Upp8J|4>2o0eNji3wB z3H%UdxKX=aG&3tpl5+jQfhW6OH4mP&h6%IQ#b1d4LO=t7x{R98W~RvwqQJV#)XK>`#qc>pMH=Abt02f@XkZLhRYj`nbzt|IbUT*XsZv z#hk&i-whNMwo&D+2?5y=an=J5iby$yKHrPuRGeS9{@TYmV6!jPpO{3Nq05ZerP#*y zrt<7;8a6TBMCO17!qp1XZf*3&2cu!)+jTlNjelH%Dl{R9H- zp`#_nk8vU;aH3;?I0FqpwZLGt5_+ZH%cEP$MngwJPbI*u>`Z(d0=8Q>S30|ioQt*s z(v}#D#*8AB|$>ea?Kcio%M8LBpkspaOg%lYcIxj!^MCp_f zXiE{mnd+%p6^4TII_zJX_5<6|!%yc4GW^x0VT1EAjtagCjS^ixz{1HH_o#K4WCabq zokPTP%e$p`rYKRDr0bUu8qS%#bWuHRT( zKBimzrHh)jxB&vBC{)@qvs`aYHjd_?+&cw?TG)talCni=Cj0wXy+o2F)j@2G{ROE9Ktq z-B+f{Jjr{r>sMAsw7+ZQI)jQOvihKRdLJr+>2} zmH)v3vW)ZM%Dc`amSXVoP>x^}o!|0<#0>k1m+=4$wukyjXlz*j_H;8}acPxrz#=y{|hH_+lE+ z=aY4<+896F1}a)80F@7TDXf>C2L+)U*){Vz_BX^A;ZXkyJ8g-BAE&IdVxVN^N>yKU zc>Qiie2;`LnBa%YCn}w1qDT_L~)BUWEUvC}Lg!f)K~)_E0%x-Wc-tvgqC2R-u=nlzjrQHjG@04r;YP!rj!8L+I4{0V z=L9dd=w-jNDHstvfL#D{lO|Au5GMat2FN`ME|93d(tbo8>imo#4LYi?RS;xG zHX|kPg74Nlo_*NeKtlkzY}N-4Ue?R!pT6Gp^5rfwa)Qkh=b)nTR88IZ`UT1uUx4~G z1T^mN=`7_^XjF>}@SjWD%yqdn+or!YDxCyo*bW*id?bA{BIH(mv|&@1z{heqH)}LG z=gWe3*>ZkqpFZumn!WQjJpRQ!>FAaqXcbM4sI?hV1&SSuc|npFF?bnteG{zb6iRlk zc+-)hyL%XEiyjowScp1Z+LmGDBeEcN(v^ z0-O$k_9=r$k1C0WSgunxYaU$??UJ*QiU8m|<9ctWFR207=HlpnU1zv<@$0lHC+F>9 zh4EUqWaTt|J%IUJuV_*=+}7%2TLR;EziploQWL|n{v`rfsy8^|KdfUK4f2%JxQ6o7 zL{La1GP$#~NT<}iok0TZgA#*Q)t2))Z=$VU5(ABE$P5#-AJgT~DSEPXxBwEo7ochz zqe3UrrDlTcAck>Ga%?n~qa}&T>3lCqZyby*9KN+AeLal;T;bMJ;Xey78-_3%@pjX< zLbhXXCaUcp6MKr?di*Gi+WdSgzNZM)woQ5-Xuuv@H>JUUqUij)1#1I&p( zGSwsL6m^sWayP{~{Imq-C7X2vF0E1dt`AZi{|!`3k^-iII-#dRa;a{{Y_vPE7k#;L z6Hq|q^=oWdgsg`Jkuu<>EOyL21_eS!y?Vze;;6HA-ogPs8UQ+DA@`i}D)Cbn~?TnLht?$cth)!ci{Ef%?oaf^FsV?tvq&INHkJ-$U*s9#eg zi~QXIyl$dAn$>|jp94gk z34A}m=;4PkY-;;SckCHng8A)V#(Bhk%Ya&E_rX^L1z~fNZ3oNytzrS0bks)29SL$d z77-ykj!$22$6v?tcBM@>nr%D8m=Tfr?WnDP3f|P_vm|(R8+~t8Xf>FTIy)g!W*?9! z$jWH>_Iw%)X_Q{CIve0W2RxIf{sgZ)xa~Az1m}ELa(UtUZxjFmC?6J4JmY?8&Bpw? z;{Bfd$5O)XjGah^*E~fpYFkt zIM5Si0|$=qo<e)#YdX@AO@7y;v$W93>q6mjGv& zpeD5>`V&q%mgav3)0B2w9sGm+hd0wU(h(greOx+nw?H$$tlD}+LouFkO3kqKZ~q;TXB5DG)5ls)FO&hB_8@RD>=3~6Z3xkZPWgNyF`3wFR} z&BsdPi_?*9+>^21-s&Or>tmTgvD}c}u<5dNQU9M303<69I_D*;55eeCJ0jV?Go2Sx z{ci7M1)GipHxGley<;n`b7fNXsypnCs-$tYoSPN8HZ_*RXrhEOJl8V$<)tjpAd4a# zwSrmcJ<-5<-@j0kxqj~}oGU&%G&B!0obcHVpS?Tv9q=oa-VgEtrf&Jn!o?qER}qX# zQU!am&l}ketk;jIfxC*-Pon>F%JPB%2p}cvoGLf0 z=~@tV5d8d3yIL&oi;mPp|4@cb@x@Z*$BmHke3ggyua?%kky_flwp_}+aEGB?hOWkI z=*140)}ZQiE0;~Oyy@f%`PC<;k11-iltbT90OdF#Ny=67+~Bj{d$EYhY%?3w~v%x2XKn+MAk@=QV|-G;h3U z=_Pup?lFbT!^%%5U(m(U9_-|Tid65{%ZM`|qhKLop>DB!Nls4txbIz4E{d62J&OaK zIY65mDWUo*{QMF_koqMTFvIEF`3Y8QX`>Fa zeR%X{RqANd{~UQjYIm}tf_ibvL)67ZlHGX9X7ICq6LSnyfOvprICMPGjkYSm{UMX= zC8MN$0_LFZd#2(WCB1hYBU($Aa`2Z#op19UH<3nv7?(O*37v1;+!w(?tQ@@^2KhRZ zd3!Gx@8#j-czrxIvrNfXhZ|x>$t}XG&CAzhN43U#8%L_9PJHJ$BvuNRTagScWTPOsa+FQ;q&L3ra$fs&$&`W z!Qo3KDYwj>fc23`=(`4~cMBz52F4)<>VF1~aG*(Zi<;Vw2eD$ey~xhLJM_>Pic@;# zX8(QnMceh}bI!P8ExvP`AiYSl<_Fowd5j{`5ocgjI9|NG9DVdED9VdZj=(MHG0e}& zqh{>ll&909zYSc&NdX_q)J`Q4%Ce*DtlzhuZ;|E5R?KhDA(>#l{tzc1P<4q{&I>F@ zHnjA`OY;cj)Hx8KeJeJ%VxpPF_&QTeET@~n9AE4XS+k)Q`CgMQ>Mu6UxA$^)Y>R52 z|CihBw)S2XxDoWxVKd3Sf;U}E{vV9gyzD2ckTJ_2N`ZL0TGlk;>0T`c477jf&~zyG z<)O;SK&Z@&7tT%-UzGEkd8mEhc^Dpkhg0htSa718P|~;%w?dn6@NIkr2TBKzKk08 zs5;HX=4suVpC6nzn+b|Rqy-u+qX}-&%Fa(5m$Wg*? zJ>ig^fl8BZKTQTbv5YZ1<^0Ei;{iHG=u~y|&W!d2RYO6GUV1>;uJ2A0LMeB>)&8CI z3Oof3F4*|mjmb{*F%{yBr&b2b#j{uAjARDnzeL|eQEt$Sz zb&UX=C$<+a>RVZY2GmtV8mZ5^r*!ig-TIiXm)l{Yai2mwS7J|Ro~l+B+wRf0exk(S zsd`LvgB?z%Jnm^gfSo=O9@Bs> z?m8PTihDrA|JjG{#3fP8E=iPTpt#n{P-45|@$%)Db*bhSupP&`5EZ%Ki%>Sy;*1|a znnb(?$~vGcLkaXr*_8d$y0YG|{(y8Jq0=5f!>Yda6XQ%b-*%$4euDOo{6q{#KF^CNtMxpmgaXDZ>LEgaD zfq&XJ&?oA`Ps1@)x)txYhhx-|gNuzn_d7KR8Sp%MR4l4DN;)y&X4B(+1p#CLgu}Vx zO%}~%W#Y6o3lb%1C`zRH`*6hqLmpi$o*FOavBq_NvJ>g^caAJ?E(=*ZN|qFuP1B*D zCS*S~W~$e)wp*^s`YeO(hzO}uPL}EcZy0%jIYz&NV$+U)jtpZnZTsG=@j)_ASf^V7 z9>!XAUx>QhpkJGC9^85Fk)XKrZCd*N(^t))b(<$6$l3h17KUQQ^5xIe zfZq6Em4zBL^B~tlqjay9U0f_wnISeWzkKG>#)@RmX`u2n=w!pAZQC{JrTV1ec#(q0IsQRNh8o+dfCag*9}B;zmOkKgHMemjw@ zgp&Y^3d7o2NG1ZM+Yam~b=Rz1p_EI{ zbQ`>C3PWlbvT2;k3@7<$b%!rsOzjxaj^l{Pu(788PFf|&m01>2J>gKpoiXVEu($lH zXlS?BsBaz^lDM7jFMjKyV8@=*wrDuZ7(i&g^;TLNaBk4Z?E*R{nNEfnc_7z%x29YA zmD>wb6v-g!HGFx5JF^7-c7MSUB@EG*+Vji`Q9iW$a^f(2zNkCMCm#uqU{FcT!IFSB zWoCo!0>Xaz~)E|tDKj}w83Jw3zIF7iC+=NCx#VPd# z*^Cs~O;}QS>`hZYi9P*Q={M~~?aFPiAAI{bQ`@iTjW^FFbj*)Fd)q7ubBeVUnc_RE zK+&TzS9(V+qc>HWt-N(#|BIsH^>o1EOz`HuU8L>i>igaDhqBre!5{tk4l}o>{r9X( zbTUxz@~3gWXfocO0EBh!!nLfllKR06v&6w%mCULqhu3n<+v(*So z;y^EX#O5++Yjir|D_3s2MjmB7Q6EZv1D1UOa$5RQn$DWTeHw1Wx%7NxWZtj5nH48u zIB_n7o6nAv78FRtk(ZE41!)6Vql>ir$un$d)Sz9~xE-SJ@-MG+Hyj#Oxr9n#WAZ9L zZe+A5Gy9tAn%s2QZqQ4TI_Q=i2rzGi#8W68M_~V+WzVjJXa8H5LCaDHBetZP^0t5# zZ|lSLH7MZ}B~jMbx{t`FA4OX~)jl7^2LzgnkgcIRTa)Iv4FyQ|-lyUnj(qoyE!)QF zBx}hi7)|-zOHB-_1gh0@r>|(&6h#!D-`$AMdujTF`<~zNsfYzc@U#i)muMPshkNGb zov!^GHH?~bC#)0^D;0%$w6qD1`H4>_%-+BgS9S7p>cEM`(ix~__r!`dN8FCY=8aBI zLK^=Anstj$oGA#|I-ERkfn8)9^%z-r-Z-dl)VDYPD&tqFOHd}VR`_J3akJH;i_>Oi z#4g{gx9?uA{PkoPeZ{K6x^ROD1c)xhHT=G|Jnga#B zM8DzHYT^;IiqNaIZ8(H_zpKBt_w4%wpN>v$v3?D`+2qH?g&Om4TJ|(_ZN#2<4aluu z=uufU%&bXewUve)`Ni%Ss#9w&_at*lhtt@dl^fR}khl-rRC^aIj7xOz8%n3mN0I<- z$~k#H#nWJ7((_3IqO-rXHUh6zD8R9#oIW%3x~a_j!;&U<_kGByf{wTn%2ZO`ZCZNQ z(7T^4sC&k%qD0r(IfiA}-S+#&$G7mhj~bCPZiMM&p<{E5;p(}uKlZ6H z{>3yevAg_~F!3_SG4oe1vh{q+JEkD#f|KOt@e#RH$%TFHTeF@gvi-wd6XQpx1KJ$(J)lWS)mPWCJ{Tr z%ZYf-r0F7^62n!uTO6DTg?FOMaL+dsFlh*;S6Av)f^vVtUwooBF}1t?AVyOF)pQ8R z!zq)~kbY1O^?0T>^|HowTw}<0DmCpNTNNqwj(hOFg~MTbWqj6D5$w84G*i)~&Y4o5 zhHH#$Kdn@dmv-Vi3n@N;L7c9K13b2Y1-cbkqIx6treC8YDLh6GOyW3=uJNz@saP9f zNau53SF0t11m(6)uT>_XkWO}f3y(Hio%U$ub(}Fi?1VzPVjUrhC*0CP*W2jO_BxqY z&Afy4BNNZt4pj8<+|Y{dlTtl#d`YNgb#k`NC9L8?DWw|&{}0+nKjVy*2T8w?n(8o< ztzNom>&p=FeC-xD#Etd61MB(PRWa*q)LO)9q>-C_2JNtmsk#kB1=_}@obq%a<&s!e zLF~OB+!O!oyLUGje{=2ggwS3d4D*i@S7VICmS4_Hxo7b5f>n?n-3-3^U8_}$$+VVJ zA=!(Ys)y7(8+&HqGNSe;2e)a0?oyQ5@G^`%`$67K$>4n1-i_X;C*VeKJeyKH*WS?- z;Hn9K5+Vy`8D0R8HMa=cG5T?pa)GamI4_^I+H_Hqym4V|`zF3Wudesh3z}qX&N$e+ zUpJG?+4I8{C+|)yZfo|X?oLhIvWC@jH27LwdBaUkP7by<9I>HAQMaG##^p&CoSG=DKeMEoY~t!#naFxWm3xNRr)^c1@SF6) z&A_HUHy8bOpzvboo`j33oKQ*g9?w`(cS0})b=+TWZ;k6j8{n|^H}_feROzYZIT_FE zIaOb#X>aEv{gttMiPv73I_sJXVslP>XWik0?VWI!^-5!107B|sGW4g_GAkA;$Z3ya zdTj4DNAFQ?m4%}hglHgVtATHhVx>6{WOQk*LwlX@gzVieDl^iXWLsoYdU0lDOgtSKrRqPfw;^8L{5M-Jf zyY~~U-MYsd8<4JK^~NjIKsDsLf*EaVm>Ko)Eh5G$0?nCrN@nW|qmw#_g=+k>%+?Pf z1!SLISD5qf$KE>NgT8nbC}J`4E!^{H0nz;iy62c5c}&4o>yoKx`(r5WlIyhe$X#5# zCbA|5|JWniOwMCG)c-8s?t>oUaD2MldfMhH+t^=#6d;rLA8o&^l#^rD0U`$_Lx z|6Cp6972C0`z^?osdbH6JO4Q&H<%~lV`Lgr)T}|S9J0jo0Qpkzk#;Kg@0tMvN~wNUs_Yg@+?3*%?DlF1}20`Wmcs?osa9 zdns!N5(S7kW+uPNY}p?niVD#lD>4#uTTTn?LR(e@*2L+$E?pw4mhqhqiCIe_-V4CD zUscN8kXeNe#w0-C!<)wOtQ%|oQk6z@9K)OWi}0lK+$UBX*(>{cHrAO7X+5uhHLYv&Vb z_IPD!)nm2%o4?-Ji-E12NqsL<#q4aARTXOeVM5H!8T)n~Yqghdu@2!Q> zm-lQ8f7$wAWtW?XE1r3;K4ZqR9ib@B zry|!pAo=+lIjty|?yO?v`16S!Mk+1#zqsrXh@cm&h10AI3=D&_;ZB|t<|!US!8eeG zjka5MH58BCnmFpT2>5l<@&i#5wq=TUWp;dF4;Th^RMx0P5Dto~&j68U^a7r!wULw> znP4e|0x^UP5?b%d1R**7rUo7{@2eq=qoGZ3;b>>shmJUvG3Z&8@jGkAYc;jEGHEKV zCh2*DNIHfp)RN(cYNN`Ma`lHxH*jie@&PhvY^KlNaFJc-p_kE$F(;am$7&t^@>KYpZ?Lo=J7 zPy)|-Z<>Ji-{VWP!tQ%!#}@gTCg7nU67XOj*&rb;ajz{X zmYMqEcbT>kpZ51M{iWDqZTa{QtfIexH zludbqw>Q#fEK@WEqu!p(xwxF}0Z@RxI8#o$?>HFK9>ne=0>9TuKeKt`KAi-&mv5Jd zG!?Wqo+;{?b;XKKDmd7yW3swakv!;uL^ntO5OV-1WJv7`rd_N33V>q_ zy#*54mC7IQteStI6Imtc>elp&qIDjq`oWK&`b&|uW58WBGPHPu4YFrMc5P?8NF!|^ zNsD)Ic-qstrB^|IHb!jrTRSjNPmU{WlMSCS_ii?h3FS;9&pO}Nuq0hukkN&)y}QV>FtP{G30wd20g^rE}eHVu;+g@VvlSW$ze znfvg=x-yZ{_r)T(3+|fS=1S68LF{8m6J8N`+Qr2oaF71h!2zUSp@)dpwCk=Sn912> z;L@xam~z?j>b6h4nmI}@IQsHnGqeqiCYYZO&rIWAc!@4s^2FB-b;MRj}ODA z5=M#(?~RXXX*=U}O zD$s*2>G`l~BZQrrDhojM6FKHdD94hq>%MI# z%889#%o6^Tbat(Gin}+OEPDAxuVJg<7_zwEP0$c}rR+pw2x4NQ9`rH))ceVkg%?n> zmo?7iUK1-CE@wH5SZkXD8w3wxUs*}VqWMbOYRNEs0G`WOUAS!f5@w*O4IeUB3^CT~ zj2t>PsPIlgU#+P$C&t`WeOIg3m}O=DYU!n7Xj*(yp)QB}?8+}1@&w~5$l>6Iq5Q*W zO-xT76LZKDd)8k}wf6_oO_BZhHXhi@La5%*sOX~2c>Ul6ECwRUE#H>By;;b6sB1cX zplRP=Za(dz1#i&R)$7oP>aw_y8x*{5KF_Ah)>i`aAgo>AtcS~gS<93XMmzgwv+CtZ z;Kl+$KN_I_hlLv|d~@abg;}%no!b`7s&>^5w{e)X z>Wro-GLm#gJfw#OgS2#ON3hwswhf~9hCWj|j+!odp9K&S!5z4BO1$d|po)lY!>%jJ z@A9!zK^yDZkIR;12_Y*=@VUiyIIp_Fp*|_Thd8!mkG{;O;asUm8{u8?ID1tz+FGj2 zb(_x72fCBlUqa&d5Shs0xZj!VrmyS1&;{{XU1cufWZYbOmwt6zHWs;`8$d|AxC3WS z;`grQUe=CV5VZ4Mv$h&&10xoF48ch4@tFOibcXSe5*JGK(Z%=o1U&f*P(j(*OSani z7-cwRy7+y<`Kas$Yt}P+!O3bD$I;UK>ohm^O5tR`9r5aL5ZPTfLzD90?z><3v<11e zaICGY>lC z4Zk#rK$!$}Mh#OB$0Pxdm?Ij&ZgpT#u{;<};93@53Gv!%Q;iwSE5(SFVaF}Z4Tf*KDWQxB3fIrPd&Ca>bHhzi%0 zS{l#a;#C>uJs9UPRdx3tuR;FcV)5Cvv83?FQgJk58;p3>>j4BbbjC$>L&7N{<{=Wq zg-h?+t%NSUp-{R^T{lyxSx4`qa^H7#OK)9Jkqxk-s-fIK6+-$6`_`nas$||3A-mT; zE6)pV7Od$u48J25neRPS5E}RJY@8!%IQX=@W!E@Is$lq3i163>c3-PPdEO?h{&Dnv0VpVs_2g&rwhAbr7j}R zSZeCD&CWDT#&f5`%%q`b2110EhVVg6ht>_3#B!5ZB@tN;*2i5cshKuXKzAY@#L)@p1L4%lY_5VJzel<3`iRSx>cMI6PcuN?rW;!&-PA6=Ct*4yt(e%gQC^Z)BZhji zKf-20EOPI*{>sip=0^IDRKIe3T$tgtMr4gaUMcmk)3h^#=7Eou<^`h${4}1bH9IM< zIgi?F$`jK?RDgGBZY8DhF%Vv@5=|-Gbbdn)3^DByAkM^kH?;-AHMD2CeVD@7CTZvc z}W~s+?2C! z2me;5k`(bL_jHg>T~xzTYu)hDYKzcbGmb&P8B9&_DRQoN5e*mS>P04oiXG{+h+!Eq zeS<<^Op8*t^u+CORxFl*s^@%xqO^P0VK)QJMrGB9#5=BjcjQ$_5jBj6WapuP zURu~Pva=H+aYVkax}2Pdoxc%;^y4nZ0d5)tCNX~_H(vE#A1Tb5@~dCIzPHO~6I0so z@4hqrkxw`HH-R5D-|pBklXG0@z-F>5MUYy1_+2v94Lm%A8NQ{~OulX@(MFJDS@)yr384?}#qOi52avFKF3XngPi z%!B}0$-x~n?W1ZRe$+LBn~ud-a;~O6ogTknoNM{QMc%WQb%Jo;7nVC9J~piQT;OJ4 zI;1Qa1I#c=J1E)c>vwG{&#z-tRp+F>blJKCf?I@k7^61C+w{Yhsv)h?xysvw*4WQl zp~5>k6CSo9RATmxR84z)X^P$O(KWOsTm#%n_xR14g;%h7<00ozRlUG7r#jCRRvwXn z)n>?<x;?@3@&`F0`a_^5ea=G}zVrooPB_Ro&*pr6&}ir53Xm~Je8ft-VA9|SZa{?eSrWoEiy|l>n>xi8_L-a=&sbTz)`iLt&V-G78<s95KEEAW__zwkKPspwzO8S6PiLnL9sJCkG7dgTeaK~>g|72 zZCir4%cM`&r8KR4(Xm|hsh^-b&)G&RZeLa1+_9!0cy*IF`n+MlZ29;?ZRyRVp#JT0 zmM*;^{4VST;+`q3wt1C?xlrLs{f0u`=EX?fxpL0xAy{bHjfxGx>;^ONuyR)Y`owH9 z-=-Q77x(D=%6V3OeR=KKY@qJF7OlKe!;#UBI18-JXhuRw=IgzNYd8np?!B5tyla}h zyxRqet-|7dKl)SsLKFGDUt-tC&Ch>Z1S*d~KMw9?tQEJmbfo@xm*KKCwTMIB`%tA{ z4P&xV)X=t9RG;_UBJD%b{(A+Nka%=~Fd3YSo1}Zok zy={GUlbD!~akn}-+lyoHTBM+pg-^@7!nL6bCeYxm`q|1D8{GNH-(bwIIfd3|FtL-6 zLRcqWQZk`h(LLJf{1k5opr^Es=1;5yCd+qsrXex)UMF%dJ^jHd7l)IUEMqyzvOy*D z&LbNAO}ElD+||uZUM=)<*A^WUlUhg$KNL&s{wv?d*#Iv!OCj!UiADe+wWa0Us_bxh zzJjiRZL;Tf^OD2N_bXLvA@=vMa{1#$*oP;-Y0n=H8#sO$P4@SHx3FCNl|laP7zmtM z)6r}OYg%W}?#z#OnZ|)3S?`Dl>C9=nVgQ0EZlNU4U{``?El{__bexQW*D02sfk943 zCblZ|>&cA*?Xt`X?**r|Y`SVC22l=GDI?x76DepHv$Cx+a4wX3iovpuM6}CrQSJR= zDWoZ$F9V2aAA!^^o>qJxF|pAa^NP+yo{l}cqP28E%MwwT168SIvf0J+8t&!1x@Rfu z`TPNvX2^36RRE+n{t!0+s%ukSdzQYLZO~0oG~0ZF*o*r1O-e1y=rvoq=gFkYqOzf; z=29$D+_KDMg(Q#xmHn06`5e1CZG!I4WLOj7Wz%{o@sj=oxbaKeNjqd>*hQJ2idC6X*yydF6I*FoC$}OT>QTh2+7~95B`Ixr#D#tv-2jz4;N7Tz( z){{kRa_`2*f+z1;mzfh+gW5YdZ~ZtYsI+QQOAC$-%v4LmK+`&XF@rk_g60Wm1sYA1V7=aYzsj38#$Ky62roF#Ro*XS0Z>U#~_o7+&7m1+uc|Q4fJZUazQP(Y8 z41r9Mv*m9Ti?v>!ZjAfO=bMH0N|?DuQ=5;jln|yR?3qSi-KpI{MD++b*=m zV|XRe&^;60;!;j&DxrLD)@8wIpT~YSPfm)$PVn7z0`3EO#JSA(d(l~OMwE7g{p8mS zuHbx=(kL}sJeSEbPFjrbbrd12+#IQT=gX`jam~^;q_x;E!QB zS&E8|cLqdl72-|Y%?F9(P<+O$>}hq$R|os56=6rahhp-w_Qmf5K8(6^DJdiP&d&l8 za=}=wiaKO!iZj*6$5DMOPR~XugnMt7)W}GmL{ZB*rgmqQIePW(p%b^;kX<`EzGycOKIt3g^1+o44~(ep!L|-?{47cP#${$Ncagf}-#Lc?ym& zfaZLtoggSptU!b&r2YK^@RfVveK@iSNEZ1ozUcp74i-2Te^WKUL1@Lhc1>m{6HP)* z%{nzT6%C=3l$4B!h@g{4u!IK(EASZ)iT>vR<@5p)Sq2zq)&!IsmlOk)I{>BKfk{6tn~r~R|64y z-0I_HJ!!?H<2Vyja{z3f(3M8KnC#Dj!zeDYw<3FXSpNZWk+yumV7)%{vsDd+rt-9`io+5(PocTwQTs zUY0M{sKIYfrn+)WT>J0WRq?_`T#dJjc6gZCxUJ%L&Cp(4R%!FeWfHdVNvGq^TD8$+ za8L=5vFWzAwFzywZ~NkZ|8u@} zPuKIATGBrH#;#s2#yr2!+I|kD^9kOuE*<_9Cn9VlRD?9cXYMth@gF#c%coDDjp_8H1LRy8jJGb1Hl3eBkY0ZQPK7R}jQ++HY_x7#y z&71hq>5X*ixW*e}My89Maapo1ZsLA^oDO?3pq`|5IJYg0af~vUscaq}*9Ts4Mk8+l!+tK#`DXHDm#R)-5fM`Wi0RK( zwhaolVoFY?DY4!1jsuEWX98c(n~9oDN=E9j3ce1lC0UW}`B#DVyjBxWmBsc^O)#zB z`}vF&t&(kDIKI#~RK9{tR!=XuRuf2t(y(rfRYcCDz7}xai#^?0(~CPE)c~{Rb}OzR z$RS$a<|rxn0+TX7<*^mLY}RGcvBLKA?R))CH!RAIit@^H$g<^lBXw zE;DY7mqmt!-9~qHMWY5Z;woPIfjji@8^#$liU!Dna;20y^?7 ztqGQ`AE-H*TtU+lZTvxUr{X97(NUZI(fH6=$%0M@#`W(rFZC^@Pg{3)L@JOFD9S%h zW20z))9G;Z_6CGPu{2+VS2sIsTQSeZ3*TwGj<_nBbslB)7A(q9W; ztS?5ZK(8GPc&ZE5pMR^co@OhVBy%OOz00;XR1}&2ST}Qyir+4EB6~nVgqWD(9tB;4 z?Wl&oSMB^~T#B8=?spNrA&_K{Crbu~cS~RK28DTpy&BMT=FyBP z4kO*%Gp9h5XjevhM@0O3yV6_yP8iH)|JvGO#9!>;BgeaB7L+EDk&THe3&m4jWVb3X zY74onM}Xvt&!M5AD1cSlteqoT>CY{#-P`FPnucN5M@x)bowpB&!+ddkWR;Y7Q@lhE z55;KZWh_1(-nbUKQ3*q^fjh($*7G5wvW-Epq|~c`cCUi?c1GFl9Zk6`g|TqDIJTk3 zf1f9I);~@^0KV~Us7luEMti^S+9}>Ht0GSAZE%(#3x5J=T6DJwnD_np^QR0LNu6i! z5oUhCXXRA&JWoQ%8T>v-!hNKkrC@(Q>&j?}Ziw8w&tTQ`eIM|?9YBH~0j4AqH5sr9 z_J|y4Q}AsnffxKjCFVWxW(-mX^65jB!wLZYtiJrs+;xhJ5myQ>ca%ggd?wY8;YFry zIprQ^ChHavQOr`x1@iFdNLI_ayy--{Rm5f5+COKZRF_>*Ddq-^=l2Ef_$uU;;Y(%# z7@(KO{d|6YzVkCuxh+-vok{bjdzqs(>RFyzf*Sz+YvNysX*gUBhGz^u88M>yV#{ES z>uCy=DnIpteOea`Uvn@xW4oLLpI=yPdvBf+Ia%X^Ai|`sfm;!?%cK`VA#o-)4k?cD zX*kLPXFNK=w(eP1yd+wly@6h=;CPgPR`hKpNYv=)HmvD%>{>l-6}xzLg56{`M6?&B zr3jxPvNQA#Z2G|f^krQ7%Ja#9J+sT?wCweMM@g>ujkm_e$`70hHn9eDbX-Jc?Gpnm zRk?1)M}}6U6chA1Q|9p$)7w2an^NluE2a&D4KwACj^QVR1vrf;L z@;uPW@T@GP*&#?(81DB)?(CtO3qolei4LOx-6SMQP|m<0u`@+%`q4}tc5~9agtTl* z@*rbV31c%>iv~Z`y2zmLX(quKbP%3qxj2+mUCc*b2wqz$DJfC#9k~V8cFrH`QBilZ zcdmdbuEZ@Nabp8TWWje*hVwSVfi^;oP`cL^%$eLo2Sqw-=b{BSMz zp`)cFcLU^nc!h95-tCT4Grkr9hT{5xh+gL`{xTBJNac$jNm;rW9DlXDR=wbZ7 zUI2iQsR)jOij22Enf0^D`oqL`rmX2T$%(>!7F|y*=#-;$-9WRT)2X1XzgeD%O3M&1 zwh$fcw2%3w?7klI>>{Y|9llUxNpX86VqkRrW`v!8H{1LU{p$czR%tvvV2r19Dd z&BA1af0b?rvX}`F(>NU$72<@C9!GjxFRhsB&$A0(_~)~!+m>?X>Dg7TFU4r;ERS?} z!QG-p(mnC;3fCMekExW|^(8-pI3=*7Jv7dqU5W@0T*@{@`=eM^ruk(yE&DVetM{3O zl;_($gox2BU?x`=+Es|}i3_l|D4d^0WvfHIS z)D|rKPFDUt06C79VZ95gMb}A(U&5J|^(e;VtC_L+-JdL+e}NjZlU4MQ_-4%k4TY#@ zB?yEuT8vuZUT({Ej|x|OT$cTqd`rV|Ojv}EZl(8ih9-&uhKPz3!RzX0Qr6$_dCK*SU#eYV=;U8ws_vS4LLt^jJSD`Tg5A zcSkyeilak!*!(EIP^)?|9;Wcjuiy~IRP%T|OABVQEM_FHi0X#+b4HlxfF;a!$mbM)( zFUUU|91@Q-d>crlG^gDPvcbE&-e$krm~Df)dV1DkU0@(_IY}2i` zC^LqXD%x)tL?iV|$`s+{OISa`Ol{ZHQ}eAiakY$^B|A6E|6bT;J~_K)nqCFHuC9VS z?)uCvzv)V)wfuJ|iaih#r5LCo;*Pb`x!NR6fS8$ijgVhR|I8Ng{lyYZZyCCxz1!Ie zQs=P1Bw#n=i?Zl@33BXsBdfGyfI3AX=p++e#1d5jsD+L`bBbd>5JoF&$A+y2Zxq${ zfElYJ?cEK<*Sff9(@P}BLa4^Oe1LYjO-pNgIq^zgX>h&RjFR!m69GKrhMMx3?|vQ6 zeQ#b1SwG#tlKItzgoQ5Z5V(88304SmW$4=*iA*D-rRu`jFO8X=DQCaMSRs-9dJ?c+2>1eoM zT}{ZsTDo4`N}jG?l8{SGSlDZIvhT^Oo(CcaGG^`pCT6DXt0}|$uV%`GzXNrNdDze; zN%*u^qQt&e3N0J~O+U4_FXr@_@&x(tDHvW(%e|+vA4B=#Tvr0EMf%5ug8IKGW;4q_ zz5uD}pM*K=(+Oxeb=;pEaPqtVSPAV=h+JLOt9+fdS3OS>sd^0B zqi7I?ps>3KIJ1}|L`62j^@#tvCsGbEn!z{Cz3b3QT_N94??wOQi6kW-^lb?{z`8Sb zCA9J@9{f0=m3tNW7j!zUuJ&k4*6f^%i|Z0@-CwQAOe*8Czvbf+H&_J-R1`dxQ8%40 zc8xB=sD+$ARa79jttp==iyrM!ocY0i!*`1#iHcTu_r_pFXk6k6_Jb*xA_K3kLBMiX zQa9(OOAoq90}C@;`!@75vC45CY*AvgA#S?fXZzZb+YiQTt44=>4rgyr@LI(-9a7eA zVk$zfUB4##`n9ia7Pk6l!^N3bM3R?A2u)WEz$2kSep^!3&08gkq-17mhwA{I6WIg} zR9vzMB%+Q2;7xu{h^9qqokzuI`lnB2uAbs%$Y!vHQBCH@O?Vv`F4maRc12k0SD?$S z%dJ*dt$J=aTI=@xeUX2!YYHUpXr(=qZftC7u3_3v|3xB@m<(C){KE#qjWyCO4w0}Gg*{zBU=+{VzznI}%kgWGKPnwtiQE?1d*XL+3qj?Wt&F&Gb}Vo3 znIB3+$_jx@G5F^E80rDBgjTK#(AR20QMvGj%$liYDb)fA(;qW}Zg(6)1rdEsYq zJRUJmanru?LWp#a#uMLv#`Hu)X)s6SUd{pPC8REZ>m;&H`_0n)Q~u%iP5)__dq z6w%C3xIXHJ;iO{ZK%K{maZ(n8`0&WcBB#v+fA%m>o6zg;zWqx8GQmbzom{Z-H}=`L zS}wAS`|uXb_2&~O=irY?;!_Y&n}GCk3K93H2`7x=<-SoaA@Co)&0J1=_NZ@XfBkOr ztE2%?J9AA#bD?mD^FQK;3f~mhI0o#lJ~N7zrFzGS1HBU?yF+K8{18JZ1GSka%_Z;Ky_$;tQ|+iFv@m8Mw71 z-wTXnfBq5Y^`n2&cm7{~nkIP1scvT#Isb{d=xNf*{Jcrke!0FO+wFheI44Mt)@lFu z@33!SD(JR0@GIYbKM!2WsS5D+c9`DUiu~+hux|EGf>bINxi3EK>x;9E-Hr(k?(8q4 zpd@36Gfn=wcop~R1OW)izI?2PfY&4>#OHx=afwV$oE#s^Nf;TS+rEhe@?3rA|6jjH zR5Zqq++Q0er=_Lkf+;?J+~pSZaJ&wCOox6>VFVSdp?$FzhP#TbD@g;)R z?Chbgu5Q0bZp|yHS053f6(;7?(O(|$wgG>9MrFoNs2<_D^Jc%U9_l0Mg)h!CCYA^w z!=P7FwB_aG5eO zPm{Q@5<4P(dV1RBng`~h7PW>l_!tC)|IP@&!Lcj_%gctlsy3-F%UV3F$lg^HNJWkf z9tSi>&Mm=|1#?5zdh(^q7NeywM7}{42(7Ys?H_}{)@%4n_?z}MN)pWlzJK4A(;+4A z+t6TQX4Y0nU6bKwi+dS26B~O!j>{wDl4lm|0isjDDS1z=ecj-k$nkM$V5`bE>D4p`p^$6E2AgHz(tsT8apb0V#6lWYj zj>Dpx+5!D`?$%>47|GG&IB|`WnVF4EDdwzF0gV3|9*+eOKA6v%o}{N1L?P~V#K=Ru z>)q;-0|N;tg=J39P8ICnfbyA%dH>-kD<+w%3p&HVPzNc7?qCM$NTFMvl_jintiI^JJn zOi@0m-Gg^ISPvK0%`YsW!Jr0Rl_{rhop4>J12YW3tQWJm*EHW13b|}X-0RTh5B}%N z9C%Vzk_9tcyaR%Z5bM)5%9Mx4?Vv5+=~y>-VEr(VC^JS>EGk}aZoeQCAEc=){T@R{ zGCtW?$#Zob;EF47R_*KS&ry9min5QC02^X+Bao1E+t$_=dS|$?HYVD%!+=mQ8a>8O z_jiCLNVbZMVbzZx=Dz*l?%k)-N?(xNBgm~%fVU6yMUJ7|A~P~Go0;R_vGY==p+4Jp5uWfi&0z;>hTg!Ppj!?+}y7Kr^=EBwlNCs$+Dg=YYn`Q z7D}v+I0e34_+tJEG6QboH4ytUvj-dL?KCL0&{ru*ecpgt%xUjJ^YrkzLW%i@exeg^ zalTN7r)G9xH%`yaI_s`0OWNN1jV&*T2Rhv%qyzscVU{Js)~1L@hIA-Re{YZS%a>M7 zoE-y>`v(Vn2Ot|X%1zrGG8OU!7v!F>GdeoZa}<9Cynm^F3`P+e0ATB}3;!%;-|O_q zovf#Xr2>ekSD!~}8`ytn+C9fTPB=+Vrvqg83aS82Y1KDr327n1tD{VUorh)t>!YRF zjoa%e31&k7>(}u<0nP4GuD;AtxS>uIKiid_{&Tp(&&`t_Lzb$!ujJJ|ZhMyU%tuAH zTEW|(T4U(EL<-op>4C6}00qY-Hxp>=-eIT#Za(#YuCpAt_^<>hk~-tKy5ctmk%$$Y zRUo?Y_6WJG())>vmwSQcI6T^h^4qKrrldz~F$7@d~ne0Dg;sk@I+W|#p?HEjw|$efz* zNSoCDkx6iD2C73)+#{97Cq$!F#@Q>c)&N6sv1+Q;%TwWo8g>a>Hcq7$-N9!k2MH&D z2On61yJ^v@x%A|+V02v-hDuplu0Dd2+<8R!;5a^{5Tqz+34RIrO7d$GLC#NIpjort zYU;3lXs=E@3?2)v$4BkM!&+nioX|N)OT*qlrGz;T4>wuRD{|XhS$X#8(IbaSO5GH# zu_{Nz3KdfIt5nuw)-#AH^rl}(5Os5n!jispNr_?r%mgFDB^FHNrztK&4iI>s$&c&_#wf)+qWNr-hhicYo2bD`g8v0&s8XokK%7%M`F3`_qhX zT-N+lf=+D%Hv6z;Mn$@WkBDppkgpAI-MZDutt-vhRTo1(Qu#(=#UnF=D$0h2rXLWW zN9#H`V0=PC`iq^(tN@!Bb&h)?fAF~`fo1wv`rDhgh&aWkFDo>!xC8vZ2%aaI1Eahe zQFgYhw|D)`RNgP2IDgFYz`Qy947AmVsUrp?a{KAigD(4P4iBF+duqKY4Zo6%agQme5_ z^a|HHckF3bux*A%#U{xEa%TJDVl@o|7I5)LP9#n*{&OkkY+Tw;Qp%<>YU@1zQ-%1h zGCxJZ`F#op$Np1}*|Ghnor#10Uy-B#%byl}%~Cp3m~uNv5)?f6Q(S$IllTu;|FUIE z9yLD?VUXtohyLFVp|2z8d9pqILdoO6bs19&9{dM?RsZrQx$GH&T-3|Q%*3t(*Si0` z+xMRWzhYq%j9I%NLfgnqv#`cHA8?hGub!SQfDD%%VCHTsG3}rSq+H+@gUf85)v{d$q$kd;o*;9!{pqt$Sv!i7V%)dULtX5xWOEu_VOS8B7?F%e}u4We94dmMt5{XgP?_QVn!bm(H5W~$ zlw0d>W3e$_Cs;JXNC~kQOaOw-mJHdrK$rcJ&kBIi`gD&IK4oVIu8-IJO(xx4>~g$+ zP*~F<8;ITLDj9TBQx+EJdy_~A;J_GVk&WMfau9Ir*#7tGmC?PsP8bzL%Gi$dxu{_= zDz9~#0Lh1F05GIav-Y2#pKoVx$PfSZi)6*UPm+Y1^zqTrkB!$5LDu^;>B&_rXwKyjTxC?wk872al-Ayn`15c3rMbAyI z0nR|e%P_f>Z?Ul!ZktsN?UnW}?eU-oe7HSFgu$-DgA`mn{jDa;3--#u_ttg@yrr>y zU#a~ILFf$k745DPuN`!@f}J|vjT;@iJr|mwP^V`W8lOEw&L!7u@rn=ZjOK&EgAQC` z(HRHIu8Be4wa&Owlbw0AnvRYIL&LF2+^VfKi^l5|Dngi(N#9_-PWCvG2sO0F}Bd}nx>|vaX7{I z^eSvj{YRfYd#1F2duc>~`RJ~3f4LOnK({h(5qQdv++iu>mlMeYxz zF1_%~&j=0v{Ays>WO4-!TN^QfI*{6Lj>eK@)b(4hPyrBNu$Bx^&P)@Nhtqyo` zWxoLoW_$O7$_yQFuVxb$_hb01m4X~0vj@f3t*8nxR-8SY_Z6NnwCKHWxzwW)A2gQh z$QU?`Vkj8$Vr62A(6_A{gi>}Z=cq`-&4p?I#G z$p2=wD#m5L%{H!x=MD+U+f8QohR1C6wmKG-RiPkcr{Ys(yw5)?;Y*cl|H7jqHyg4K z9-#0kvKxs3X>Wbf7f&Z^;F150nvXf1?#6VKw;8#f{PK*B)9cEr?gSU-VElOVFthkiWqoShP z{#y;bGY%xthpX>vK2DJOq`|SQrwcA%;AMjecJ%*`BKoqbBQ4qL@!9Fw1Hn3HdQ8k2 zn2A@I&VDKoN*O;6mo zj;Fy-^yeMz*pjMprtuhrnB^}^f5D8^zS6*^Z?lgBJk$NDF{$E_Ji%UGrZ>N%a3!zhQj4FT4#s$rX9W2U2M4}Ml?Tv*xI zd{?sqx@#uj^gHz?3o*b%zR^Lj8PW>~j6&n{*R4SMupg*7JHCdB(*0QA{K%t{7!@^t zH@{q7#Hnp!%>(wF>d&X;pB`x6xjN=l=eX1j3=mfBR}Vpf7gu+Z>_N{ZBEeb8X}aG7 zoA1rVN$%glnf5*@FmRcK@BEe^Mgx@blU5QbOrw8PDD=63bA_vD}8Cz0K+fZ5dF*^ly$f5`0!m0+eH4-{UpqQ+<7dibWAf!uPTs)lnizSn_UPTNLJ^P9dIK zmPCj#erekC>sw1JQ$x~!6mHDqLK;Us=rXW9KjvPVr2(SI8Y#)-y|S-{$n2)P2zio zQVYxuR?YwH=2Ah|KV}IxwDNs-`O`_=nT>@xv!|8`;A5i|`6lUYYdLaJ6aVhtv+mv% zWZX`|zuWwi0s{n3$CQ|Otyy3!zI?o}2IV17dQu2f_x;ZQMDC=9&aS)7oS!Iu84~fp zURvyctw9z9`~776DK9Hqd}#w3(EU?5zeswis6Ft}IV#%8J_2Pq3TB0x6apcmqreQm zYj$MTLNHoyU6YXe&j(yfWalxw`LA_0=Uz7=l^M9N|9rmhFaINf{_pfu%ggQTUoQao zp#L9!G>A=rZei;4>3{2VoXX$fEC1}kaLDNXO_BdUPyd`x|4WWTb*g`%?b!)y-1&mj z|Ha;0MnxIE?cR!@NQy|OgmiaEsgyKGcXxLUf{03Yhtg8gU4nEs4BbOBbPfCBd7l4% z_ge2-?}zvEzSrW@EY{52bKO^*=W+ZFqLJ3t)N&=AaENV_FZ`G;W`^UqDdQiIQdXw# zuuxHr4JK7<08PD|w@FOX*{04*(pP)z*{!XI7v{4M)mI_P{0}%y}ybSKJLWD zix^*9C5KP9im=6sCNV$YcxUM%$o;f}*9_?A2OB51taug{S=ZMFXPsFu%6ar!EhOY4 zPAqKhT}sm;L6C%@z@taM|Mn05;gWr#N-Y%@Wl!K1`vylo=Vw`2+CXnKC<#;;b$CA{ zeuM4woMpPgvPQacxRmDxFile=wElo_6!`2jepTHGWH4E&;Aa+y*=4M>n`~* zQ>W>5^-tr$Y<19lsNXv@xV#=7vCAXz9HheT|yj(yN$ zi@6p#qh%8vHo637PqV#hlfkvLG*W>SzX@apG<5X-=JDVy*OLfz^qZL_$Fyew=u4n} zx^WIYcnFm20gPs9T3T8HgxpG?y8@>k&&SmgNGrp%zDr4!?W_u@ByP>OapxegP7LHrzVpAnq64Nco(iY&H+&}Q`pw>F>)6e762Ecm?S)d1;1;PDwYvgL| z7T$1~4>+O;?uhLC;Lu3w7Q6+%-YB8&1qPEc5~fOvd!>VPR^fw9G6Hgsn;8JiOfBvL zoh2d6qA(n4$s`yF_mLad)YY0C`PM=q%=v4zCPg*HZk_whIrMPAsRV@haoTSGnR{DV zN11jer}6gK+xIrJb9h)0)MkM$%b!Z8);4;LPC;5sETHO}jZtX>@PyK7&1%^%K6e|G zqVQ9jHopqYg>+_ucmqBYwFQuDLHj1JUf|o%wNXMU$8Z`~HD-+sR2?Y@31~$psw>G| z_ZRnpI3laAKr;i;KOU2ipe`tvx(qwnU`l9A!xvjv-`Jo{jI5s@xV>0{Xb^W6u(0kg zG}a9K(4i&R_AX-D&Hv3hapslBb82IGa3;KEYq36UZtGx?SX*0rx;NV~NO%w&68y2T zW`92H@u%?(44ZNhYtbpEg+E4XlCcH21O!YSUom5c^ZeEM%t^O$!AHV$nCO|$Cs%Mo ztyBMCq#TWmg3|j5G$tN2fk#Jm6VL4CxMhW# zcK~0@Rjc`$F8O%B7Hf&2UZVnJeP%nuJ7wyRH%Zcw-j0rPz^`q}lDp>y4i+vJ-3Ut$ z>h7?J1e|j~S4brTvf`D$vSGzFl>;)BEQT}2-n`cTEAh88J0rw2$D${t+QxKeq7WS1 zVZaxC27_um_rw?{CW9OYy~$IMiu@4T6nzh1J$`RgrWR!IlJ1Lf}3)ZJ^Pj zq9RT;DfuZeguqE>e?XcU$VV;HLnu#T2~tr}gQOvY*!q*r2Q2o6;#zm=p=&=&t(qqa z(`ylZecxl+lgkXB!)Va@PrxcVxZSB}1eQ}!!4IVsZi-${8;G_Os_7-jgs=*E>^lp{ zo2hx!Tb8uhbm>#SZf|$quQri)LDPFSD^>P5*Vu%V5B@H#Y<CIe%-B z`G?&K=&ZP{XOtM#3JSXQK}gm@1h|_c(`FVH(B`M17{0gB8=i!|_lD!$4Ug+H*H%|g z{|+==ourd@^NQJ9t}A0iq5@5UL&8%`5@}bpIP%v23Pyz>wA^V99lcA~y1$taxn7Xd zrvkQUJV-o{)@)~&k(ZxTLl?b0%FfBj(=!8vUcZ#t!i>Zm44_c}4i!=dFr&Z+q?m<$nuhx@A9}|btdDvgz;xbtbr$uKo zNSTf2$-_GoMFCbDuX#~4BdKKCF4ArQtG>`c^eq<7K+jO$6tBZ(W~J$Y=skb)R6xZT z;0zY(D>5Bnv1efTvNz zYJ^hxUJ}cBZRYdEqK~5aV8+I&e#8%;Yz7U_Sa2MYg^iifQZ+?wHZ6hn;6M^bhrQab z*8MED`~KyfMxPEj9pnB?_-2IYSqPDNU-M{&{bH3&2GLb<-gZNwA_a&mT|C=t%C_s#9AgO-215KdFc=IJjq$JcFP3N+71H|huu+4>vmApKbe=y34Kccl=H@?@$`7iOvXdm>BMv($+rr(0! zfX$JWfY(kAz@3n}-%QFa4M3f3%_)SOg}1u@M(Z`W$Aiz>7wke{y7bwP)1?c;<_?E~ zq6{5xsz}4&#wuSSBPKkRw-0bZ=o&o^-ESa{3Qis2e6ky8c(fIcap2U{e~n232!w?V zdSuBkI<;aY<$J04zE7@=KbzZ5JPzh)f#Ur^vNX3(0+~BLl33C9;I*4lgNmlPILxKx zFzAi6fO5U;jSn_JnT25K?G%v=kg{27Ji{huPH%J_OO}$f*N7Xn$n=u5o-8flKuZh3 z-N@}Hcl|(#r8H}Fo!*KXd9#uI3PbUnwWMNVrU>l2k^>a4dx zKt-WVO`&gW5f zZIgQ!|9UTz61%kfM+;RGVn;i#zpJ$B`&}({Q|vw$S5k^v*mYhTb{Fq{NnayV6Q?+$17_TftF6r8ahi?66m7}R%z8CyLm6&lVWY9(l9*;kenDsN zvAg+@R4^l#^PP7pzvSaz{V*o&!PA0F$|CNhx8*6Lo>=n4ZZ3m#Ba_8y!2 z*>=JO;s^`EOs)lR2t_@Q0?zIt=3IpzNSMukjGEX4wfTSkeXa{~`?x)?=Zea-GY_#M z5K6#Q9aM7}L&BvU#RiXRo-t^{?qQNu|1^doJ=wzk^J*Ho%BarQ^n zzB+#&BEB5Qy1oYbUk4rInx^_S#XF;~q8sG0@r)%vc*Ty|T*iJ5H|3s?v58j(MQ?(o4RZwoN>ADAJv+cnCKAUW`+?#YxEG zy1MSPyOuwk=6)rJiph{=w>YFHlxrQ&=uN>orB`POtFy4E$C3lnha$Q6k+|O4O6T!f zj2Ex!4H`(A91T@p>xxXI{fIBrjJ36@D14lg(fX6T+Xx|JKMtgn8so;^fE%8hZ$9(K^|ew4-r?@x)qd66Uc{cgj|Utw7WN~OA9%|=R3 zS+j&#ceX$JeLIB!_1hHs7%GO~Q@tX!(&8<-0FkFiwlz<%9+d?Fr92enY~Xazm!aGI zyj;kVB1HHoAY*Cm-q`178gVAx)`n&eEO;w(dOvi+#*@4Tb4~&S>p>0P?+#EG^NdfP zVvH;~aqM>ukf0w*4e3u1$t=b+%82+%rKK7se2vshK$5}Toz-GEH3 zN~owg)QR*kX(zG)%@K$hzDUQu2|v@kT<+*q`E4rGI6cGZ(_~1pB9tWxw#Q~RBSdy_ z(eFqI=m}kOo7`uEN&)$73=2Du7#qt=X%TY&_U(wD6Ywtfl`b@{=a#c+kr=qfQ4rn+ zs3X6%uT%EF-}h)NqPc|Br343&YuwT)rr5qca$K^jU1GI^R>kLMkg`UK9)HYS-kJ(CMh^oH?^-x>@w80CdydMA25>t^gQxSop4(*BPuHF_DOi zX!WT8u?gJBx2!9s6Fn5xG?J@)x6(+u*Tk9SzXVi|-$LBN)%3T{E(D zf3-FC4W)94;P7GsR}p6M4>h%R(Z631jvYQ%QoHab=$V%&ygQ*4iW0s*Wv630b`xuM z*wTEhmC9?!2-J3yPZ8nA4wh>-{|F5FD7YZgxcItmO9YrtTAs zB%I>T8)C<%<>uXqQfknAiTzZh4sB+Q`lDz#-X(9J`6N>Gyv`QdqNnc*`|x(?F`aIK zjUxs%efa*)Z`D*N$7=W+`IK!LQps+_dH11qNLDeA)tDN&_sC1`n_&oo8uyK6-z%il zx^O}fi6?JD@mXDoggd@tE95wag;U&rE!J+9RkU>c^@Vf3*ve(r5O@Cg0Yfua-rn+% z)or>Y(qGfIC7FeqX>x7=srPFZJ!rYHPX_3I-;)KtIW3elW)R9GcY#}TKVtN*S$}0= zk7FE!wbU05%U=sgI@~63RlGs+`qxh<4LSq*aYyd=>s?FUcfI);W23}nE$0n1cI8dv z>4af#I-c8r4d!}eGGzOkz!O%_6;Cn8N7Sfqnz)p)$SQ;*P-wmiv%f!R*<~fTAM`Ol zr|X+B=^!6pLxQ4Y2Xh#|WYj2RzQArU5PC+PNyZTQ_B?4pLf*V}93W5J@N|&XIb!gr z>&aH;A7?(#wohR5AjjMe2L~3djfUZ-YMTTXI1R@qEA*JPkNO37hY@ zMn^sJd18jLLB7?B>oO-8M(W|wJ`v#V-5wa6qB@B>LTMPZ|MmO|7-=VQJZdt@miBw; zULa#m8B$Bi{p5<|jHDdB3!;c3X;`A{6>_g5t=>VeeAu4aZh;z&+LKcLvZULUXBDQs zFBe)-;aTz|o=`E&7C?LNENT;+_Zw~|E|5t7cG2nct{n-*4Ouhz3v%LP4fe{`(({%i zwwn$^bD?#!`hOf5pdEhix7(UhihUTmAAxgTJMSBMZubD7h6to>U1?L4YSk*#GMzt{ zJe{jpphLBPUH1*;#&)vM?}yUSVfH(MDd0dc-e6AwtrE+t(z70GrN8U?wfm-u;nDf_0T_v=UEEhL&%azcUZZNr_&Lz=qf{gAr%^wWh~ez!G5kvp`72M zv&~?Zb#K!miz_`|Hr>f+WGkU;aSz}4O;3!cQxL_d@jHiZ@S}_Kh_P%?$y~Mdu7!-u z+a34yKx*F>P|`5~Hf+mjvE7M3u-2W!YHMv`MuRMqnDlts4k=+;bOLQbjie!KU535+ z`cVDe&eL7KMcnK7#k3-@Ldnx=mf_6A-h3eK6g zvJuCCGwseHJy(rtNx3|SpX>N$_|#1k-nae0Py&E~`(2IGDbgm>Ptkh+6JkQM2F!u1 zqWADvw^kGDu667;AGL=r%59z?nW-G zs$1-Tm*W$=wV#v*#6EGoRAP1V1;&=~4I39B$)?Y^l4((tWS^bJ^2MWr(ZLxTGSP~= zt0g&p^~)BsyQ$$ld$@$-;SO2=P`l9GjLCJ6sI1g^EGvE8TcNIdz_;n zMZ}7x*^bx!ug~_MJ6P3seWz2Xvs)NxZgiLUg9+IFcs7oY9E~|C-Mi{t}6#syqhV1p{SZCx>`?}+&jngT23WR#XkQTEqLJA{#9CPI;C-|3S zh9}b$T!;~?iW=%n<<{)t)kaGCA7bh4wnC^a2sX$iG$Dz>;UK9*bO4?|5B(cF3B1N_ z4VW*|{uTJTZa&_>^*L2kfyV_!gP>Tu4n8+D{M-1Wk()!< zAu1w{(JJ|;QJu*$nYN^p(W9&DuvwP^IvlkW5x*2fcxX6+Q|BHTDMCEkHqz$=6O)zb zhJbo*B*E_vVz9e(G4B`Y#_eVw<`Qa;^yUeam`eahiMNJFgv)$##UafBpIK9B_i1)SmxyHR91o^yf@}cp(T@%oZf3og$Fv&f8YhtI#g9;bQ4N+j zBWAZUt)4C5$@v7en%{3YBO?=kaP4HD#M9WuVA0Xa<5)(cV!WCsRDJ2F68v=@NARUi zjV6+fo3+5RM`S-cf?+K)1U)zFJ=@aMTdDifWR**`%0XS%ED*L-X=&+H{mOW4HI4kDlRmbGB2|N3;>C-m`K^&2AqfQv4Kq@@ z82-KF7jZ|_`U%_QQ zY(`8#yK%}{n8&d|YJmehYaX@BFObnAl=iO0}R!E6_?Y7twwIGAeULrMqPR|BGY z`IBv^@7m(r*P0fYAv+Y1YFm4OQjQOE?vz0#u<^WIkuJ)F&i6NM*+NpP%-x=~Lwddn z-#2yrO~~GX6y@zSY+N_P02gJ>Op(p7&6wpKxo*k3mFPbt@fh&9<*$Vr zgbIg@PC_(vjRplhs9jH?Y6sij3^xRixY2OvN+ekoNRy<)TAe!H?E4ai|8UCv?KIR& zz&P%<%e%d6JyBdpH{BI~Fvpsw;Q1tzfUFI^(Qkv8Lqb897U{Jh+Yc!WXpsnLACHq+ z7kDhE)u!g60pF_C{rn^Jd-@@^LCHkYMMx@$4(*D0m(W|V?@=n|X3O2ljln0;4&*m;Kl zpGBST(D7P=7&W}3KG0dOQJsZBuOjUId&%wN_`}uQqOVscM>O4*O*j~XEDn1^3#GM> zZF>dU+h2)8*CwLC9vw5yun`>ts!#vd{oIV3OyQ4XMIbC+8uv5KdaKE3SXx94Tb_I- zYYDV!Dz>8cP;spAcb%+5qocb1Y<0JveJ6-GwJPOce!q-a*)3OJksxR@oZ;vHY{qXz zvAM+$;6P<{O6P>DjB;hQoK5WJ*S%M`#GaAcm1?ydC^Fv~>o%RLg{&ICF|>ZO<3!4Y z@Ta5BB*`l<#z`qu&DW;r@In1t;U8Px3!(HO4b7wU=L-tyg~gLd1cflTK; zY*LpRo8TEi|GyQ(QB)lpYrId|!f^5p_d=0S-ktd_;jQZh^QYGIPWvMv!IF|g?CyHr zVSfY~S#H26Np-3HR@FZ3F8ni)7PV=%8dBkIg0ZEt{#I1^EMiPK{PHh zpQ|tjbJNFsRzW26E1?XstFV6GGCES{FAae~OE1WAem);+Pm z-X8u<-eDp}#q7sj6E*WQ?gu8uEYx4e#^xO~bfjxAXIi>=-MgU?kMp=G72m+)UuVWf zPyZ3Wd*2-RjVVI%9X7((fLR?0M&43Zu9?P$RIV4MkSH{BU(b^hp(^A!7HUNX+I$yY zuI5?q*KJQ?^+_-26dEZ0#mBhAWVz0>O-3dkmVhwVUKVzYE7pb#i8ZWqs7rQc?B^%X zWVb+6$~v(YFwWlPy_vKG#Hzj`Oh|jW9jA( zDY9>gyEW|x$hk(R1epf^ah-f^JrfM1tuMDbK?@Gi2@(dMHb1$cFQM#aoRH&tC~nfr z-H81b;0c>5%>I0-02#VfJ!rl6w^}Mq2WAPv=hqi$O}%D&=xIX2{HEVnkCyF!r!%$G z1R0(~l5xJ(bWX!Jzt3KGU_knsvvKQn>HAn57}w8Qc>7aB4QuT3%dy*0WxZF2{W0F( ztwk2l_y5}pQybozlO*~vlq*LP#RLaO{|D;2V!j)8gF{p)O{?Le@8I#Fm0(NR&F<0! z!AWo#^mSQ(i5>eeONfh7<=IM#n+?zQ57?Tt)8lYr9i)}6y>5``Wj%stMG?l^lceI% z_$OJ^j|xxrbv3+VidxZ%5R%*@s%cMJb&j(9C$GWxvhNwSEQ5Q@G? zQA7cq8kvyWNaxXv6c9hefr{;<{jr$hi>P*E6T-6)6i>%_!^bG|3Cuc-_jiY>Q&vuk za1ZV@ry-b~0FTcAp;;$Xu;1Ww!L*;?2-vh9g zIg7K&my-FF^G5{W)nunzkmTrTyWWl8q60_y^Fn`Jl@yz9uQg~5cEMfUa^~N>0eZ}H zug@>OU3XJ#IY;PuR7PWTt%-{-)^-y<7IdA-R%!MB<+?wnMNGpxffEEec!{78GNql! z|1ityTpPFi_bmI?VO4m-*00Wf-&-#YU3E^m77v4o9!O6{c##R?I`!hjONB<=5Pw2C?JYo=@UQDKFN+!PF{)S1z1gVI-UZ^7$*1mLy$~=8&3( zgV}o8_VSM^zObC_uDCg|~hm+aKv zXO98ZDok?U)~2gXl50LBYS4(S8m3NSU+^Bwk#PnfhHbP`e%2ITdt>?4Lv#mt2eC$@ zo~U`@yQV<_tMjCGW1fI$)5MPWg6YvsqV9rx-SU+;JB&IlfcnqfU(;<#rwDD8p3hC& zle7?gvGn|~+_Bv3HG_#OlM4DHXIBGQlYWVI)dVGdLq7)fP)?^8D#edN&k>stMX>iN>EaAud4_grUGvxY5jteO zl@NW3{$=65&9H3}T-)a(~=eMu8G~g)E=cNC!pMj#~09^;{Uq|ro1$Gs^ zR(t78LCe=WdeV!0!ukbKzLb4Qj)${weKc^H)~J% z;?}(6{z+2tMFAK7{a;H1jn&ZZ#wO7hVZK@X%E$j&nr}|&N}au_z4B=(i1HBprS7mu zlu&$2Ml^25B-x29qj&Nx;V5Oc8Y|pj|cS3zzB1)};IKv(gA8;&EF0 z7$yiVV?1vr$soRq^|2v^KjH|izoc_pPLFOGGGG(P`^%=g*}IY8}udG=wtBm^Si(Xb47z}8cA zO8F#q@#*P+JgluJh`PBO4n^=ApQ*Du72!&8~Pz7~BdGS@S;nH~H1*>U2D zG{>XwXD@jm{4;s@>`D8n^)WgEL;Zexk$R2HH^1J0k4a(dp)kLGj#?*jF)y9|IH>Tt zYc&p0wbtmdwdldB+EroxBU_A=t;Qzkg&xD=baCQyxZOmNh1Le1mo$g=wosIa=`}^EXwh^B?jLQ%WS4gadl5 zE+F*twdhvGMuOxcXsZ=&zwGw|d@PO|KaCB!$~JminhST7Do4d_3LtqK;^JV%L_ z#H+q%FX=9LZ0bdwuwGGL5J)x{BY&a$j`=cO{mruprgT9~^{r0Vq@wWXJyF)J9~ErC zqhOrAi2o|?#*#xZ?33v`(!83yJWcqDdeM&exp=obSuqF!v6`-F?#IUztnoEC8+;CJQjw}!oq}~3dU8Z z1WuQ+8{hf%3cMOs&0}Xm29lYmsz`!#oDKjVIr|=?R3Eq#8B}a3+p0~S7K;TBLQiHB zB7%z!pGtpPIpFwzjjm^ucX%r0gr67ZFLe&ea$*JC45ImmshRZz>?*&7b7(V0DY20V zP~9v|D7r{&=7M?ZV7(@tfH|qG9c#Vl{jAHzSNnxCE=qQ*Q>j~{G;CyNp39*Fg`)LDshOT_@8n-|P}R<;W9s&* zkG%U_h0)WFOi+#kg!M(?`_9=w6I5n;+z5lBu=gj~pDE|P=9 zBMBa$n%t>pW)@H?pZIoL&~}EM2;TNYaDYNUkNpla-9YWsZmuSN+JGWo99K@@^5(FO z#hSxr%64$+>pkCf{iyr1w|O+8m&-vZ&rsvXGz|P#PQB&g13-n(I=Irc-sRb#rJA7o zUcs=qKaax+)oRYX=E|QX`8)2d@W=6glgdqK-V8N%UYZXi@u=R5GEQ$9c#1y>kz|$k zB`CI@Kj|V@sDDd2F zS-Z)lC|ac2=J>$}rg9i)U>->{(Ythi6oe2lYBMF%~L?{Re!j6<9wI4 zSQGU5(qIuyO~*K|sotap5gAe2bYk2W+iZ3O-u-}lXE=vuv!2g&+073qZ zaH6f<532}|?=sq^?l=tun#3^SA5Wg1PPew+uL$J_ODuTV&X}aA^c)BB4lOjg!+y02 zWnf>fSs#WHIYTKB4QU%wB#4QS-6@^GQl8(R5}nQZt)a#w%+JEC|5^U~{pq*tETcm%Z_O@z`T;Fg>6+Yjf(p^gArNMz#9Bn$OotzGp1;UkQ7 zFS9)+PR|iaFZ0fER{amJH0uoxQ2ziekxHw)4s0y92)aeNwP;h;Vm;VQfQmZTbUtUp z37@q%GlblfJolz$U=q?{(jl#~d;xsQWQo0v;Y?m#KYsMv~yu{W|?ZsiH9A3ooJc@9-fK;y-}aWpzN%5klcdvx2iS zR%OM7>AC!M2sI`I8bRK3xHfqPknb>e2{Vig=hNi7mP`A!B|NvBFvo6mOk&f4s3wF3nJ&WmvDy@U2s)%x&lQ!#d^;jk%_J7a*T) z(KgrjJL8d&{}>&WrIg%gm;qb_-7j(RO3-nZ-FGG!WIldOL_(1`yP_{DXk1J^E!9Bx zif7W%@1Kf#_H~rzxUGgZ1k{_LnQ0 zFgEJDt-Jj7k(H%m!BdAecek7Q^GG_4-}>F#5f2vQH6T8~d`Yr>-_;Ymy!>Kev#0E0 z3hDquaCht>I)9;ChGr5Y;@k`7YOJ!$FtN~To{mRBYzLT3(%~*ocZBW$Y+0YOqk!Xb z_mC-5`w@`;QGr6$cqpjB&Aac~H7skF|N2*@3p6@|XM*HjY9>K%A) z*;l6OT5YqgU_VpvGlT7CN&RkVV=))%?dRx-wXSAX&?~Q_p@~c6U~4h$g?jL+qTw@J zmJC~LA;;a~6kK=XInWI(t=LlHr+QzPdZVad5ZOum_>XIq2Jl z1}hM%KR9@JcFixokLCf>yX%d&!5zu9@$w+zsC$FCc9Bz+0x2&ddypgVFEr1G-4J5f zO1Z^kxc;lCVGdN|eC zro8RV&+L2a(WtNZcWEux`_sn}x0B6}pAp}Bq;2XW`U{!9!N))!XVqG?l=V}gwwAH6 zarL?Z)A%3st+-aw)vab0<>8?1K+;h<==>5?hQl|S2Je+1b zYKirOk9vPONrd&GYy61P>A_*-)*a-6cNGuHTpyI=eoXBBW+Az~{T-y)TYdN%>nz7~ zecpIjRtap_Mqflh{ zpA*4=gBnyuWMvbXvt^2$B*Kw*xGc0K@rXtUTh6a{y@N~bZroMMjcGB%fOAy&#LgaY zxunR6R7skGWyzSh*BI#sdUL7m&Tou6+W}5+BhUXX2UyWna-?wtT&}B%^(!R-q=wFJ zew6Tv*mbaIe>GB3^adC@pl|r*XWsS2v9gpql{;S^i4WqOo(zlnq~neo*zgsP&?MS1p2Lj1Z3N%2DvIST03NW6=m1!=U2%o$0 zh}Dyx&C|nXi}G2&;u$o3K@LXlO<<9McMlM8IxIHn5xxF_#gDB`N02OinJ$ z9$a1fDEqE& zWjYR_*V-VTY5U(`LBVEU39sfC-hfXt8xu#Oqh>Lh<(y_{Vn>=qZSbC> zGru-B?>pX@=|;2}hJYpP+}R@j?+6g^Id3}?)5o^pba#4b&O^j+GYkaF zDdZ`n1DBA48;L7QWjFd$;pJb1eGJ!uU#X?AcCWk^yxmOaKJh<^DSdnO^7mxFp8`G3 zDBhRbdfdf~tX6C?-U+MnIMBJ7D$3{o+(ysa;10N$9p0bFZt!jr>0ju3ZJ6l|Yyi6Y z>$})EC}^G-F!7MV|N8*ua>3h9C@V;JQLJ1Q8Mn@C7$}4`11^%CY zFjmbr`tZmX+xdW`bBbhilFC4$+FLjM%eVhr^kPZlAaC@4F8TmMFna!Tp;3Zg=sz!g zL;5DJ@t;?yemycC`M>}6|M!;A&vckPCU{A@v!eXJ?jj+W$XqzB2<2_j}oR*4$P${i^p^WFp&V z2|rLHqZHDGWYpBEI=i}L0TC|5!a(Q$d}tCu_+3dWg@Cgr)}H7x+^h6UNQe#uKv-O^ z(roa?(H|b$|GrRO1eJoB_kXU(omv0SXH84wt1Yl@LSaSmjGxGvodH;Z@{!DYaW&aR{~MP48=&_E zF>3IF@w?BfhfW=Ex&Qi3u2-})G~2^qjqV2(r_+nDDpvupvVt4c=!NI?H;XBnL_UQZ zAf;avE>VuE9etxOn<)OIiblX%Tw6!w1lXgm^S40usl)>&Vs{Az?Mq)c-{SUZlh~Tm zyZ?HJ(?gS-SJLwG@lS5B>-@;QBEi(f*8ns~%iX!o?h?=o8YE;fMUwo_;|k`*`4o{mzGme` z2JNbX5UCUWW2D#4{NrBMh)LEB%OBw2ze}Fsw6Q+vbmFj}@!vnCt6v|)&)@EsjZ{nM z{o>(E1L4JvY_EK^b|oSMA@Pht{jQG6ZCOW+j6-@2T@h;~t>2Pg>-~}bd$eqPKiL}A zfv_q4$?D&#Qytm7+Ol2T@^+NZBWUBEQxrjDE+BMjeCwM85b{^UCAEOvzfZ$SCGkKg z1Z3pG2cz)n+S*3C#~WE^=ZY}Gc^)l8Y%I%qt9^N!2@>RX1q>NUO^n2szd8 z2e$=SOZz}QXcbO)WF`bSQHF(|D)Y#h=(CUJx0T(8XX~tDn~rYL-7ioiG?o18`CjYW zv+1Z+u8_RnyVuN&7BSlh`9~V8f3rmvx&Q#X)ea>DG{`fag(G9E*~%c*C*Mf0R0Dfsk%e=2(;rK)0jQ?nnF5Y0NOtQ<2#scb%&QgY~kUi71t`%1%#a;_0&zA%Qbf8fm70;y6yGk3%^I{@P z{1;&8>7O4!nQqSY&?q;CGYv8*-fBN6)nC8q=){CR99V}NP7 z2gs;Tt0P_*VxXhPf{koH$m%J+pe6*;kqgVVBn-g;2+sGvI zP#poTw@<&P3s`{OQtV@feCmw zqjPcwRp^=Jyid1ZmveBaRG7--o3u^u>()De=p7h{0cZ7(oK=1# zcpbvzuACr0bmKzDYF%;a>s^)Gr{-O6t8_03BF`VrEL2nt#971Wgkec3F*~Q8+S(0q zY#RE3?|dm*zX$B5K{hQ(LHLN{$_}CO?oGlqL0eA+_$jpSCELZt{SHu>BKY>XIW*9Dzjoqa-wO-ulzSSg}jV@pINbZ!Pvi&0OR zaY)NS3XcoX)t>Zh!@df;`C48$r|~5!Y@srrS<9C}Y_wce3KN-nnaBI|1OOiLE~tA> z`k2^0f*?dwQX%sTLc*jxYDi1}@iCA>-(rhO;jxxJ!5;+Aa=Lru zYr@dw(Jo99xAn@OUAMiJ|9EBoAL>$OGC6KqSRc_(h0q6C(W(VvlmZt{U$1 zZiRV<@yC8skiAw^XJMJ7?l3jl;kY`SdQx!`cOq@fUg_{ieD#7(erz-~_Kji;fbaM2 zuIU3Nw#Lrdg2OheS$`ZrA#j3hG4+S{KU+nT%p&QFV_+(4;#8LkKmc0j6eWux$y~&y zJ;)b)#i-VEeGzZGS;wK1F`U*)8S73OlX;%oM;$NQmks{pb63|(?4Fqp;cSJH|M!yq zijdIs1eTv^UCcy3b0Z#4Fk}#wEv34Cd$sG3x9S!x=h&o;l|;C;!CB>E3d`^4^etIlYFTyYHdU;V*~dq3lwl)3dKWTsECP!52PgVdcEg z_U+^2cey@?pX||Kv)){1Cr5c7io_V@akfEcE^5|?8sGb+!$L{b5MiGCGhb9k(Bb{9 z*5~slm+Btei9UDd;#Zhy-F92DXC)yMvKROH{_Xp4E!JTN*CdX|-s+F=Zgst*kA zEcc_P#+V`TD@{u0I>VC>AF$AEQB0qBA3cy^rxqMr*atWBFfcpg9b3z3Q)OK0Qq4(3 zU42HwxM?$7r86=Vto3xNr%0nDB;@G+{s(4x{;8><+1>Y3>*2D*8th%k{o7}L?tQno z^R45?Rh`cbEe=r*s3ne_Oe^Guh4dZN)+}MBk^QEKTe`8E*)>9{ytfjqgVih|)_)3G z_AlZGW#eA%vJf$d9yvW!8)Tw-x5PMKb=vUKcg^K$f%igFjN$sRpHYMFNtJE?sLyOG zcvf((ef(6xgEB1#lefhVa`m$@!H$EyCgIah(8XkAsi~=a@mIfm;xI{++)2;WC)tlD z7Oca=ut&jyt@jk-uCMJo(cb0Fy>BIs%wHpz98gJ7MTj#7!!_y#|x7JmvBc;EtWPM5luV?Kp0&3&(WmNr zBam`R)*80k^l|0{hZemvjHcc1)7E0n$LOu4lXIDsi_ZL}H%EJviK$*%;Z>Q}F;!2e z?APTG!DBV*-hyF_b2T-0{&a8R6u%#wKpv^Eo+oY<1jdXvyyDHj_36x*$Oo&TO|*Ls zxP1t0PhP{#ULLDfgupH>kpX7yP7!wMFad06sgay3dSR4diBl@8RNE?FBQ$Q_rU9 z>6IQ4*XKI4Z{L&!|8}}TI#*}uecaFOz7-h$^g$4VW-`k#=$IA)WUuYYF0jBrZHfPkBHptyw3XyNB>E5 zIJIONG-^tvGDPH>i3zCEB-|@E+Xp{b6wh|haPZ5@MBPh$CpE-+1FJcda%NNK7*a7~SuuS13fa)#lXXvH9mnjPR+(iMw>}kx@7@Pl9sH#lJaSY^ z_lGMt)69q4k&88{hqz<3e0;-bHH@S14OX3>3ny*SEbj=&`HfR9ISe7uNS{-03}!Uy z(Iq(0Q`e!mjO>K*5&yuzmPkb* zsvmgNudfF;w#|loF|WZ26yOnWi)J&~yH%Dt?GC)e7{ z0Ca)m;Ea^IoNfUW*$}m5p>^iP=dJT%fl^vB*=a^;tzbjHa(7({e;v4tR-cnCN>F>; zAL=uM=#5OXC}FD9n)ZE<5Qwbr%nII~9}>$}&C8~iRSwZoyU%^|ji|xbB}=MJVe3&> zH|xH83!~}9C8k57lGe|El#ehYpL__&PEazTIWzR=92lA%}oz;X!kPumQ zUonZ#$#J6~?87tcGVI^62FCnfGgCb2Hkzi>jq~E!7moL~4>Qx#7Zx{SlS3QU6Hbo{ zU?#Tr05j(z1B11W+p86W`Z3^SB4sX>Tw?BK+sbf+!j8M_x z52rW7@2(cO~5?bE-{ew!MjBzm`WPP8X>S8F=>*3*5!o)0k z%z1J;0rvhcCTpc59TT81sqM+PA|2~&dP@xKZ*~h*^65I2NaunF#YtAjTU|N}KRyNN z)wp^zY9n7rBK`d@$hJn%8g9=MZJEO%zF|@l7xjEYtXpvpdVEj4pn1TzuylXe)gJ;zv72HgDYRvYP`l91MHU9t zw^lN!H55MW1`Vww#zixLB1U4k%!&no3dANhn$z}u_;*OCjRdDX6!b?cdVYQ`?XoY@ z06OY{sAUG_s^D+U%@*D*RwL!Di9XAIBa=(c*5e=JutvxX_=l`>B5hJ^ajF_?E?#*! zPjXZ338XNF%H|AI`wHY(4CF@VCsms^WLpj)?PuF>=gnZ8-%oc%chSIAQM z=L@G~*#WWhBEJL`DIWg%WQS2L_w&RQV9=)rYodReG4ZGv4E)W+e3zJPInn9DJ~t5N z+3y0VlFt9R&#qsubdjHhA90}Ynz_#Fb5gTBUaP&8XPn#-ML;Vve^-&1O)m@vG+yw! zthUW){Y!-%ls{8Yzl$`7?C^)yJsOOvxp#_+?34y;)9_z=P zf&PeIu<-x;|9~gZ>9B~XWB&BNU;m#J$Ny+@ZNBPq)p%ch%64s5!H#S>*nO_n%~{8g z{@=V{3+13^Hz%+n1jK|)Sy@>FY~<=RovSvR`l;)-Zu3(?Y0|xP6v>bOo_TS{mFii) z{P6H_0s@k|Sy^TSwYN!$>CL!&B2QttaCeRRkH0vu>$s%*V*0t0O-6d!d{<%Neb7?CnN6VPBOXr|M|J!>um1-29gPlHj6#89DktxkpOkA>39Cj&Y9 zii|2!VIb$>^;xZfP#Gz;JRRCgcw~h_Yr^Fxl9J)x>tBKt)(mnqw~R5-ULZg%CgXGM zcK3m}=RU<;Hd@)}i1otzybg5AyUQais2J85LV5+BTKt{|Dmhy67_{x_kEc~EUCDw> zSquzF(AP*0CmMQLW1vmvBrO68iqtMY0KFDF24LvkWRLsbyYxrta{SdQIxeZcGiiBe zx$z4RtD(p~a2U)V+Z@?m@LrjQ7EyMA-N{l)MzsTc`^y&{dV70m!Cj~E>y=j6_{dMT zXaQ(D;DDCYT^~Zf(_UnD65NQ=$Bct&abiL6GdsM1Fj1~9QLyHaIrWCTfa+2iYVKu!;?`PKi&C+DjV8g@I$Dn(#j zO@*0Nk_w$_=e(1#il;BIS*|f++#l<^TrV5CGf`2A++@>Y1_B#7UT!xnaoct75qKtM zFzeQcvlk<`PmcCCr9oXqb5}seF9*UFit6ZCS=FqovQkQ{2GyL`hFIcEIB2P-V}))K z5#@=f*VG-p=avGyGiLod9lYi8;J5GJg#5T(eJdL0R?|r83rXIXBwD!IIca3IQ3_{8 z26xFvWI-!BlS%1=91ne(&uQKl)t)Q250Q}Q+>XnWlOLXqS(lYrk7aN-d{)1p8yV@+ z)%Zn zmq6Zp7aC)aZj%NnYWnl0x9*hZik?0VpcR~}^nJ!QZUWu4^I7$ui6xpLWV|1BMVeu@dOqr8he1-; z5@)MNNr{%9X=K5hTHVrC>h(??$a5DJXY8!N&9m3y`E!=D!?7BubI)$2U-|JAF=;x4 zG@AL<^v?cwHx+J;C`dFSgzrhQ_pn~nMa>*hrU~BP{5gz+Tk4qs8a-a`ql%M|(P9uh zMrQYC%cKZ-8E!;0A$=yiGY9{aq;Qns9)mjFL}xqKMFX}`(X219WsFl$$XT+0Vw29r ziOYHEw{rd7?%H?DnYioah4QF`?_rMcz_p^`g6H&Xltcl@1gXr7>*v zw4c6ioAnw&{w%cf4X@NLzq%R1$PCDdQm)2>p$Y>(G6CBslx(`$QT_o$eG|RC%xAS) zQnq}A5|3VH2(RBPYyB8-#b_nIU#Z+$H|uF}hU0v<2nmjRSGmesUBrOO;i>3L2T^Kn!D4I%+%+5aoje^Cte$kXv#{rgFc4i+vJ2Rs@+8F zJ-yHyX@T_1wCaM~zA&WBB=WoH!JrDQ2?xu*`un2-Tfo2o)AAK>66Z%d?qJt*212$o4q9VXQaPged z_X!BHq~MYt|5kiQQ{AZeP!;)VFfT&(|$hlWZKw(v}1R3+p}MJCKNK-k-bRsGrr7ev(pq=o|8J z`Gm(?`Lgt#_ZOs0rRQt+@a{goNJK=cc47H7uJ}b#uJxVLJHMarzx#ZT@y@+Fx?$sK zwA*@wQlhd_caFNe8Ux3YIwJgOZ`7wa?E1I2TRSJm>5ff|SBBDF#lyoxH29t&+|I~M zvDYw(OiX<4{aw5{7DxM!`}^d?V!Q?0GeSM)(IbJxSfZ+%Ols}hyn>0bwwj@(Sf6~3 zgj4~?V+67(3S6gJVE|ihZQ$<9$7zNt(i=M)(H+neK=whUqJ7WxE#;9bmKya!hedFM zv*Fg(q=~miAYW9!=(m=UdE1^Cxn|k&uNL5e7@ybqz_4n^8Y3lk(_LOu1_glHo+FKfquFcC-mgY^Y-fvA`G`RmE3o0 z)PbQhIZ=BeRhX+$Cg;4|qRaF*vTV}aWhF3wYRZ1sGJ}jaf=J^g+tbk_IRWBEJ%wS9 z9dLz>0_IP4AE!tuTZMt}a*BYRlJm+aEdb_`+YbG?j0_AGubB1qDTj)=a|B-w`%L-{ zN$OgUd>Ux3)85$*yb%kc6=XV!hL3LeLgm>L zSa7K!c!YpPNJ#G&*Eh|R!1sZzk(qJ`30zWXIm=)me_G-|zU;moo0gtDLHzgnXw4D9 z4*s%(PPJvQt3&IrXMan5aIYp|r@r-|rK0-Z?^Tdp{x2iK?|I@K7|2&0=}`OgW9r2E+)KVbr3}j6+}t{R zP*J!P-~8vFCKtuinQWuC_?C>(M65`|w1m>XzmjQz?BTq}qfvLTc_oNkx5_fk^ZxSr z%ERR9G^=W70+o`_5X~l6cd%#yQCZ>Q5)y6nDW1%L2S%PfkEMmR2*i8Di1iZdC&^HR z@M+>yAuBthQq{O?B+RkPHa5O%jq5d;0SEZaE@2BWwKcO}pAk{`2<0QD{= zoCPCJ0Cd3cm;W0i6>F!#h=<2GHO2^Sdv#0_+AUUHJ{JTM{qgZk?(%r4?01Mu+1KvG zIV3_P*euWiLmC6!NlTWp8PdImrk{ca{kb`ZnoMx$cw9#QrumhM{UnSkG zLqGT)O35aC{BRs80F{&w>3$sSJ&%&zt5U!Rdadp-O}jjw-FaCf?%@J=kP}8H0fasT zljUB(!jcjdeZ{O(AqCV2jhUGlqPeHurJ3ACDyhl|ST6AhOVt z-U%4Pqzk|yiU5%_${(AMc4OTDqWj8q>##Q2J0XcK99YNL!MDku7W=;x@K_dmf5mdM zYO%mW{kgFDH-!wYhhIck{&qdA&|Km*;ozWUV9+eHnV>t|Tf-DVtqZ-G>2gEt_S5gV zV{NU$ds`{Z^l99K7l9a22gZAvd$jv;L_~z)Y$9^wR{~0SP@Wq`7x6C z9zL-c2!w!u&>4eG8m2!X{At6RT!VH0Grso4qaD^S;mb4$a@suz;NLse?t z9|5Vy@nO!O-546Nh}AANSH(p5CD^PoLK0fk<9EbyVfi9{2R(IO9z(Sz<;z3G^oK&@ z(AhFzQ4gZLvJx~L>+`jD+N=X@;@^P#f?DVJTpPZFHm07(#6AsJFIv6=&j?j zYwf-utTY7hla6vFplB9_B1h8Y|z zm(fm%VEOPubQB8kgre=uT?BMv#rR8uHny&oPVAhjp#K7ySxgN4mvG3}>-*r&okuW$ zL<OL7tw$?wp zJ~`i=_pn{FSb(I0kuoJ0ljCRMyFgZvt>t7cZE2YcLA=dWACyRF%pZSNOXV^jZLy!I z_{|g4pqi&s*QSz-csJmDey-GdsORWtwR)}iyn1?nEXg%}Mq-jV--a^_-Kl=dBjt(^ zOt7>JSfy0nv8@jobh$4KiBk^nZnShX@d>r>ZqL`B|*8BaTY^Q+@Ws+CsAM#MA-0me}7MBI-!O1`N z_^|1-O4dj0j-8)8<@mAn&t4uCA5fyaaLg0`KT(w=9V#K^u!rr4fJ0u4xtqMSA6SBpQbf;mBwJvTwAF+e&6>35EQ3JaCc=*ED%?l zw`-+3JT5~2!=ApOz7Sj2?=4o`1R)`Lj+<2pzMVq;TDOQ+37QLTfaP0rRD{r1= zcXM((vO|-u>dX7%gB64g%&MiEtGfN#Xr95?r;JtawZIcuTrSHusLz?L64gSBleN9M zT~hK;Sw1UfmOrSpsZ*6+4^LVWnGL8HWArpvX9y+AeDGOLcKiERw@gUMZIXWHSdDNg zWj%k~>rxJTX-0>C8AV}?BTWutDVY9?@n3dP>b#g{kg7>k-}yFR&ePhPd)LDOg{$o| zwC>Pf(fRf!ZV59}iyhWK=e|Pg$bzn?3R3Je`{N7@1{$QlK3I7iuT45VZ3G7KvlD!+ zVS?Jis!8`4GkpgM%dAI?De7SzML3mO48Z%`vm@n#9pJVDLsgztLx8EP+k7__Mysom zr8Crln1lOwgjwVM#F6DdO`LeMxU7mw6f+-pE20)Ey*5y9w%0v0)tFd#sxwk-Qoevo zs$KUg?sdDSJU+RiwuS$&lXzG4+wBW0#P8W*l_(z6Qb;VnTQpr(6I)1jWaFZK zO-AAA+`5y+QyS_T#w@z}wm-S1KCxKnu+GY7ds^;E5gF{wE(&gYdz`jpk|Jpn`wiv+jJdAO`vwPXOhY%xDK-- z^W8iS4OLsAO#!0C2#D#Sy?y6p7o}PWCo>;ik1PPIEMac*E!M@j=}Oxlcg@guuXQka z;RfI0?Fk;D4&9Cb&2+3C>r-T!O1_RJR1+*eexS)#BU9|kxLsBS7KTf6_BVgkQ+nOQ zw8f$Up6M!C_ihXP=G-FrQ&&|C|Mq_@UN>u8E4lA#B7fI0%M3jMUNSUbM$TE>GQxQN z6Dpbmwb-9W516U_B{Z)z%?Y*4h+o<(vGSCY_1l^(XOcZ?J>ph^*!0N^YOW)!kbe zqxX?J{(2!~n5kdls~|2D=k`^w{%&cx_a^x5!zJg{VFuWl5YW%?A0^dm#j3_P6dAOk1*X za;id_F=RrC(0wb=D0;O&LegkaTIS&KXBj@@Qj&*`ZeS`i*R>$9e{*AV$D#OULv$|m zg7y<$doUv%(qgUur~a{}ZRPQ*d%b4=@y%Udoga%@PVK)BmD1 zDa8Ma*8D#&|D3Y_UCzVIlJS^oy1`e8%{CMpKQpPYca7)Xu?xbg;34JJ(?_seO%~=J zT8+_iaP%6))%*AcA5L8gGTN}SW4G;=#Y5RzRox8n0T5JRxVqq*+C4VO5VCMP;gfr? zLDzEO-}>il{vQ0;L-gq7!d@STQmGav!?L=@$Ge}>CL$GO-w@D_j{fO9CKnwZt5hLa zv=zWWgBm6|5TF2;1wW{!=0Qn?L;;A>l14fVvJTy-e~QS{UUj3TKDloXdrkvzbJtmx+Bbsx^Ymcy!@T96MZM@_ zTdM_I-AixoQ5ZNcf&?W3fH7TL2)Yt5t<$j6k(m4wcAL)n@C(EUNVv79w4TxwzJ`fxbxi7=1Jt4qq&iw# zo>I%NX9Hu5PIxeZNuzccrTFKXOqx4tGU|Fkd)V-fEl#HOC|1a;DxtImA6NcRaHpii zY-FHAZS}Z#mJ)_gLK9eQ^Gt_p;y_b>udBM)dW>)3&{QA$^3^b9vrOj5raz}o=L)Or zeD;^*T|37z#|5Q*NE73Ao%Br7NgCQb=YPvq=m-v`hTTp7hWH6j1EPT?-im#V~no&xapVkU}In zIQsc1T%Y>VYNLIq24^5~h@B`mKUbqj2}Tg<-vkFo0J4DEL^J7F2U%bSG5WHfE)5Se z{8=0DtC&+Q4BtovP3#a%gE5R&S#jnFuv%>$H`PG)H=7w68d_pDrWIdqN(E7t1SAA^ zZ!g@o=UFI(ExR>0jzhj8LEXuGFg&9pKE9j%VQ%aV?5k0P&5BZ@&tK(E6pqWWmOy?S zcc`t={7wrs!ib~-&)qGIjK{VC**Wy`{2_V}yS`%RmjG@TY`ly+OZ^}fW0W6=NIDl9HR9=rz zHL;MzPYTW#`5FiYB^TjsqMVWJEgjs{h>QsXgv|qFLn_w_lzd2~%Xzbb#nf3*x`>>u|G$IaCKdg#@7v zPpS+5TU%w6tCU5v?Q5gfe?<`F2YdZReMo3tCt_RaS>HcD|E65=4dccQ3)XzG#}cPc~WdF z&p@d?jy#G~6mC_Wj3>rj`TCv-+G(P`+n#6EYfL~%OuvTf zG2#C@IW4kZuqUS+QY1%_`G5+~s^zG$V3deQyCXL2yVXUAYbD}u2sXc4*hm>hO%u~y zOvQ{%nWoe!KgtD`-jnPR`sXK?jN( zxaVDZnebke?4m30lc+ zW%UUx$i944Z3xHlig}sCMB;jE^7|42#q}xU98{(isRiX=|7mWggX%^A#sGeE6UA12 zRYw=oeqxvs7y<0+Pzxz}t2RQ0G5A6>^v79`Oovd=-5Pwc-MGc3aZcTYWLOA-r`_BY zzypx;<)TBEkO{U<(gN?!Zg(nO$zIfIxns=B^LqBTEBJcP6oV85)56AY6lKn>p)c#~ z>~JmD8nB*MSHIi%4)q~MkE@xB4dk6PAZlfA9^|!k%22J_8+8c1{g>QThlP}+{y`@) zSHIpQ&2oqxfhL~*a*5(0kvo_Bke!UZOh^pnQaWm9X^!mkV`v{6&Yq{e-~B*<-}_eu zvmWy2cCv1bPWhkatYdSwDY1?{vNNHPndTEz34Df#0 zUj|D?hbIBYFcESVW*n_FVh%SL*Y81*&i>O?Q=g5JgHJ#6Ji}iN2{%kpEexN@{aJs z>}b~ViNp7l469dLOCn-MdAlV5DoGo6CYo8h*CgiY)iQe29lmSxxN65}#usbJv?PoQ09hg0Jj?_@mHZj5)dv?s$! zdtt0PbicfIY1jpZNp;oTgf=QlaTNRpAS7>?O1#%9*(;;|p{1*Ls_ z(eu>mL={U8KNLC30Ur*hr|@V*!o0H4X8n&(=wD!BxLeirz0IJ6I4;R+IKMZ>MxOYJCl5K0pjG$0^55Fwh~nl=I(*?#S*=pb z1zXCz#DOv*NUL+wSXBV6rzgkk=}f`?R-wZPT0FK#_$e=&PCsEAoLJL;;pQK1;^(tGaFd(aJ2SG#2G8XY@+%bcCi!qqNP zqOF#^8Mk>zIUDQVqpT=swEs%1S(N&I(7##$&u=Z)3Caz`cG*|HxMLbfr$ODh!WC-# zy@>uCwN~i)$Pv}gm!9TKvpWr|YzY~TxU7(SEai>KmzD|EH+uIVA2Y!$=L9+8FZzt= zk;PR3){?2AD3dA+i%&n8f(44CXejbfTyCXQ*0opNtX_lg)3N7_n zg38VkwW;6tVp}nrc)GH&pi}xebr{CrEg7G!jCH5K`??mR%|IM;Ku<##FC(Xjk)P9k z9vDxzsox3_o6LT=OvY~bdbvEoRod*C73DMi*J@pO6awGKD77n0J1eiJ#2e+$UyueX zA!p~w?2_`uAj%U-=habzAw3V@*`{^;z*azT$g@9`TTRdv)Sgs*ohY%xyS62Bc!QWh z>6^ij{{&s^qT1ZL`$U}=T}w$Ol_6yQk|T)H7^9gIuosuf`Mu==Yq)+=*{T9|l5uI{ zRXs5e^Pn>xx69IO;j$>`gH3t~2fRNrdkMnTCXM6tC^I@VSIyBv{4Kr^-Krfa!uk>+ zBn%)nE6eT0`N^78-SS#dvc;G9Qfvc9{dZ4`q#G^9kZ~2^-DY==EzjD~>9%JAR~`!r zh=15`2YgL|*TqAXAfK{v*DKv{+RzEfNYg;*2CK2;P4BM!v~eKg&bxeUHyVmSuMBH> zbj=$6vLU2_X-;(2P_c2P&dFE&iE2-UD$DWFdS=wS0HR`M)Em8!`sYnDF-zM=hbKWr z2(;6Z#)!~N!0x@WOx1kh(9sak)5wCaeBM?g`Hq z*ijIJVPaMgMtB?{E;g75LsLOUnh&bg{xVdSz|R`&VA#{PFWo%BTUB|S;vl4wnV%aMPiIb@q(99PDH{p3y#2TVBp=h(PB~)vqHi zmetQ})Nn6>oNeve0TGK*p9<9y?dhtiZ@eqdgXSH2Wpa96We?}I)}l?d^yHGjXg#6I zoMaV`T^_8%PRF}Bx&WRf9=dm0q)d;oo}0J=2%n{Ms1j-3%@iJkk4D-qKu^irXs93h zWJR+~-x^pVrt#R*tq58zV;NyyqcTDv9EKXd3?Z)6=+E29$jWk9U9t4swEfe;`1*vR zv=+=iQH=sdHiOAr0EtrzcrvW8UwC(!jkN%eg4rN772%X`iXI6_B-%Usp$FSxdlq{) zGDz2Y_xQ1uPAOSS!Ch90rS%rsFg#lUi2K zkP3&!tnvaTNge;z$BA^|ZFwIiKUxpWzCShM(RbQ>I6~vf)!Hg;?Pr%j&DxpJt&_;j zsJ=!VN9@A-=X&`BG2L}6%_JnpB^7EfA++tkq&p4f)A6GZ>2VVFs%p5)0CYWU|M&bT=Zja->A+)EzYoYl6G z+S9H=9pjI#73Qm=5XONU!B;Jw7_o5>8>m}X#4pR5$elX3-$HF(87diaIvqxd(9`zF z?ys=L3^<q^(t@(j*lFOeJissE67*dzV_Y?e!=#W=_Po9Wy`A{>8dEr zabIwBs>|1|*PCs37JL)SPcN|D^jOc7>8!~KF&wO1aoIIHTJEVoxAr4zoubs7jsij- z&PX%WY#j!VIJM`2L6T5j9O{lY_m(_YJLEn1{o9a@X+~QL+&x$94|4+It}?UgEe;mU z71nrF?^0mv>guvnQs}iK+oRWCUq&H;2hv37;x>x1)pT9IPRoqi)XrKlPb?W+>9?<2 z^j`8;+dXRzjQ+mpq$mqkBXuJSDule&*5gkZdPcG8*YK4Jq*H>^uiWmiXDFoXW4~mt z!#!SRCZPW@iU#CLzwrXH31P&dRZ=KNhM=t8TP^c9L_-2gqy_I4W`cX+wAAE?bec>l z(9{`? zw5U`n5`Bz9f-8c?ziYmX`r~=68vl3M%`Yx$?^HO0AP2d`uVbU>TpD*ecutx>dbUuG z$vtIZP#+4DBFhwFzNK0R{(ujY&!A7rFw*t_H4?E6WwWw_*eDjtS^XW>4rv8$d;+%x zV_jXyONrE0;aupT4c z!$TM2+y|hZy9=2M4mB942xYJS(9xmaX49VEZqr}x#0qKTW@#B*vor7nVDO?`hjeH= zFisYzO-ini&;Spkttk zAa>AAEWi{OlR9dzm+V?vTa^dOE`d86!ie}q=jc$zul{i`BD!~dYJlyTB}L8Y*^SLj zdyS0g$)i6v>X{g=mqGdCdgB>E^Y7Sd?oEX3t6|k`M~r%Ibtpj$wL@iHpeX27>Dp^f zPY%(gRAS7kp;w4m9CO$p5wWJi|@5Aa%nJU*I07 zSfa)BhnZU0>W}V%e@7AX;N*_**HdaXd=eTccq3rcQx^P^VLr^XSf7MO2)e!7y!L5F zYg?z%weC(Vp{c1$uq2WpRI_w6v1+%G;u3si*SdZ8cD@v7H)?xX%OY5uG@MI8SQR?z z&?RU*@$gpPwL0UDcy`D65yWwSnC(D&jiS4e&2XO?oQ!0w>8}%%tl;J3tm&2`VgVtw zY5Mivn>*_I+5;nGKi6CZR0s39rB}2{i+u*0*(kO3-d4|dB#>$)@%fy11{n?afOc#A z{#G67Yfm+|0x@L00cKO57x9S5wt2UeagdrKXnWE7xov1y|vCBP(9S&0FyA@lYC21>68c+7N`u?m5{tPU(-#xAY0G#LnwC*-$Ngy zXu3k30iGNE#6bFSzPT)XTC@G`Hg2|4L>cv)H@_&a-Ak8wTuBBq;79BeK7R<=$>%p* z)0djM8+P6gPK2e+7=k>L4^YG??g`i4?Kh4YsagS>L}>~ud>Jz3a&bNCk0;HGUDot& zKQs+XC;m)t`C6L|2K`b|i!+~F?kS&LW?b)GU-iQm3d(y%3b2loi z$4iD(d_5X}rOO)j&3!_O>d|ZUXA?DRC1ndckXB^(^{K>dR!<8J`TGaPK2twG_%1!V z3Q!=B?Am`rDv138DOi$6l4kSfpuSIZR&R#Z-%|gE|2cf!NaYAxA=b{0oB3d}s&OE^ z6%4*ptsQDH$tTAqDLx7a=GGDPY7ikIEiHP}zo|04Ke|isG!gR8J5@wyAA=wObT+Ob zOTjb6IFpn`)ZthAjwjBBz@bV6INm@N3`>5(CScym#6?$ca{qKG|qqL)!P_EQ}Tv zFL;qsT&MC5z>&4LkGNeA0Jjd(Yd~h&>{ENm z3662EIr3iWG8oaw$h1(&QX-h7ypv^?1^Ugq3EVaau$F0^xN`G`YyBVX&KVQEBGo1K zQtnAAe8Jygako0hbNuw9ODQf>{<%c9PWRS#&o$J)FDGW>_*-!i_T2eX_MBP2Bl@q{ z`v3RKf}hz=T~(U+f8Vm@Jmdd((YEJU?p6g%xo}(j`IKkwoB}vAmdnC(k)%qGfgktp z!NlOK{8i1LY51S1Apd)m|H~Z%oJXc><3i&~ErW{Cb9@^ak^F}0_+H4z1a5T_;J8kG zJF}N|OOEc-ALRFpjzkQnqjH#6H6YHxR@W%}C-3*gc;JB#=C)U&1o zNbK(BA^Yr+FZPuwO_Jw_zkj#1_NnkDNcaDxsGoGR$||a#82!`QaIn>AX2z$HyRxmp_UI9{epopV;C&3}>1_rDgvMqEz`342N{DGlU90?R2m>!3$$b^YNCp<+B*QFyG&UKoyRQt95$ZlW``P1(A| z2<%XjKASrM$2iqP1f3+D*35u8rkhP?s2@*aFkB3%|Ilh!uCcL^hL>0R?M;Te-T}Py z_Mjlq#E6J6f|7u@=z@cPK5#?RmQyjF`ezX~+z5a|+I(ZMT7csiv&5cBQL7|k(-Teh zIN=3u%p9W{msyi^N9h88W@eU!*nv7MA`q9P?YlfFTIGNNcA8aNA&@aGSavL?VxyXiZJccoHL6y?38)Fw9s!p>iw%WF)Ou&gnQcSzy6)_7>u6O~S1}?i z_TIGjZxL{TBKyRL4wDhDlRnm;n1$RWgP-VnS4LdCvf~6bsMY95GH~A-}jg5`j zNXC1ei79uWXM=ArF4JQN5g0A>&~A>*OwiEMHrb~WoC7ZUJU+&ZpZHji+$9eK7DHMP_CV( zFg8q}$K0s$-D;#t9zbI{(49N|l_W44LFBP7lusCr z>{=mKY(ON686p}II(Dog`|0!OBwkqGxc#@Xl5$>5PdQMia#y!|f!f&<_GB9@wP8zw zxe&}e=j?*qP_a!Y#{C)ESF5r?z4v_5N@Gz?SgdQVZ1GTVj?Y&Xj)m% zj{#B(hCov#E52dNQ3mA~X37L@g+O)ZN_Tz}vn1=`I?P zUoJIG_r5r$_IS5@*{3UkTT$p}Eoi8I=};|Uz$#51w5wEQHNP)ikWx~LfD-(v_vti@ z8-{j`4k>=dL@kyZVACT zx#M-P-7)BqDsP=qu)>ogPd?F*qlhb{2^S z;IzVBW;jt-i*(%}fC;9j&PFA*kfkBD|8vvcVsCY}a?vLtlw6o@gOt1N+Z#f8(szmT z7HKG4-L%JB2!h+1q6#Uz)Q7t(k(CZ}7)!7A7apSCdzih&HmG}taRzNX)>N@}a+r3= zGA4f~b=%L}R;sWvnnC-!KP?v+>_r=_;qsS{-R5Dcw__*G zYUB64`mF@oLTc{ggS{6n0BS+Y$)fu92E$z-x@Xl2^aKfwO>M)p4@8{1Kg7tlq$wox zFn~O=XX7B`AFO|V8oy~mxWPX^f7D@5Fe4^aMzJgGg`_grLNxl@0j(badQNee17M5U z>sW&n2Dgm>;&kt0_gNROPN=b!z+2G)z=5QijoBsE^ZJ4cO^t6`F`1uWanYrhPq}MF zC8iguEG}O0`{w2YN^?%0fospU5L+VOV6w6JG>?Sanx;!|uV(*QfzOsyj{!C=b|e<= zVnRY78z4l^6bZLrv>$*0xBw(u1Jxt^p1*3FVZ_A zp-b;w1Vu&Z5NZ%zg=^F?4EP9fn1|7lOv6zwM31IYVd-O*0cXddoFGU1lQebV39WV9byd%E{ z2VreHcUsuuGh7>a@h3c5AL^m?0iiM{{Tbp=oTdMa?enD`8VlDrApFSKQnIQ(;8NAm z(b>h9gGYR`>rSjxXPnf@e@Jk`gMc+j=YU|bL%U?Xq&1K8LWx!=9OrWh9v zquZVOw33PN>N9pcRc0l#h9NcEcle6vheoP;<0r*WMlqG%HhfaZKzKL>4*9X z^x6T;KFDos;piX(uD+`3Y@Efw0Kk=?AunqLSw0|4x~Z=W;S_(bMh&;dD)RN4)x;4b zF#=bwc4)dumo<~Dr=+U;JITjgeN|IU+U)8W1Te-?1~gs39JDx$dMZ_V>GI{I7_^lz zh5GyF&x?7SS=Ui)i(zwLnj~8Ph14)z-}+>|BzrX!b5bBr6~_66yWOU#S)i#b6+Ny^zM+8%I8ZLxhOp1bC!Ucf=acc}H)2Ya@@9twRq zS*O`bp1YveKko=i2jGzGFHRp>?E%g7X)1QmSjh|4C}m_m*SxeT z@0g2ad3mvNO^X1jl`m8zwVC zJCEaMVpDr#3pKO2hfgy3qUdAag}n;fJ!od*p;_4WZKsh`%bsb`oXx#qS?;jBapWbe zmh-5U+dOT5@^LlhAaJ0f!7W>P=@+wW5?IbnUk_zIR#sLg+rz{=pG6?S{1}8rR#Cy+InpxoGg0Wfkyui4Q12HYEvwhY*@RqK8>bgqS(toG7Ztw^D8h{rfxwN zzs7Tq42BGB1kAtZ>C4lt$M`mRuZ%p|UB?J#e`0Z*VfJQs2DUw6xx;4ZJwhv9C}6K; zPaw98(6YxS9k`a-EbjfasB!F-8h=aRcEfO{5v4V#nK7^V2I9KtGZmXHE_{$Wd*!hW>r%fA3pzj^{gQi|G4_nwHVBTH=4y}|}q`bDD*nSXT zru0=Zi(<{v*NEsV%NoqE393)dG<3}dk`*4aUzOAXXv zp{tHt>1g5S2lB%xIouT3>}6?@U{7&z?J;}?L{C;}d{*|_iliE9^PT-q2N;~4+;;Pr zF#mQN*WPqc_I5*V6ac!Y*dfy$5p6>~9Uwy`eRVK9^ynGT#dC!}`Huy-ncJnAM&w8uR z{6um$Cn_jSN0;AbClz05bbwKjkLvCGh5cJi;pF#1)${Kd5kO>EQ}ZpmK6Zc52Fyr= zy=kyyyJVl3>L7R?d2#Hcg6% z9H{ew>ADONS?XAAht+knXF9pea!-dq49G_OG!||`tAC7!3fzv}Uge@w-2c3!Pz>y; zK>Qi8=>7EVk&MTeBMI9Nh*CrLLVHw@;3NiUue=-`-~2Y#v##_U<{?h_{Bdm`P9|ir0q~07gvPyep%zt^Oy;ITo#Dnp#6<-;Tk0D)U>>pZ5 zz8^_`9T#u(bKWaozEG^K9PGrW>;j#3{#s)F(bBGTb==^K#XG}5$FDhaW6W-?)(Q~5 z=?g7=K3xE8+%1N_QO;y2zdfsj#oSR~wN~&SS2$W}4cS;?;0{LL(m8v@XtP?8>7FGz zCxSZcEp3RXth>R)MeE-e+WTxAmS;e)QPd%@#1wa0kC30H%^E7%OhyG{L`!QCrou4C zb{b-z$&N?b#!pyovq9gYSyx!uuFI0=& znt0~Wx5-e9crZKA5O5Z9W;o?DyY-NMJKE+V72GB-ux7`CXXB_GP8Svy#wg?Mu)EZG zz*56OD9jEMX+sw$8*Jb{%#hp3N6J9FpAy1b3M&k>97ledbZwH43No|!;DMsi{Jdo230T z*y)T>K2iH%PvLKvL3k0|hvvs7hvI_!eKF1&`OZDXzg=g9U2wIb4~yZ0#L#`@(a9er zI(s8unc*JbeM$k4{1!W*EcAw)`|PVpCv$P!R9G~SNXo<@UmBDjnEIT&UVAZfY3ndJ zna5I=^sGR`WXlW8i)d|fI-Q5Hnw$NpZk`rgri3XQ%~Y}bhqWc%0y{05m}pOMPNXFf zmB~I1tS?#}wK8?#Dne& z*@0*E)G5F6t^otZ-x`@>-NCnhhnD;08g3qmg*IOf!MW&7@0|Rx9%paeEP3%}lY4*Y z6>c1tEy{lJkE{fQc+z%G#Sr-kS+S z1%LCm{uX_Wq5iwRg+DkA`e-a=S$axa|A4#J^<}jj?xtlk*_}Uku4(G2u-8bBjgi>C zVTXE>J7NaN7&Fqd0R&0};CYX4)jmJLq%0MK^$)A-v6Y$97^+prmR9T3NQ(w9M_tM( zz@8MjT_U=k-Q;0oX!UbK`iNrD=vwr;ZDzTIm0Ef%yfHHK*6AQSta0ioKQze@=GZa) zW*N%AgSS8DO3!`d`Td@fm1tck^dL0nbc*QlnI{qAqgeCb*bjz40O$3z#0oTFY^+>3r0r!@t({z%zp^7kte{2;!p}p~lmWNdW zdIsNshcX}rs|?h)^h(AIOU>gKe9Il+<}}4ZPql7f4luXOK4bn&ZSY_bB;W&eX_e(LsCjeAEu`R)ua{bpS^bCnCAO~&-JRYMN)38T2Yh_lUSp@4 z8L)e#z|Go3qxbJk=3D`gO5+BpLq(;}DR&^>rclnnzl5>cu7RaqFryw4=6L;?+z;!l zIvXI`M0y5bfD5U!W@tcRG;s8LM?-1|MZYwK;F!GB@MW$u2_rn^Cm{Ti>{SNE$dI*< zD|5$YwRkQ%PS$0u+>r#-g{Z@2o1>#%_~ubHO0D;%pvIHvmhEjlk=_-N-o>Qr<5eyh z06J!%rktE0XjY%T)SoUP&VEwUD28+uxmKnHrdvDsrSfY6^)%?_nXvHgnUT1 zXG}t4^|ZEoFPc61EqZ)_nEHj@JBl)D@tz!we7@V0#Aj3dedNGrOg%koWl=tGZS<`a znx1&K?6FZGW69e9qzluw?o4K&5}SO=PNpAmW+|}6!XT+^VqknX3(Rd_uJJJQ0XtZl zerJ~YeF9>xsB-L;EegTsZNF=f`{t;0&!@mj&0(~(&cT26JayDLO3!zRI^KO)s`Q`P(;<3)9Bc@UG$XMB= z25La<27luknz8M^0xJ23TH8Nyf0nC%I77t~Oj51X zSJdu?N6ut;Qvn{B5$}f&JvhDZZ_jYNzQwUxExC5%Qk^oCyTvb0a^+S_l-9L`VCU>^ zR$V)8J=aIC$ZlmOX%Ir+BFxMV*?PEk*59+8%A(dTQ}R2Pl|$Ut@5)^6>Sdq-78@^= zF(1fMyTO+#^C5lXi;qHL53E1F%=D|y93+-i%3nvwN|h~cP*qSrh04T}YXLuq=!qFd z4iya-atgQ^S9KoUNJrln0|x0~SE#BQh+24b26Hd8Zr2xkUBf*Wi_eqenuW~Z$rX+k4_ z{sD@+vKK@Ev>KeS`8Mb$rr`yqkEeOA#H5v>? z-rZF*Wg%$BwI zJq7js#6+j5ESM$5cAk}ms6|w)65G(6Ox)#X&ocBG;uP18e#D(iJX+1n z5=Dur%_kGg+zYP5z)N90PbE4&NZOxxC-c!`TRVm+fber)>hW-5qzjH0w&2Q<_HpC1 zSs9$P`tGU_RQ0_g-o{q{(}}Hj)%Z}$4f=&pPZrs_MA?TAWAvixR^;~rtzt(KFEg@C zexE!ZF!jrtvk>i`vSs4AoYcf5!-RiwWgz20j_kvYPN=L$Wej>3E3cb7-C}KK1`Hnl zUt9`mU2uIc8}4Ff(4MA#ieL1R={@db56S%c@s*Z}0}QvMkP^pgk}ETwEL*9tc0rXi zK^xw{grOw}JuoTl6t(kiA)CP$Vr_eky6CkPc;~E1eJZE3*3|cU&(pBx($<9Ln>EJ5Ako zF|AKX_Ztxz&oMPziM=1zm3qJ2IeYbulNIEHBB}^<01=r3Bd#aq|M#t%Bb{8N^;J~W zdHj=6FVUb{y*9>aTBbJtV12Y-rws)tuR@$%0~Iolh6}Vs+XsVl=p9Hs7C3?3VmH>* zq-82LwQA?)!F*?<;egTZV#}}v@x-)L9qj(?dB>&sH_-)UHA)$iN-m(OSKV}UxFQ;J zITzqK8-nF(mw(=pNfN7_krc1jdmNnMD1EBs?>Y698riYXuRiKN^Bh@^`w~S9S$myR zstHYmlM6I`#%q5&5lhTB(!$Ffd~3@~WWsJQ<&+i;5@uA0E@kcG_Wdwh*Yv^tWt-TH zY%s-60gUt>>G0ST??E}`EUJyb0j4H`nu+l^Asmt)I7u5m5R#*>8eid#VmR4+Bkknv z)Z*N<@-vV>1%B@|7QnXBKbMSQ$0SB}hr461sr7qVs}0Tn?oQ@kT5~9~Ia-2R_0TCE z-37SjIKrMUG|*=?U6r%#bSNC;bPQ{#Wlu~l+D~Un13-f#$@~w^21LFvA=ATr zFFMGYjQhG?+w#t?6p3>FsU3RbYkL%38g;lnKo(33*^@v=Su;-6pxC&3-4g^(J*LO=L|ql6Cf$n|Qu>jvE~#c#vM%e}1+srNd2h0QF|Wqf zzAvKvm5t{!bZ?_AD)M&RB_oq44XRr@2zlU-Bk`OPyBkf^G`!_ zPB*^OV8_~SGLc8SXL&HUKcu9t_z6$TptUEZzch6kNwwBJ6B2`b`h}_2FdVgNb9^*Q(Y(7OJnb_~h2qJ~``bKQDTbo_5rdVpcLC)OqT5M4>?GKU$jB zTUYXxUTYegDs|T}#ZImB3l9O@7~n0EI33*bE?;TH!Vy!KMZFEa)a1l+tG?IvOf3Md zCW;qlM*&iKvWyQtwGCx;Pk6j4JoD1o8_ShmBCUNo-_M-0uyeq7o$BA;Nj7LxsHQo5 zvt#PJZsX(;EDQK3Dn0vG^y@O3d`isfV`>~`eyl4{GzVWZxR(#yj@IV=xYCyDUZ#m~ zCl1`mGC;V`EiwunumFu8w>Ridn$-ALQrRN~Lb5}IOwO0t@jFSxBk!@jv+aedo4+ir zc{%u_&%t#N-3C7lsk49LBwv5urZfEz%uOZRX}y-bFB^^Q@mV%UGFsY?7Ef0?7m~(H zRYiHt>PokKYPKfp-K_MO(J=>6tpkB?nWV;Ur$<-?^FDiS8j%i=?@5o|nA?l4#Qh*D ze-havHg9Q(MpurVs#y-iSg!j9?2hC5+%=k(-BAcHZ0cdG{6Q)p58ruKXd2-obHA?w zY85XR+J|K6@~x^8@`}QyXl;Z)Om=@!FxYkk5orLC>37{)H&W7m|C*58DfCTZCy**A zrWk6=@oFpb{xqa%)w$)~?3>3XOV)F90Px=Q7{3W19~q?;7ngc7))Om^y_s7#H~GPs z?uDIPwv27@R%Oi?ZpA*&u3t8DJ@@+%PmrRcTH0Ow{?^;J_3|YFv5GSA8Yzf+8?AJt zB%PV!YpL}a1i-l>o@_C3d3qSVxD+L94^b8zuod)!abf3Vq88tG%wWX=i4k_r9?MR5 z`CaQ}gxmBT4yi|phG?XnRtF0jWcC$9UkFVr+#De?=%p)j^Vl)!fkWNSc3VNlVMzA6 zz0h4_VhK5sEqA&J;~dH^x*O(6(p`nf;RAvOIh3Dk2@fp?tart?bGJ(tJwU$k{cG_z z1$#=uZ2PZI!mYlb>NuW!=!(lxnhI4|w*N4;r^!@0dX<$BMJnWa zc5TR}0H}ztt@ZGwPmI;}=?f3{7UtlsPC~}Un1|cJ`M5SMR+)4Z{sF1cRfcz5JtB(I zKwb<#WK-E@0ng>FoDqHqmWSpkfVpA3uX*BVldEi5So31mW!1pplyhDqa&4kky^g42 zz5vW}&n3>Fx|dY}Tiivu`NdI2f2Q+P6Z2H& zIEI=7yoR3*XV@)M*A!R0`H9s$A#3k8f7Cit){a`CTt;7`hUUO!XgRZgGF+4q@x^G?LwxOI@R z7iv=PnzdrCaIl=~NtEAHfq3U-$_HryJpJ<&kQEr$d`OTTY9nvi?Gx~KEJfkW0bD~h zX|gkk`0C>j%zPaNUXMaRtEY_o21k zp}aD<8r4J|Ra8`v8enGR8?Kvj|5b82Lzyk$XWFwBtw3jdU)t+@AG`#%;1K9HdHPh2 zngh0^B6wsTW)XU+KOHUFFiLFOdMU8}IXX2=0fBSd=)`UTa9ww#Dt$t;*{qoCcGR=n zMa5VJKA@=BH;>d;jJNAq&ujoefEvLZ(I2|KIgn%5HkSU= z^jhadtn<1TUi40FUxuQUj3418lHTd$^*JHvrA2dxs0T5u$D#Lqr;J5;(=GEDcaHB? z!yy+hirBK$9DVD|{+M(Ua>x~6B*>^g6kH&;v#95J(8q}IpKFecT)fxWOu!#7k`}ZT zxq@K)wa%jwjJ1Ky4u>mm*pFlEEIv;++eY_gN)NAZh2&?qkwdlw88?TXd(G`3a0h_X zjOt15HR`j^-3j z8b2Txz`5#_#4-`40(NI^C|pV;Wt+T;Y0K_TDKV@~2idh5G4nmiC6KAe$||o;E$~Wu z7W+J(2I_aj<-euAQI+^CSNMLdwJE8k_*w7kHaFnY%TqiSex=Pm1+An!r{rS0FR211 zuQh*dQATtWN()d~(7|VA*QbCBS(dxEV8x;zXlJUhuOpC2EUQNf1UG5-60Sk zaEXWvLEIc~dI0*krpw&&-$d>Mb#0fBKLZa*i;3~TwSR}#pfPC?W%b}oZtmh@_i#*I zmV~A+=eSXlmadq8mpWDs-SF%VuW3Un04la0VPtZT`_iftxgi&Lg#Xi*@aWo!rmP z&XAZ03hzkK01!$R`TkAxYN73D zbAX8T4}a0_Vfxs;ls@XG9AB+MkDtV_%5s1?4io^K)Ex-s*RFbuLCy-BRXw&tWi9xu zFZp4@jM9M^AOP^I9V*R5fqh!@WCaei1znefX_Ej~K)wCxr#zMT z9|`=*LR&4573s#{X2juh{C>d}l7eYDlS;iB{b}-(OU@M74WClc#Zh>Fc|wmE|5-;= zu~A@&^F&?|aJ8Yl$6$f0MP@D1aXsFD2LKBR=*cW++MR84>5H}^P0_J-hUm-i>BkhiQsQ;N3X0=e*j&w6Zu$CQSsPC zr_}fvqlo{zNGz>*VoV?G35~=*Uz7(E%TnP#aMJ(6I39mc)9*&jDAKh)>MAMe!?pRr zywP7(#J*>-l&iE_AM{pnp4$$y)vW)xLQfIE4-}W+2BhXMoL=|B(KVl4%3MPE-+gT6 zAhwWUBSi*gYEWK5YiklqTG{eN*VUx{csRn`J-Jln4TrmDJ!z zvIC<2utf;^pR&7`CSzp+1Wy&|v^G=OQ>RcOgyr|97OWlrc~nlRFr&GK#W{oC9Ub7| zY$+;0i{cuvj3j?d6Y1$thf&ryRa+%?@yjOa{c|eMDpTIzPn0ROdMce z*4{NP&y)tkB$s;CLRwba;a{IbUheaEr&K?-L~wu*?gXPKI_T?jm$(B##7Ho93^0)y z0VwGsrLBqkcZq5cr9^*7;xe{o;yF8edS&AQ9S#GO;k*b>T!NQ9 z>i_h2VYb7q&=Zc=z!`68J9!8UHxEc8WR# z`0G7SrlePX=j2k^Hs7>DvZk9g`mXS05nIiGCGHOJUrm&t6@v(+lb!SLD*s)Ruc-1o zM0ed~6t(*p#dSnaPk%@8Xg{J4CaT`(y~6#8Sv;XHO;nbh?qbhfmx-DbCh_9lIA~N) zQ6i5;Ys`>p&HViQl)`^jg4F^+;kbeC5mAfaj1b=$D9_z?vRjh*NhPzgIMGu6ctmgQ z>c3C%8DDiO3qc$bmRM=isRri>>fV3t}mQ)B7>^OHQ#1=q0_q>$<6sa%aUlXFffeIMEuOwz5g{r4w*V_12?Q8uCj zI*nkOz!ncWGQD8p*pEsq)an^cEx85)<_L{=AyC49@e0U#jL(aDU-RGBGK23vstXdl zz0|u?D{UwXPW!cgKa8sak0}!~-r^KxYyb6;^^T~0|8~WHD}+C;fTj^Zo1W0J%H6GX zM#qCNI+gGv5|`QT8i+7@C}hzppd8DRTn2XfwQ;Y-Z{N?drT@2uHbZmt->lB$NB(=8 zPU&7>oV)+;4}KNdkwf*e4iva>SO>ytCLBucts>^CGSG z!a2qKmdntmLYJqT>c^o6dw8NXZ&1iihY?mj1LFgY%6AngswL)+;m;7vV;2&Sr{;#W z74ExWs-E;dUe^QjVMh7Dn#;@*0)rT^*S#`(Qm|d|r6U>|SD=}$0*(oJ?m0iMCETG@ zb4y2WE_v?%u{LQ7%_=oVJfdZhTAnj_#jFP+mqB&UfelTo%C`loeOKtYwItI+OQ#m0 zI9Nq?kYSmc0exzDfU;)ywah0#%PucKk!Mc@mpd0Yj|rG8je{dM&mCno3M?Ne!V~!Y zgt}Aj=R%N~CY#vqJD|Ov62%s*qHr{Or#nlwKFTP<2?)l!rMlC_&C(^hb^Y%XBl;2`)>Zo?gC*U%P8|f5$qT$OGf+F6nSB_s7_q1L2N9qfXfgXVZiob~Mm1>0 z_99tjZC6K%Bp-hp#cZ*H-)t7?)9X!h=~5!vD#!vvObK{+cmRKglS#9G{Mtl|Iua(! zpY~cr71kV(Z$2(k(C#(ANG%QWdZUaYi>=@%K92A3JFSvu*FUxbqef8`-%AGnc}L78 z_G|0Qk`x}dQ4x|8plqEM6kTja;IEMni>qVADa6Uww?AAy5qIm2{lY zKiFI6vHA5e9urE|{BVPxk52x#9-l$E!z%0;R8O0oz&A`XNnws{Pj$la~T z_V&)<1QzD-pa}TriOMx5LxC(dUuFivr8rM6u zPH2(SxCW_sy+Z9C7;eZj{C~YxDX*K-0h^Hk zmSxQSG5eNLVsoKn>4MvjpVXArygHB`=K+ocCAX_PNji~5!Ta$|K}(0XKe#OlllF(T zQZ6%!s8Cvoj)``5n66}gXr^qCVGNt15U9A~L0!RPIum1qo_E6V8&?2d&Zrp(hH*Wy z1bd67`GI;;#eR5}zq7bkE`64n2Q4}9HLUH!Z>8hYTSDejwm3<=Zx~$5yj8DG% z97n=^y*S6=T4!Fd|< ziVx?j+atD+viT2AUSmOf{#SP*Pg=a7YCd+OD3}DBT_+6>hq_kgmW9Yitx7*p{;Sq; z*!054Qi(3rgZVdFC8D$UTS0ld9RLL zU;1q?95VT?4hhEAOVl3{ndqyNRv8t=vT2)*^7DPEcZ~ESAMdFH zW?H`u#gGgn_aF#ly6@;5N&(F??raQl>N#T-4!(}loor>3Q+=5>ht%!J1E^?FkTr%- zpf5vXJ{KE(?n-v}jSv6*^ zA)b7=E}k`V8l@=w@FC-p+TxA(2qqgD)1B3kWEpYiURh#`Aiohe9d;B1)}6oX|GgO+ zIwv23O^U=K?|>K#Yar3kP6Ui9iSaFc2bd0}B)iPM`(Z`EEQY=9=IpR({e+1D4w(&Y zkBSBAh$-D-2(MSu@$RJU{-3!5v550|H8z!g7)#!;Nf)g2!8rv9HYn8wv$i~OuP zh6}BC{idF^ABC>Wb0IvJK2V>*mzh-CZBF3t$oWE&;6&%aTiv4CiY^mJM+mQL0bHA= z8R%j`z+r%u8plhid_Lp2l~>cgHD>0fKKLc3I~4geQ#@QqFeqNwN}L5{0pKyB7a@hf_{Y zL&O&8a7I^#aSUYd*y75wkez_4gx?Hk9YWXDMGW~+_gsM>c|kE7FN??Uo;}|>EAlFS z0N7OeL`YjWNd_H&t(*0fruo3nx|w-z*0j{vgMPn{fz35E_QS`7l0l<>#6vehv$_Nz zH6F12JU|-`W8WsTi!5^S>Q}^Vxix0r5YQi(0utMdyUR?=2df@sF5_@FMK1!d8zewz zkuPDB$1?=oB3)ZxFz^F_`k53^ePnDIKp;sF6s&*50X+$TliXfdqzCDs$RqgRK>mCA zRw1j)I!fC6+t%5>H!S(<-hf3*@83_)#0QWE;tY(KP<$CD5t~li#4ZE*It8Y!TTSKd z`CZX=ubb`Nf((l>mKH)54a>VE*z!rDq_!pfgBoPES}ZQ|G#Usr;y`jk#v#*yVi=(m z^yJmIng}A3gkhAz|4zJtE=&D5pWV1Mg)HKk>4Ly!{BF?kj%1(ohNZV)zVF?D&?H4r$e#Uq_y*D^7t0)f10f3G_H8owYJ;C|y<6Gdo%_&U7 z_CiKCePwUm50j33GxQnz>I9Y1jR=&VF;gHxAXPYgp2hLu4iu~@-P(%emsLYzxw+nH zB13!Qt=MRyO{{`zs~peelx2n~hV#vL(?snPFrkN<+?p^*t3TdLe0k$Bkw^0_5;omr zaefXIXO3rhn3fOMwotbCl>UU^=05S=*R;0)?AWeQ{vK|g(q5TlM zQi~>JlEZ-3tGY5RwSt*_V%U<}Yqa`Tv`uW<=TGPD6b_H{0E+@jYVzfP1(n08=V^lH zo~)qTvO7O=SYgnc+j`oRI3i7n#N_URaf?R58W*;pwfl*+(2C(34jDZ8CQ1_zhw4Ib zS@laG@CZws_$~w@uUAU@Rja~Q^Z1Sr<=sSr#eppY6Phd^w5#Ioesjxo!ZoA*rPij_ z3y~5hbh&NS_^%^kSb=D^Jm*iyb^!kSg`m{uusUL+kF(}2CDF(xzcv&Vk65l_XG|Dm z=7?k$upU{Q9meL8GECkfwuR6!k*e6amxvqr-+lOJi%pu_KAvobkrq`CU7P_@e-l6ov{gZzlxfB+{{ClX(cT!0k zxNOLHLO%B$&9hen2{J(^rk|C^ebxfMFlcQ9169zr7xkUkYbKqvQ`W`!dD#C?-~Ezuipg=T2{7=YNTPJs7;ep7wki z3`hk_$d)chqd;0T3es;Lwx1JaJ98B99=UO|DONkImFKs|NlnTBHs2?jG!3iLOD%gd z&|3VMOvI;&^E>!yUa-rl?OGC+&)owbOHf*fwuEK`wv`a%C+;Q`tGN3W(ltxYEREd@ zoVvW8y@9@*b{{V+?Xy_}=}#FYHPpoujM7I*6z|8SzZx;ihm>$5>=qm)it2&MH)Uln z^h~0hLj>I@`|I$)fZPz7bdn$()^G&ogjFv(E+T?g5~LYcJ6-`Ju_TM8!rNF*??|2F&+p(AI))P83o8B=z@WQReX>`IHaJ+X8*_(-LD!i;; zPCB4gsfU`(k{-158fs@b(@l!981t>Z`K?d!W`_}$y&ZRxl4%@QNbcHOPeMV`pNQSs z-&?lm!1D76g<4rJLebw~{1c8JV?HD>T%bwHSBItwPsm&svz93LJp+t6(8s4)YM;-Y z8Lt?OUoy(~9DN)cpd`xy{C@XXtH4Om$9~{xmQ;Z5%;Btj;z|x9I{?EVKkiYixv|Qj znGVYp)Eprj2n0L}%JF91Wh)OP*x7}GY#8BZ%9^r?6YmdJaM=mA%8I`i9&RZvhaMg< z$J7n)q3cEtK{%>6JVQy8a zWiF+s)%rz-ZY4O4FaMY zGuxt`T@^VZtA|9*Zc6Ex$L`4HJsS8%P1cbh!V%RbGBq-y78ulkYk!|IZ0+Yn$V3RW z$>A&XSU(i(JmohkN?7v{4;p(3MU4i!7(N%4n~F~>5zAF}CKjbtvslF>4hd-Hw-40R zvmkiZLj4aFP&+q9w4@XRf=Qgauc9OMGs%p*~j@+62hSXFv zbt~@kHS_(U%lM7_Gz*zhUCr!WqbeM)OVoqv0IZ;U7L9z+m;g>%N%Ys+YoUsBPS_ybPxBFzc*&P4*S(zw1~wQe z+35DOlDBE}HQ&*la<0pk#ND(y=NalSQV~y*wm&hiuYE~h?ouqiJbkX!sMOrCmD!1! z(})4JEgPMleaptm@s#i82rssY(vcjB6%!VA-zm1~a(*jC7QG{|)Fbm+RHnHUfboQ& z)E7OQwT)qNLhP89L(@9rM+Zx!HAHnmYoV`5)b4EPN{1Y&8bU=>+*o12it5_@rDBuU?@Vpetw=ZkGtRim~>90;VxjO8thQ`AC{i zmF<=xw6|dkwHuacB5*R%6qY^N3EVJO9rQY)ZzSd_$26KFt-{x$TG_3*vi9m<`Y67S z8(SQ?EF8An!RF_Zmu1m^Wn?10L;boR;-hS9onH5~{63UmMoWeO@BdblSA*X<)4r!f zc1Dj~+9}X~eLk$F+#0-mOW?G7Zycs3%2W1g=ZJ(>d+TsB%hf*LWR&1=>sj^TwvSpe z9~T}C_iHKzy(7h>yNqOVP$k_sqBUr*sT?09)XMTJCn9Rx^LLqSN>!c?`dUEmPliqv#HcQ0@Le8)G z@tIIA=L!=BBhO!LZpN>@EN^9_3BM7V;uWhgFuZrJ@(@K_;^mFd;2%14us($XnQM8&_Dv0cL$x z^DTVZ1vWC6s|=ZqKD+eZQdyuT**pFrOUNn1_Q=$_!PydVMhvUph*;+v z+V9$_f(!|FqS7)|R<@=Fy=r0A-q*e)O-!?&z}UqyP!q@*2x0=!iqn&dD%3}tA(#_f zaT|{4J*xli)vV-Nvi0Vlb~^Qvlrjx!`WDBO%9J?}G|*c8_<@?|&+J&ei8is`8O&#V zH$6dAw9E^p6`4F_-)5OvNwpcU9+Ne>4GAVu`Prc|ZC{tCmz9iHjoDi#?tcvFNA4D2 zMZvpT-X=!Z$jx%Igx-m>)Wo6kExT!XV^?bTb?fH6lKMma zKq=pK2s+Lxx)s!hTYZsQe&WtpP-3lNoi>I#xc{}`R{H_j48mBk}dmA05AeF)!@PXXX1;km!7s2 z%D@jZt$K2ZHN*a}Q7hf5giXqAcwd#~qMqa{`nd5>tIX^KI7M8c>U?o1XRx6c@P=F% zk!fv&8-nxvh0;+>7%?Bsruci7$$U zg`aVSR-64~>?D^fp*IVDT(Qi`dw5oAwHGX5q8@k#_w{Y#EDfVXe*fNL`>#Z=T$ObR zbb30#Y~~-~29^6ScQ#s$mgu3S!=pY(;kyRL4yw{~vc_u0ie%HzL5{U?!cyE>7xkTp zQ3P`-Vwc*G?^vIOpSQ1H*owQp_V)_80G7kw9hZ3RQ_l@)UELU0PrthKiFxC;qo zru11!!7((gFIzSmAM_~D(fPPMpMG?Qa2y%@=ldbnuPjJmG5@=zW~gmetQT&(nLR2J zviIjJS*tT_7eJTQKcVn7GX>QPJR?=yW&&0@uhTvgK;zgIKMD4rTgR$fpG$n-f!3)L z!TJ1Kq{KQrB#6~VsEnF^=r!_hXIq~Ul{b5%FR$mXFP0OGa?X_VsH>%t7RnWC?cupM ztpLifx#!2`TS+4GyAfBfXxjI{cu^X>2TntKjXrRT>r%n{aiUEny7@ozg@zu1?6+y( z1b(B|UGj1sC$;T6jKqw01^q>c;^m)hWP;yJJ@<%b{$mf~s&wNQu2UZxrHRY#kh1o| zU1HmATLZm{EUTRRz|jb`TXQ^9XSwp2$NFTsmj$bQpgw5hLDUpR%B)aHw1c<0;&YX+ zjVjcweS||zie4;1Vokh7*wud=q#MzL-OKM805B%?=1~18es5O!;#_?%=k>0Gf*Z22 z+BdpDafr(1lLzjwaAC`;pGmAbl;IC(gCHzsHi_Y3{n{3mXH&~T8|e9Sr{DD`4m4K^!TJ>t%c}9pzJ(9EGe@aUo|Z!m6P*v1J5LVYp!bJQ?Q<4HxLQc%?;WZ4tEeYr{X*i>8nqWNYFKaem94OCViUxr%@$@_~vb{GTeW{x& z=gM5l$45*f$mLDuZi#l9>G=~+Zk1Jro@C~R`k|r%1CJ4S6s}eh*HklAAY=L?uuax! zL@d{BL{1VXLW8VxMk|b-nFaUdkM?S?o>qA1dp5w%ErJ_WJbxHKJl+ceya5vjIN)?(co| z6gAsso$Zx?U^oP+8d4))rWJL*28&FyAt>%H+YAAn$m8}5@dh-&7%=W`@+Wlms@gOM zU>=N5V;g5c^H58o#!OU=EqM8%S6J`ZPtoh-gHEE|2H#rG6MYT` zt*WW8jgE)dhH4mGu|&UIz(Ur~M<^S-#yo~&-h_dvAzr}89XjN+NcSkE9|u#k4i@1? zc*CVeBuu^&m;yq;HV>B)g(lbGhCzE-0V<}m)4QBaFTXd^orv91c67W}_KXnhip<;u zW;0bFdpa{?Bu~P_+xp@*G7+BL@2*y5 z;ziB2ecIT?d#2E!WBlw#^!7wuy-|||EM!;OUT0_?|Id>MR%1Jqgdz}~@>80+KFjqk z)9Ejz1@kw-qoM{_HjDWWBNF9-9^@6CXGuRwpE4&3SjqpsIUg;Y9%vzGRwE{9wS0v? z>&hd1qT}wQ7iuS2Ap{1dPyZKtZ}}Bv`?i0JC|oFrf{L_?fJiARt)g^yqx3M8q_l{I zlyrAVOUF;8N^OaIX9Bp(nS@+MuP*j4 z+TqbwB;!^pyrQBh`y0g(>|PQ}o-y=KS5g(?McXafA@D+(=tl^Zd52#ypU-YZD&rq7@0 zu)c#z6AvmB%3 zSW>giFLN1HTUpcU;lx~)G{7zvMiSSP62U5;G+LoZe1x)Zi~v)ZTvuWZ2#*;P+P;sI zz{Y})YRH876{f^gnwL!t+Byoy>SQ$dZg%9&J@5-=S$2OAtNY|B+-bnN<#|-nG8cC0 z`Sf;Ia+raTWKt4xqDulC6=UFCWI>YS5<;f%&s!_YsH)Wr@T7xjPC|z7ldU1+WnRG3mQ2R`Y5-9gn~S zPQ824;K#xEMu0mh?HGtyp)qcg?)pYFJURJ; z^Xs{1VG_5tuWnde*%cw8!SHIDz^U(eeQS{ydcj|7J{IEg*7o;fQrzk99&t|YFUbwn!IZ1#Zn2fbT9;EKHOP-AXzc^%kmv_Chy;dzrP(w%c|;s% zTM^cemu&uCN8j*1Omb7Okm*Ck%R(T!VzYsbO(KaB9;6k`X?V}_H>>C-{%CYpWb7!$ z*!O|09uV0h9#h1N#5{eP7=<@pmNLtmfiaFHHmV=OxXcf`R#-MOVG{&FRcGXzKJS&a z0pAXwA>ifkB`+U4zz#26PD)R9g;b8UFkf@r9XnFrL`RBkw<&$YI#AYbLX8g zF){DGZsNg{gN1ssy|;fUh)JODBuV)C0Wce#Gg3{6$bp-=efk!+Y+y8Jr~6l{8Iy46 zT05ngbSI1PIAxoDsbl63F;t%PUNdx0l_t+ME^e4bM@WNpVR_X2^x1h7I+=fr+Sx^r zZYZ5uh_A2OJU`k3Lqql%+Zit(!YIN;D^L_8>wCf`9a5dVXtN-h|5qhI@hAQ zx%p@7s0$MP?(;To2)OriYMcvsTZscO!$J%-Bmq2D`oe5Cw{DsF1FDFv8+tb+>Lw}R zWOp9g-*aobZy$A~EP0ey*sXywTRzFd1?_R2O-+W&pw5hCZ|tj&zXAlmtvvfjd+YX8 zM=>d{Abx07^Tq;AM;Qy$#25>B2CE6Kz&vc6&zYwVR-4%EIFKJGmKmL~;{?sg zgNP2P#9)U(bI?yV1<%zE!dsiT@Iu>f{zP%qqZQ3*g9PVa(*_SFtPOOi5?Ow)UblGj z2tL^OE4)a}PG`=Jot2x+L-x0cDYLy!EH$vcW@Y!61G_~~@=ZKrSWoBWp zUB@*po=aEHR&+VU8~HNr&jDy#umDi?ZIKTmX8$1z+nn#}7~MwB#q>6|?mNx@*B_Cm z;)V?9OCW>N0gVR>O#7lAn4Yq}eA(%C5%8B8c=5kW0~$Uo{`FchRtEn0-iia$CDVHwd$M89KD$uDWK^XQ@|g|;I3&>fX>4H8>~NCV__~FDm-^p)@iQ@R zc!@>U7$tlZE-?x(I|^w-UT5Mi==rdYaS7Mv{-X?UlEObq|GxgG9~CnH`_1FuOD#Ge z9+N*ZoLNrJ;d;wYUDYtv4V-=B#P>pq8*hsKa}^3+_!Bvf*;X-I`&E;^q(~If0hzkp zO!PYA<01WiNcFt)ds%mJ`&F@i`T20M8O8V$lY8hKV6Q?-g6(K!G>9+dfO33C^8HQx?9*nl^qKhSky8x&1h~F)HS@E* zHn#;!U$s$;(O@BoG!h8Qa*aO6_~1Q;=%0n@z`?@gno8rnXn;}H>`IZ~CMKtg#0$+g z?bPtH><l4BGCv*wK;61k_%|=SiH+rQRJ#{F~ye?PI(_q_lf(oY8eoEX);`bJH zjq`r#KIywPSV`Ai*GAa?v?x1NN{8KkmI;!u#UgJQ9O7LJg1gX*c&@MVM+#H#>9#mn zm=8+DR;*$IUa87Oc#&kFP+yt{9Qgd!lP{1x*NV;)6L(Zi`LKig>9b|>A`{3utDdS) z_;~UI_4{+p{jW~*T%hNRH6w51dg1Uq3kHF6D}9c;O4g)mC2zG$Nz>u2k`1HS#P zDPTz70v(ZK&GL5SV9O&tybBaqGf03aKB=NQ7gp&d1_5zuBXqnT7cY|k*JR<+nb!$^ znre@@yBNit_bha>a3QJem+g0p46zou+Kone#D)_4W|?>~o)N>&rw>^aV-=oNZ4Kx! z-VgYU-XGzD+~`kgKRz_x18Bgm^)uhY6~Ww>(qwTDj=9O@zj3+X`ooq-%G!*56;bAA zi=YLd#WHn#Mo&~E@9D9w*)J*-mb8Vb&hpU#fu+A78>7h#r3y9{H5vG@4oPOMpC1DtU$JL^Dt;m^ zxt%@}6#QjzX=L-=Nt?pcd63R)VJDb(R+p!vM8@+yfA%{(Yc%EJbq+^VC;BdUSS%{E ziciLH17lxbX4GU|v#(NYI0|vux5Nn)zoA@`dMLqfH$Hr>nQGGH&_eI)j<0dn_JhyY zoz0$sns#nBHv(or*U9B?7w$PJiMapHtUKNjVTgtW!GXK=hv^x$FbjP|(vv+Fbr$Ia z$RTZ8;Te*&CQmv2>OoDdRZ{)-e9kG-9B@q#@uW$4Rl;LykmgeyTZHMMft=-G&aW6- zQ+nj0wV}$pZC<^ks9FY&Xml#q?Y4KPeM*E_-@~AdH5C>X2OBh&aAid z?SqHRJWAwWd9LG}9Hvr{mQAbft&e5|;pqvxX-hEgT9iigG>4t%xAGKmkYF6ouG_y;na}242#|_2))t12ml0 z;RmMZL;dn32H&HXlnxc|UoEK!Cf&cC2FQkc`Y;1LnQZVDai0y7rr`WzU6bjButcWE z!-ejMePEj9x$Bwb0klGXNaElG`asy}@!IJKihSWqUZLL~+9x0GMD}>vr%@5GrO9in zYFxgi!g2Q(*X=i-Ok#fbt%;#t-~Dt`F;jc7ewU^G&Q@2|PTcql50;38GaILcQBh{t zNw%sK@7obqV0Yeh^c&@dSxFs6)Jpw%FPX`4J@3%RJf=TaE$*hDW$aCbs)(=s zj;nIhyM@M$$xIOrA;*T+E>nPH4Tek{-Sl+F*0~OC1*(@5;;hR1eP)kPa;x5{;P#@R z?0fY6#}9NRVxSuj+#feOghOxS_JDwCg2S) z)h{I@R9^ueK)2F4H;86CLiBLF3{=h~=ZKR?%I)|9k6;Im`pYpx!N729W+udBKbS_4 zN8$1cX*1a2Cu<=&v#>7*TZG zeNI$Wh1-o4dezY>QlZhC^Yrs)d_PffbDh6%^)oo@SZ=)PJ+6775OkGItDlY-d=;RL zH01FfbxxTN6#;j^s`aG71u8b1$}Bh(bU;F;!uxt6cTT;{od{*|@ZG7?CL0mZsz*T` z+VT08B)TNSwB>_>`+J11Vg%%1e-lc%G#bO{skPX5=w1UMY+0^Jqv4!Lt@+&{+nvr4 zUWSx=e6@v$Tv9TXd31vE_wQS+wOeaNxLMB3!SRJSdS z@tEt~!`ByFh4NL3Q=W*CS6g4EG}dcsX=rxIlXNuBdGDd%xjz?^B^A76SDdxl*yulG zTJ%IH+pxi_&4Ao>X;>8!I_~L~nuWnfY6Fupnw-G%OcVM^aoL~WCSa;Zdeulsw>AE( zc3uw$C^=u#)l>1)_Ea2HIG@>|F{ISUttDG?1KrF z3O~&flV`aax#6UYCpDb_(?^Qi_Cq17X`zt9wn@eDdA!Cc;qe2&gs?LDZUk@~c!oLY z+1}s6?bcHNd`uVy(1S>DG~yfHna|Un7?DL}_H?KEJ@r;zk*ad((BgGa2>AU=(P6(h z*SAKon4q?bh%^$mtv2wgn6IZdGT-LG7))E&!?(2SYt*6WwuHw#fqC%vRB=M0xRYL` z?S$PMj;MQDkuXZ@*jxWIfklp2mq1FyPd<+mqrIvT78-sV8?Nt-N53!fsyV75CWhvd zacl_8+cqp`g883j#c)A4hCZEQ)%sd+-)1|B^t~<#aVVC6E5hghVPO|~G!|(F=DWPY{35nlO;cqE%FCrsN&xMQe056QV@1=cboKKv~LxCoP05{)ni5Qfbc#YR~ z-jU_l<9+w3?F1sXIW!k{WG8npwrE?Z81fZ}vcJ_i_|?a~t-Un0uv^>4(6?P?I zQJ!gk0~_VJRn&q^^o}`cZ;z@7>{7FdB_MfYX3ai1}w(T z(*o_D3NR61-v=^qJ3B~-X+eOe9D~QgElL&4qjbwh<X}MZllAgmd!b*Z55p>TCD$z5uY5(I&nf(wWRJ9WQ9lMQuQ2 zO%_dLfT#6!1P|!9HS#Rvv8%3K(zhNgV1p(P&j=^sl!wT3tfI+c>J=IrjOv;gcM#u= zx%jy+Tj>h4T_a`YF)x0+?-;KcLM~mqr=c?GZu!}H?c^<@$9*uNcC$-(!((d5Jh0t4IZRbW3wtbeSLTU5(3TlhM|(`_!Ke2k3uI%s2seyX-^sk3g6OTAa` z#XSZwkJfja^RwGkQ!g!a?~&Dt_x+)E-^gXnn!<$?Fnaqe^t`~@lQkfFwwq3lyIPLm z{8GGMVs%~W$>U&^=rRnEzn$+|z2Go)UF`iA>7)!t$t2bqMFz53)#vCaP~>k-W?NOe z8u=w<{EOmUu3Ob0w8D{O+UREay9;^2P2g^deKhJM=2>H|xb$%?4geKGDVR>w^P;x+TPSi z29(dKcOw2o!Gaq0C^Bmccl=%L`CNo~hk$IdhUl;O{;Vk=Mvbo0?CnbP5^=^yC8;#Y z`a9A%Krx;ol#Sad+^Rol?Cqu_rx4C&g#*Rc*;?gApKO8)VwOaCeKhUsvSlYOLdeS| z)35y;2bhuigjG~rdzY%Ar!CE6roi33>uwbCbBcNBPmo0gPN>*MsAYcpSyhC{T3sKV zh*q&6O1uX^|YEAGHlY+ z8~JnkPkBz+vijG4!-ZPzwxUGf`11Z2hM3 zMv{fP^;+Ub3z9XjdP|h`4}Bq(-F$htr1D%U!I`iAmCqWEcl4c(>7!ZxlF4do7aPEd zCj?^2LvZb5ZMN!tnrkY`DGz=OzRt&Ru)AzT?!HSaey;vb?po)wIE&J15atRjZ>`o2 zqQ0n>y&tNBqSG09|I4)wKHllPtM>{f=8E!-tBUpuzum(<(L$K2`t`G@?B=SB-<$`TcGGqXqCfUcHD#yLl?mTGuYaT@bCK#%B*9vt3nF-fP>2um*8L zRW9gfjLwslP2;lcV5DTJHV<5!8m-WCw?hU@5ZhS~Z5?JtgNrgw;g0s`0!jZF15i=u zf1dgN>mrLv4j*N&67F}GOpLkyY*Yp6j`DkFo;(Z0qIPAfnOsDeF3WQ~qd9E=plnos%T>F*Ez+ z%&i*>LSOXcRteeCUS>37cfo9hC9S?kMv8bXc%!Yt?#T=D;6+95q3O36QqvWSKD?9A%-4MIjeJG+x9&!B)Z`u2(_P=w`RfjvMY>MWSTvnsz7LdT zoPUeg*8hYuDO@*(!I5GQCd#5_sYbDi6Fsas=)ThPLRvN&x)e3&4Ck@!&dWC>UcAu_ z(PFXxvSpD=#LX|F&i%!3m)B5RBJ^bBsL($wt6U|fOs;cVU9F4o`pS!}4y6vAbAdPw zVpOrZy4;r*zA%jqbk&qFVUe7C`pQUI%enoES#Z+}Qi^piD)t?pE|VWfd&Z525NK}~ zcRFvk@a|cBfI6fN03@8`ZXP-S?=hi~^y6V=*Uq!?LAqrCe8gSM_@?j4-qiWJ#u$HkV6V95b5QP(I7p_DFp%sRiyBt(%PTvQ%yW1&-kEpl|%$AC+ z-Bh*XA6R%-LFq8jR34In$JmAo6z*c{+`5fYf^jQj^aKWIJ$boZH%{WTbZA5w(upBR z2(okwWebt zdFZ*5SfEQ;9rQlSW`qa(+iCqbvr#uf#h|0bD%%n7H6Kxvo;IQvaz4)Pui1OuIl~mP zIr?s|vyu-{PpsdcK$Of!y9v}(Z1dab_)wMQWmzHeyJX>uXcx{0zdii#+%U)y9(GTPS9>Csy)uF7o_8iDr{}5P;$iOF1}8Pa zyZb~76T9QK;b^H-zR}3dw?AyJIUl!38y03_ww9`h8ki?imhFfPdkF}zoyqKAVAyiM z62qvQzi!%av&J^C||738vHwXC0{AFuPrL=g${@D|mvh2scrxlG3J= zjK(-#p?9^3Q36JWyj+RDV^FU4E>XkY(-!dL?HW_YTKE3uqW+6b$iBXiDNCs+_M&_F znl{bfzs~#NO!A$kVa&Sm8o8N@4a=Ac8HTo$2T28=#7yPR-eI23<3kN>9tqFOB$mfk zDQ#FPaE~daM05}=nOj$RPVBHK$J06JzPo)JQ=*7_E%{BR&HHA};`7I&16sUU<-~rh zVl2rYgIy+P*O`Te6z}p~{CfJD0CT*~3awp_Y>V`08#qTiX*v@_6tg{!T|8*OdQMnT z#{>8!{@8ujPTHQtxWH)?)D3TFnxs5EtSquDjA||3)s}{kjg;2fBj*iyrwTUX`Kx0# z%U5xASaF@iXWd8|XR^?L#1`V2P#Ioth%OPD4`*!&ak6#jp7%U9BiR;B<o_jDH z&03^Rzg(xJ$d<;?7s9aZee5M9o*jzrbqPvlhx2#kua}vWCVVxgFYXE-VOq3?LV{Bf0Cs9$`qVMh>Z?$|kt@P5~Jmc+CfY}uHUvixm-p0mIwD6rd6YlSF96oHMSR}SeAxBg*F&?|{O|i8-xh)!v zO3SKfDDTq!Dquf)r!kb)@?@~qsHi|#Q}~}}jzspAYr`*$jHPexX!I(R{ZLsr`~r{a zep2(m!FI@+agHlz%E(=prEzMBBr(F|#ngKZL<1mmE+H-GX3VQt$MLeTIJgrS7jzDP z+*>Vhm0O%!X6u3L+{<&FNjfMzqa{R6Bjj$tKjh^1T{aeV?&i>;Ug;+5*BCPB*FHND z$D#t)gYnI0^-;4fx?O^^E2X9%m~_4v{`7yDu}grmovNJh3cV0j7dn+4V(BGx-ZG!#R#>4talKzUl9G)vsqh|0Lm11u^e-<^2i=2 z<<0uAoJQRrzH1}W0gM&rDCCj2q3v_?2CbmY{S?iqANMLg-_YV5{U~!78o^edXn5X} z!6Ev(%zN)(T))1uBYhvtGPs1NqcA)|V#zC4wv>nL4AEX58RH&g5APWFuU)64qD4wk z4G>(j9&l|;wI9jLnj$JBqV*m)-fupn!Y=t*C~EFT@;Tkdiu$IcMtVQyn3g)wyF zSKdlGudGGY{y_vcEj7fOx>W{(lzMUOKj=i=vd%SVWeg!}5PxKd@4T$ApOVO~)P#xv zLeIu(#I&nrUVsJ@XTogmz^*-d-01DOyGCnxOAkun7c{E!*WJlm!*1v?sv;$p=Is`k z{?bJ8%EdQ_zFm<;b|R(+F8njh#vJ2hvg?-+S5&;wJ6He4nWq0!&__N)rS4?;>I84c zSI9pMi*;sY9Mx@a3Zsc0Y@=me?as!%O)kfFQ=RUIdL6AxWB2B}LAs_;s7Y2Jy7!#e z5qd)uX5}&Uc~(t#ws3R50?DHoA&}qU;0vxv-A>kq&KJhZr@JeYvWC>Wo^IXPCCl`+tJlKw~ zKqs^%xvcSR-*K8Mbccp#;(Oj z$e2YY&xFA2ucpV`pcSy=GhAJ@bE^Ub&8Fj4tLliaLu00L%HxgME>kJt)!~weG0_y? zlNwSlWUBM>a4%n{D`d`HnYqGpBaf`MxbZ}92kidaMrk_r7QrMQT3=LD@l4e)-7>j% z3sz+uTi#uX_2M@J1#WjlvN45)%}^vWe;@fe*u6a)F~KY#&~@%|45zVOLk`B)Y5}mp znWL5-qD;GP)yA&N!!MS?=Gr30>aqozvK13nw@3JPL$e(l zi`lK-4BwYZ`W4oiWrj!x-rKhgpcik!F!X$vp5Hp2heUXx1z6KbglDq)9hH{FKdU*9 z#Bdpoj?2I}D<*v1&z62dkG5-&N5A3s!9l-N#ijUkLpgA5ym;e9)5=aIk-p35tMFH> zN$tY0!$$KtPyaApOC@}L4S5sI9H^gnHS;1#9KSp{e{rAA++gtxjA6-R#Jvw>4tI8C z%Pi35Qxb=>qftl;A49j|UGIsYo3^sK-ZxA5K5J%p@CO71MZ#brT*RJX^A*tQXLECs z`Nqu0+jK^1>(0mj0Qvs@fB-u$JAX889F2xm60Y81)3bn5l~Vp(CRB@KU=s*V@-} z)#l_Jp~y(s3}axb2q|(U=LXQAkg^h_qIaX1Ll|(lfqeU&IcQpf>7*7=E(x}oUNw#z z-wxM0fQdKRb4}C^(fnMEr?_a*Scp0$r0El%#Y#v+59(o0KTx+f_gdg`w^T zXi5yud%iRI(;U3f#>&{X#E(=IYXzQJ?6N%lO$aAm?^<-G9nx#KG82Za%f_)vUutQ{ z9{ET55@Q%8s|on;2|+$@GVe9zvza91i=18$JoU0GQiXv!7l;qTL7)*kw7(ajY?c$M zb`3;&VUV>MoA5G)Y+s|&e(J^2gZYja?Soy$>AHW&%^78K=jfK)Q(X)7u%oPLwckGB z`ZJAlh&)$iIEId;LM?0S_5Tox9@>zX*(Qrpvl3sTi)5BBnyOaLHKjRorcKrp5wtfW z-FD>~GlG(myVgT7gib7eLHMA`-`BiHlY7`}Kq*hVs%UfV;ykxUmKaQ39;%BJzx>0Z zmTg1rq*`x!=<1G~9?RB`DNe;zzx)GmXDPLE9aT1iFR6e$ALLWw>)9F`F0uHrnMwAL z-g%+uI%g)9o?n6F40`laU~mK;yO91%epbQDutsI^{N&-9?@eGm^6DzZ$E61+fwZ~< zut;-RF~&R-S5{IDR|V{b&3K$EM0}n1H$b34E#$cO6};2!NDo66?#81})N>~x@oqA} z$C`sFN2&GPy}sCyYDC76XqvF|bn4OH<6TUNI;(o$eGbJ~n~}O_%_k?Qf~^~^1zkxM zihqYA1e)UcYLW}{+y3v+rn3Mf8?qC`h;!454@oj6s8-m)*%$>eUo`lKc#j8 zWp|h(foc%nU7lnDT-1ZdnG~SSdG*Rd$QSbTMoZKoP26;lwQitzs);XJa#1axY|gYL zB+k~U+vqf-Js(EJZGc>2SsAT(K#&HloVWz_+IqZ(^b&*ctbn)N3Sod|rp$}Q$$He# zpV4Z2n6GS}!ZcEdP|3p-*zytr1ckA&L~8XO{FDy(wmjau&muD$cbxyNwXS@9bROHaxJ|3_vTh?>_@dzh#$_(>M&8R$K59d;WOJeI4K+wusU4-2QxH}Js)Zm zGs_WPq16|M3mv1{p%vc1f|DwnI5RzE^YbI40+CiIL-$ESBi42WY#;pJRzQpM?cIG4 zQ(SJ!>If+zvg7l-Xa~prt6Am_<@%d5k{<{a{?%y7$l}#p)ooFCb-z2m+|A@?Vf5a* zvbl>f@2E>A#>=zDZ=ANrgHY=z;b}~0G<09uzY!A8fiFfeuJ+qBj*`Vuq48s}0 zD@2(8hAjRqZhEAL|2KI3<^K8q{`{QjKVq>n|7ZW0!AFo>Hj&jqMF^_b|9Vx4^Zaj$ zy#H0Q_kZ7jzn1@#pz(jbI#n7y+a0G~Y=3+hSpnF3;r=zdx3m>@_(2u5kVz)s03I}H zoGQ)eexKW%Nde`(7n?3qS*>@QrKc!zP`W$0zOKRRF795WyPX^Ud4k@!>g20GWW~>3 z>~3^kxn^#p>~aYhV|6YSp~l_JehA6zgsPR?N_UjGl#Tav~9&*fI;8I zdy1xNUIm!I?(u1C>2PZKo|N`|f@W*YeAxr%#X0DZ6J$4df1NnHY7LRn)ELXpdi=;X z=wUbi#>+xanC)^Ew8xDA@@T`8lBZofvl(cNa#d_TexL*b7naR=bYuPXkdNSUFpTCj zX2FmA$!G;9U8hbhs{XDu0=%e@=jHFGXN$Oo?Fif;eIp8DMcZcCB6OjwKGW1F^U0$2 z(v82_nMz6RD<#W9j(%+5~uyqq8AG`H+wt=%{ ze(IRn{sl-C!eWfv*_y6au~zCgO&p!yM3ci`e(f7`m8{mN!D|FpA|F#Ek=<=v_o@v^ zGwuT+I1qU;RD0a8rx=oOQ?L=KT}<@qI{Xd@%iqE;jm~XEu~Se}v+Y(iD#JwP7O2e} z*S|j-sj$pZI7HTV#*1~V)#a+^M8^`5Wg;T7@ynrXf_M_0ke5a@hc1V&!k#2he2=o%#{-cy@8@{|S|t&69qf{a7JrYjHro`9yrsEOanm zTUoEdh8cu6k$i~0))U`Lt>f-a3fhbEF%*n9y2FJ6%dJM9tQM$iZ_Kut52ji0gR?_A zTj^LG+$O&h;T~{xgh1?v#3PHl2ROUp?RIwV4lJjB=Txo2#w?l%c!>NRqku=F&T`2g z%-%sZcuw6bLXE?5Hj=MXx=FIFmldAw#tJNNLtaSL$PdZVyEg^4gd4WDksX2t6UBq?u zuZX=#rQh?}&Ny`%0h_x3@DGPTJlW{ZxY=bm2_omY_JIaD!P5eb9M0l~jZf~OEexKW z1(L??kzAbq#EteRJ_m6*_})Es?Pp!guhAS(G2d2p_Wh1?_uYDh=a}b$-sCE~);Jvw z#8GDA9S|ddKB2W@?5EZ3?d^30?wm~9Z)UW(!}9P0T}aS6+8HZ$ye%-eR(CS&K2BOb zv2;cm^4Y_n_UM2Bk4!lJTIgD>n22SACHm2It|NUP##59Kmbjy6s8A*CO}X`ip4@eI zu9+)g6ttdC28;ArDOrMIfDs{*Lo2@Q#HMny(F;V&JU&OSiih0yvtpo;DU5x1WEImg z3x-O&ZY1Y(u}e5hPsm{)T-BD#>Eq$>2x8MoO*I1ssZxp%Q%eW~|CDw|vCYWRLyOv4 z$GK8CxHofz#>N7?oIAz+sOiMN)T(!C19Y>8oWU>V1+L`L2|3CHqV!}ctOuCySzdA~ zTiq-915dsLywSvIRm^E8XiPNC%dW6({Oe1}fLulnU7M{0vPm*{OzN*-26Nq)t>Kq%3g3k|hxAk;Gzn5XAC)S0}6`(`x4S#^UF0uLd7rxy-HGg~|gn9bISH zofO6Q0+DG2egSEJZNe#<=h22=%WqAc2A{C#TFSfcX6i2>d3spBc&u!7rC7^32+%blk2_x46O{M*(?|a z_*$rq`C`BLnTv7#ObUts<52uu(V;UW8fKopJ}LEd``c1I`_PUh)2bwW!vVTtl`ps3 zHJyU`{}|4Ef7Tf~X|uE|C6Q9kdRDd_=j!z(!+D|S+fktyk5W<)uiz1lptV`$)QcY< z+Mu>XZ`L;A9!U9@CqLFEb6h&SJ5iaZRk(C*>mDP$?O+O#soU!4;!Ywrx9I7c5#p#K zMzU5!s&dr`)OoRwW~O&1H{+H4cm0X#*|X%Mczlu1RqQzyYo7SxC57IHJKK5;f+h)n zGgJ1_g2eHrVMQHaneV7zAL=ZT@&*0?fKjXFsM_ZTO`AQ}$OLfezkW5hwN*c){M^6k zy6-qQi^&Rv1e~YyqG?6s#>>?fUyLf^K{6!yo#}R`#~>|l9FL`=5$`p2wf^y&4%gZ@ z@P)|qYBXsrKK`o|xy$8_ORDO;DJSP&r0n9`evW;#+?q3jRWaJ1nEo+kM}V7|;(xRN zloPda&Cvp1-usGo3KbL0dF(8k)3kEe@0D(?_KAG4QKGlqtI#&)Cm6z49bgn@M-CPV zkVV2(l>c?%n)&{xIlIj*ugV;RD8lrhYeB z9>5KFTNXn5hG@cpcH@g6seCXys1 zEv_FOI_G_z%iu25r@q+)dF_#$?A%-KM(xnqQx=_^h?~jyb}=i(*gu#_I+*Wq+0P!E z$LP-kF8R79#y;y=yk# z{e4Rkc}kXx*lsrq`)v6bEe6kmz&1L&sT1)yK14VPDYD1vTitm_?Ld^m^{V33{Gu@t z+$7>8S?thb(Ai{)J=gg@J^IYxbVWr_lwEOcDDEXZd+ngElS|ojTf{ueJ`vKCIu?~v zY8JB7TJRam*S4qR=uK5Go~(a!NoUl1oK$N5g9zSSF$>1%2ZA@Z-UqC*LK`E3nDJGQ z4L2DL-)B&9o_lr8KCPjM%ag3yditb;yOB>2xh#OBg?S`@F)D<`sR9&#*xfvSB!y_DRdWr|B-n*m0kRxcpi}d`Go$6= z#Ju%T9uq9SAe>Bg>Pi+eEycxf>05U_^Qg0jFfv^&n#94iRd=r1D`RhSxC~KouTw4J zmTLOjuMfJUw{$>Kg~$1GlKbPM9ghi%YPlOuPo9_gL``1iFe<373CNh2lUE!3!0l?l zTepXiXA#-1|F+hVjiyEKd}&!>Oq3Yp+W1qJaX;dv7CeS8J(5Obhqa5JXZ zAlhxxXN=P!>)SinDdVR`t8>+AO2f_Z-YqukEiIX0)x7N+^7U4va z@)xWwOY-U(tqpabBT^KYo9kd%;G64avoo}mkG_YXv0CyEmEZ}c&X=!fc<(w#x8EnT z>5KQ~sjEur% z3@*C%W3`&%r{h;{3@R|O6W+T_*1R%2vv9j0F06o<_V0m&POt= zeef3VJeOMN6lQnYc)XLqVchWj$liQT&#qr!rtM&|F_dv$EBWzIKysij^=9DMR+`W1 z+4VJEP|aI5X)bPH<_?a@r%>h#tmfXYN^$XztA6UwPH}buXri0s3ED?OwFXvdA}5Kq%IE?bN3P728o4AP zq-u$7EKM#BQyC(vys|2k{n0wxyGCu#c%MfNzTB~l4jpZln>VZMRl1#ghbGTi zx0PnGsH-69W7rG__v;t}%P)P=E4w#yeC%-K!KR;`IE0RW`?L91JJ6!M#H)OM2ycqq zJKvR+_Rz7vWU9gn9?(!qilupRkFAgUh146PViLDxbs3XwP!>83osrMhGaqAD*1ydg zsIHEAo5cJZD`#J2=1x!;u@rhONbyhDx@zfDwoQE$ukTTBi(R*FL9?p>qpm~4RW7xk zN0VQ>uH2QEfgla^8d!_=lB9?^M;g38pp@ zx-5rdWs)j;ZGgH_iwU}co*o!2diNU_$dYMBBE6I1+BkqAYQVQ0j=I7)6T0Uq<^8P> zsG}@)_A*8g@%))&?di_~+wU`LH`JSRZ}bbPjD&wBZR-LK7EHA?jn-@3Hu?tP!$2X znoGMOaj`PtfuvMK+n3wl=?QxH7^vUEz$+SRhIpDpVXKg5yvY?$Kg2b6D}MOdpslvB zk$;(<^ZdrONRAoZ&UKCf{xEP6B+RQ5|MTXYp0s|I9e-Tly9?)0r=z~(r0=88tzS#k ze#tdQPr)8JR1y97fOJt|@wzeIBD6-w)$x2gZy?*V!J-l=m5zz88;vpyEg>dn;1g8k zyRTg@#Xnz?XX5o)E3~5Fjej!VbiQta9=nD_%B3X%U1IGECZ8MW$J`D$jX(En$Sm4^ z?^{Um70BY@^Q`dNw~D)ucmrDUv9%^8SOQ2WS>=w2w$UC38xqE?{f*h}U~rir>T-;V z+@5JGLcX{4=`wAf;#dFwZi}AnNO^}|MlzLZjGtAc>%?Hnqc@07q*egG;eFkrdpwvh zW=hXxk6mlyf}xJ3d8cHB=|kj>;S;8BND?AriuS)Eu18-;tSs7o|HE@G-H!=Lt(##& z{Ci~Kq9&F@x3fvR{a(&=AQvmy9i&R%l)x1##>`812Kc8sFcE`K27;9O=Bi)4RL@Se ziQ~z(D;z`&DBPh>l&0-vmW#emZ7&>NIoPc(9E=<~qMg}dI~{9jQy-E(9{gs>w-9eI z_Ii-R2fLV~NU!TVR?0p4>@@8ILpTL!Wc^kPXh{e1H24YcA+*W|3P&lHJl{RBKO>6S zzk+~P2FbY(xBm(|(up`9pZl@;$KtEfL95a(#jMZ#J^UBwcj>#?`EN%r>*KNnWmX%Z zJ(j?srFFOw6{0sKym1WvDx_58>C6YlPSe2?1_cB`R?7iimJI#2XbZ)JxFFl(-r6h> z+I`k7v)mVBJm?a5|MJ>7ats$LlJ6 z@C~?-P_lD~UtDRqA`$Q5B6}@*$s>D2lSH&9V9wD?vcot!_m_t_N2eQhyaL(4Tfsp> zR!1RY9kVvqQL)ES@_dp>aS4|&1STg6wQS|P&~y@iq*BZ07voa9*Q9k%BF;a}26Y3{LPYE}v9(!y99Efh@rwdL< z?j0n{baUPekKDcRtE^j`oy?RbzUh#B>hw90Ag0@E9rLVA0R`PCqSXsg6`$UW_(n~% zpr0GAM+C=fq}AE!9Ffr#?h8Mke$?3Kj&bC!WhksIia)j*xL^p-Kl|}=*{(z((@I8k zyoBTI$6U?=3iU=^RKV$O<7pHa%m>aL#Piv5KyOQ6OdWDt&3jO5?qnRfPxKiCEfW4d zBkZg9*ah=SUb`VWLAD}qK+(eD$NOM2ph_kkR>?u7m%s~60V|#;m;2&kt_!aX4$7?B zOdy{%G-=L4;|uObgy9frT5=0TnHRnV{Hm;2Vp*}P{c``esO3~bKHYC|HoE>e3h&?5 z8MMYBcTcx9G`sd5=as*IF4t#Qn(SX&-5!nZUD@bde9LR;Os(seYaqb6`+VUHlNRAa z>Bv)pMm{ISGFnYJPMqet-_@1hc?AbKfq#%s?iDuXJ-KuKXd%W%% zy~IrGZG~l?9)*KoTDpnv;I3l20?K4{tx#p$pvY2|^$xCmkDzW#CzY@UAyrM(RzOo0 zkVYMv;mg1|fs$Z@E`Qj*F=4H@vFAV~$4Y{2LXY_u>L31--rC7td8m;O72?hKy!#wK`hSr+vPxuOmZ_tV<2qJo1m z&HP&OqN_m~>wekKX>yV)o4G~MR$J1mzyQaxnq~*A0h8FIN%qs>;U* z)iP-3X|yS1JeDAv*73KQkntmW-y2pLHJIj1j}~DYd(Hi>(AHsyiC&YuDoXFYNf$!zHJ~&R1*AhL(xn8D7D7iv2%$#^ zy-2SCLTI7Y@$UNbz-E z_=8kQUi*1F=|~A6p790n?2}F)~JLsNnOj zbEhS@CjEXr21JyX%iYfx)_x3UzP!?iVg3b@d0n_%z`m(TAxo0-Pb2&G)=yw9eo?;g z7MG#~5&$Yh_!-poVt#%0m7K_RyQA)+R$i)ASGcPsb3MejDpsrW}w@? zkCOFc2ukghiaNx0ux92O9#L|(BKp86%n1OOujjo(x?0!s>j{>sNsgQ-UXX7|l#z7M zcpHF}_IiaSSZuyK3Sw$=!fRz!id7Dlc+XD1qI9ErO^Q(yJ(E1~RyADW+%iW3kMJ`j z0J3E((6*7+y;(uBoH{jk7tfiPkXgx+&S(v>xJL2iEO5v>``WMg^^@El>ee*Hwsm=T zO+oex#MZyD0Rf@!Yl)}Md}GV@FrYblC56|oX1^c!R`NegTsb3mYwbX{#7M#`%h;da zQRy*YE}NF!6uczpI5nzPWgub|DDINm3Dn!}TG3eMB)P`qDG2%RdKV+|N3AW!-e$={ z1l<=M8~0BVc%@j`Fl=mk2pcn*WCWek0WC}z!c8H$5wPzM7`@#$BB{0(D)P%ba159y zJ}ymXtbdngEOo20%Ksn^QVx z1rW#6zJOv&BFV-F#=GZ-vM-Pq7wIo7>iKH>w)ms^Um9V+-s|_FJuqqBuOG?1r=Yg9 zYYpoEeEYr+mTpl}eBY6B?dCO4ydsba z@vb-ZmrG!`sB#$Z=1R^u94YiuM1X8Qm(gl{*M2m8TbKT4`#Z+|_|Np|E+L)7R!d(8lKvQ3IY_j=qF@Q!?_dLG^UxhTGC>* zkJpYf4KE2MZVzQe%G!>RgfJx>+ICbx=ZM$t>8gpK|D*hx%HQ@Q}U0woEk#&Jh~?fTno5 zpXkpEQrt#0=5)VD90$0GEg=-;7LIv8dsl_m;`1x-xDoYh2X6$q<fj`wBc) zK1t(l8c2=m1A(r2oiw1uSG79awe{OV(sf9s#D4E|deE(S`^9#=Y``@RJ7t;|kqSgx zT%tLwxT!RNm;->#xIP=1#7y8Ir;dfd>b>i$rA^m}AWO?o%v~HcXZ;smr~V7pqgAN@ zQSgcJ{pC6IZdL16av-}4zTutAw~>aEGl3LR zk4K@UtCIE;AA#{Xm#Ros_Dta29DswIe}!1#&@OomklZQ4qpo7kIl3S9V4B#Rb)4w! zgp#JjbzJgX0kM{Qlq>8Bi$!=R@W0!R+V6XY1PC_({mhF2R4169JQgJTuL?Jt)s9^q zeF5}`v!4Z$%=;_><0I$`8B4bv+g^sNpy=!dV~y=GtX8?fKaNqB;A&G&c}(a8=quCi zhcy$CKpJe)@1)+vyB6E_xyJJK>elCvB^;3B2q}lt00>b#$_~hwA}RSt@LI8pM)@o8W??5Eow@^I51_X1eY;?S zG3WNL*vvMWlUch@&7xu`sY_Kw8v&pe+@brh zJMNnFUr()2(skh^Z=iq|*Ag1h-Z#@$mrHp0%Flm)PCMJWJomH~Nws~c=lcCnio5Xx z5G_>o=8WIql7fAqp$xMz(m7}JtHP}=kTJ@&RE4zo5v$gWFhJp*xC?vZk-m_ga1Gd} zfz12gGOE{dHfrLCfG|!a=t~6Gknd$a3xGOo$5gG2Br9x*Bk^)NBaescykZoR4)Quv z#e|#B8f^>Ccf+jsYzK;x*3Z91DkXr3?UO?zQ3)`=+2MMKFYhm2e!W9K43wMB&;RNI z(oxLn^9pC@ZviY`j6&jL)t%J|jrL|UTyc}oBh5d5D20cVPQ#0r zqLlUPB>Rm@{m;Os#T_xV4%gGIVCV=@)7A9#|7j~(*>$QdMa z$wlwwZPUlFDC*_wu3RfOp6f~128B)ti3#S8I9(KmV4epvf$dFYQ82Nv$bj1K!{PFU zsNeZ_&#J&9;ld2AexBTIDw4Y(&(|rbgLJk)0Zmpg!9)!WJ#kq#e&XMt0OK9MV9(`V z5_!k1D{5%2Q23evzcAke>0D*lJYEoty?{~0f=ml`V;+{UQLVtl+e?^21eu1re;LuP z_EZQD90A!ib~ZH+o`lgd{o`dEApCy-uFBGQiPmViHRbi6*3LYA@LzSZGeQp*{{p(e zfBnCY|LLFqE&U)zHHGxAr;yxxDi_B&cbHaEw^asI*5-^)>QARca4<3c511NT+LGwr z_-?ksaM{`14cuWcerqa_f+X=D7~mOu&i`@pDY|Mo4stf_A6dD8J3OuEE1hX#`hyN5 z*WX+Yt+4KwThW3uyDhIcO#>**UdkXh_QTRYjlIsiNl^n}2*1zt8124Zcr|vexYm6w zKHYzRc%i}_=}eFdu=?j7@0qYMxRT4D)R^bi-95xk8i7OMRobnj{k2mhs(|hFhdCXw z@j#I#n%mAB0A}j|f<^~0cGx(yITHYrq$4<-#<$x6>AF;wEf*(8_uJtfFS!{gyk|x; zi-)I3x&Z}}Np4_&7k>&c1{|34b^p9D0i(l;G_HyX+;C8lLu6m8O`8+7?7TgUgydmC zc_SwQke%c~v8p}|4Xi|Ob{o6^Av={Zn&`#NCvd7 zZGy6-8eC5kj{$b`ULL)*WF(IN{L-;B`ZcDS2Azy_$QU* z`QirKkqWjqO_~xrZ?#JT3iITsIb;!SwHN<=LQQL{xgD-t>bajPtTDg#Pfjff+oSGF zqA#0w$LgBW3ArBo0|?YUs3w?$Dy#F(s&3e)PIk~oQDQ(H4M?J)V^QjLMlCUxW$b>R z=YYBg(q-Wkg8+a!T#6*cIe;6@XEXaK>~lC_^Dm?gj3Ij~VZ~le`HS1j!x*~_&bv<_ zzyVP*uO~)0GAKA$)WQMOUFl~V>P=A9dYs?9OK@dz!(8f)ITn1K>#M910-$c@kj}u zF@AeNpZ|c(&YTe+-}nj%*`}Qxwn~oyfG!b6qV=}&>1HGyqc3oeI71;-Eph7x12>@K z=r-)n>z~g5v7DOykcOx3>tjp1$RVnAg1&mN;Yr;;H}?iPEojK-v(1Z&S@70Ag6mgx z06e{~(u(!3&Ln_2)Lc4#;eqH>zq?%kfMEN&mELi_M+4Y0VDXt=GR?kjo^rw(_OF%w zr61&7u5g`n`zAW%^z=@&Kq2LPhX_EZJ~B*ma#)LE6iC5(}37W<1ck)608 zgF46iP38aGP*mxiTdrNety&ygo~N(-PF3o2tRL}sQ^fDyDXI(n8C@Ld5d+jhI*KP| zz8(CF1u$GEXk+r^Phk&r+4AY#5Tkz@EX9ytsR1FRrnAgTk&{UPk2?g0$dY;F@zzTTG4Ea-<^!)OqAe@a*-P{#fpZ^~2r&Fl;=Fb`B*Vhut&Lz*$0Yo7nX>Ezr=h2p1wgcF; zVlN>TF$qK`BiaGt94K>gIZrh~Mf|7VpBh^N!JNMow60o{8I}_4zwL_UyzLc~pXcm< zoSQLfCR(itB(3Xn306QKl4a2bmBgP{VcXY#c!AGhLR`di<7oifKR0x5Nv)#pX~ARS z#QMkpn0?(4z$BVh(%199XEZUeB`?|Jt%+5kukbY7bF;yI;j=)?rHvt(#l@xjv&mwB zvQK+oR+~96<>m9}rU#=(GeG;_NuHR^u9xe)!S=5tY(T*33hoq(d3xOYZz$pZ0Q3K( zbwQ8(E3JE+UQY~&DC<0a0>$`9--|kvu{-e`SO2l!u2!eX=-B;dO_kx54`rstFAcO> z-)Fvl<&CR<9&kqX^|_$!!ydm7vLtiM*R*lwyRNQ2^;45zi{g1_ip@brMh97C`Iy+)o2>uQs8#U{Dn6s~!hU`I4{pIq zTHGLAfOB_aBWf1Ez$_MCpncj{0Hha;mX9BrD$RR)4R)DNzdKVb4F=Q8uUr?uIdX}( z8ZS%!4J4YVFBzWw8r7MtyY0y39&pe3B`fn0VN5nyAeCgMLuTAt>Sykd6929dQ|GWR7WKZH zwx*mZei=TmB=g6)_vz-i$3z^UbDc{5Gcl#aHwB#8+}U(0(?TuG&$Ga@^yHsD4FE!x z6|;>dr@t0ZIDQJ=sM%TV!>k{zD8{jCDmadnS#Yps6-xl{tuVhkZtVN>;~hjJD)GD7 z?BJ+<955xBMCmabySrB%isP+@YduOh4a>G`yjt|W7u^?itOR19uXCYc6$20VXbT2tP3hS#aRi=w9!#f*JTwHT+0S4^X*_&O7TXu05)Y}@1H6t z-_4xPzbojdAgkz9`s?!yaOY?!o+v^@A_O242APpB#At(8R6&?D7rfAh2K?7K0QGU= zqx}1$4D7V)`vuwA<)r0;+ku*!dFxgjOVFD8XMz~lB_19gkhJ(5a|6p#A2iX^(=#S@ z*MDUCi2>uO3%%rou)F?;=z{0OYx8g}L-!*M!@tw3V^+;_T(N}DHXi~wM#fU{^71)O zJzeUn4?Wz*C||>Vx9O`3zDob(sm)*k^MsKkz|zXaa~eL7>fTf3>&K)Pu~FW<&4d_p z4hK<`-j5$09s9HRGOJ03eWzbnhyAAlVg&Jb1QuD4bMdeojn`~=;@(0!Lif0nUm0CI zUTepIZtoPJu74hSHBJjC?(66zX6NLhnp;TC*HgU89Q&kUo5+hK7vv^^dYE7BHOd>R z-QrkaE^gkJ*}AomUe3(VkD0E~x-s|Ae50wEazK=Q;k)pJr^LcBzynwSAA6yd-zC_m zK(G%epbhYsNGx>%;@fO#CrnH`o?G9tz|0WUGpS6n&G_b^;FORmEOS$2!$UC zLE=-yz4)w(NYs=i_p|d88;-h1nK?Mn^GHx^;$&1vHeWy48FkniUPvG2)ZQKQi@bXK z@l$}F;Bu(j5Agza>=-*jGii)Dpx29-iFquUvd|HME6MEW2^4ZL4OALl0fGTHv;lf5 z5DE13qkvrFGmw+QA8~Q4nTR_!J{?xR&0;28-BHB2-V+Ej*xAXwvk_}W$F)GW2^P*qieK$<{#)qD7h%4wxU{`0!gk# z*RI#dcc(}^1V%dXpFVv`v6!BocE%_Q%VJm*nTr$>vn{e^J2!9dLr|1SVjdAGQvQ;Y z_|NnrYBCYG+4K>1F`F}XJtBo5qSOXDT`yGb{uP*w(OJ@LN zQj^>e9TF@HFd_;nRnDz)vWoJ8&5Aj4Us$F_8_ZxWZVruW?zEz=-;n8XacpE^vMfck zyuLxeQcg?Ac4XGkki74Ba~U#^D|A`lO!zJAFldl02mri($4D~n%H^ti1;Bsj)CA+} z!86O$^Q6~0lFDU8&@nx%3;L`~PhLoRo}4GUMke$w+Wvff2~OX?VBj0KvG1{01A$%R z+dZC!jm#G>blzuR$jEZbzPke*-aPfTh^-DOBi{RE{DAPRcE9ZX3&zj!r*MU~3Xgn3 zC4;DMyXE0xW28_h+#pUEGeGH(K1xi2QZYu;_2bPqPAJ}Gans!Bs#tpeeX{o=?s)#om? zeW>p-2}m%Y+y=M^|2nK)>t_g(tpDH9Vw zb&ZY_kE|Np=*g~dJWMlUVDZIbvxz1>6A~h5irM`K8KtAxB;dx7%=37=4i0Q^R)_sI zar1-u>Z~rcAgF>hRRZAc*5bp+Fa#oDUqWQR&eO+R9weZ;fF@Y|96{J90Svc!pYA{X za=8AC9L3vXV1JO(=H_oGe^$TTlB@H(ghR7$fz*H27wu-J`3Ybi(*Nd3fW8~X^d-uvB4XyDyV+IVGrf-8q6Bqq*? ztbib)!=)#J|J@3Jz|EaHvt#nOxXvyQ7J^eHOMCht;nC%(%PhNwcE#H}{_h0p6iLG|%)JfVn{^`3y6JI6P zYhyD0ib%1Vz{aTfW!#4|?#IE99b%H(P}Ji~UYf7oF)oZ%p>i!Lo2gu)P!n!ha0ee+ z4DVV4IR%Bq;%4*p>&gf}uqWy~QiO4i=G+51j&@ZoK#0X+kg*Yl%^>CjecY|7^AvI_ zj-_O(cqO^PYSo#PCb#3m{jGuDB}{C*s0)!`I}r~i;SLFp@zjM9k=(Y@T3B(B3Jps;eDs?o4`V9#r*RROwV0% zc|1w3z5TjndS0%mzwuqM3SmUCE!S7$o1bnAjiD}msl_4n`?m}Pr*Jr)dhZ>91!xjq zPU|QJ?Ym#@(Ziry?fGSOtde6A|F)gsCOy-`kZTDniZHo1PXkh(c=gj0@$)_9!`!Oy z%-QKsTaH|Ui`9MyHQ#}Qe?ka3-N(?pJSG;VcKwrsye=BL2_vKaLMtBYfwH)u1PU4+ zW#zEXpA!J2@)Wv1x7hcCAS&s#9J{Y3*BJX+p?dEnV330&!Fj;D#^zFAy$^+pe|Nfz zGXsG35Ey|4ag}hK;m*}Nrev1|VvqJ_B3)Sg`&AsrYY2Q!KQ5>@TSkVI4Tfb2TmoZV zE-(-k!zu|{~?oSIW15K@BK{O}|0qQrncGF5d! zDzM&ZlsZ5lCv(&nQnW~0bEx>2EXJ0Jj138(sLyNV0}Nxg!VU z+{qV;?CS|a{6;-3yDW7HR6vr>!Pt9=S@yNUW9o?`(rtv7l6GGc0Zgz_Z0QQ8(!)t> z(L}eK+L7zybC^h}c(xd+=rjrM5l&3OVHmCGJ3InrN`_@#=v(-t-dsC^p%y#AvfuTt{l_U;e- zeD&WE_VsJAUQS^Zb#H+v`CSV7I?tu@5akhd^+E}PvpHN6t;j)Hc~0p_a)knBp#?+O z3JoX&h8P-Aq^-HAMnH-_4(}XRHL#D&f8FV8oWs#^U;RuqY{(OMlQZ$tVOq z-ve{l?Oy;z;-p?Bjs-da+qXYz|JaOu3(KDv2q0jS8b|JypDHj{*}=%f#N3usO8o6i zDjQV>5O0p(r`+QgCinC|+$6Q0s7tc8`g1aXqX?>#AezXTWJ;RS$H2Vf6tWo2pD-L<#j+EVBX!Nm|c5~4YKx( z2%Ii}O z6D9qFOrhMWvPI2BV7n+^XfOc6+fHSB@3gm?-wzJMd+>hUzl&520ddu|KzGs?UDcMa zRc7<@n}pqH#TOs|h$hCc%xiR4*-l6^_-(5$Ve=vnw^kHnmCK6?weNMNnTg~H{2Xwi zOJ3&PTdj7={V|Z%I1UY^ZS=z5O4?ewDH7w#%LF&ds@d=4DXJdQN%BgHAU_=iPf_jz z(%SVGG`c_mYLXA0jOo=Z1fHeEfJEDcEV-Zj5ad(J@6>>9L5+zPT8;xFxfYA!GXKUI zR85gd(Lyjof>x!C-Ve)q&T2qD6+#z{jdM{qSV%u#pdr1Oqm(E>7!h-?8ex0T)m ziYFR4vFZSeaGs zZ4(F4SQ*S!4AeT*FWiJz$lX4D8UY+j1>iPC@{Z0704l5lbhQr}IZ&u6?8gd!f9`yj zot9-hX1Vs~l?2EF_08Mn_R4L>bplc)+433$jFkMd@;G!4r9H&DpZ$kHgc()sY8sM4WgR5xrnB< z;ZtwWLIX`g4o_nB|5#L~AfJrxs?8sZv;`Fd3oS%`#K2|EoVX#q*0Vv85d zBXlCUz(8Y5FghqPRc;m4)f127(2RcgiaTTrlpJGrSrz%xy@baFhJxM!LFv-k;sPDs zehq+`wCWZ;?r)*qmXA5*d;%5+*flAYi&^3t{G9*1_>?bM@386zf+#6iT0;V*-}bk0 zrxC2?b8RUpBHX-a`*Hx`&Y+kb!1j5T`0L_s04n2^i6SOh4WW;_{gIub1AJ?O* zu`$*rH-t;PaeKfGaTs{-?0!|$R3fC@C2!f?yt+D5o!Wyanxz@;Z7>K|Z`*cE-Ct2q zM~wg%(sFT!>bHJeAT$?RySLTPZc_LjYOmvEa49hrRj+8E$RUFV{Rxuyz(S|9f&%D( z3sJX5%qo1X{9OsZxYaLoi7qoYJGX8Y|1>-xw`N!<6jU)|{!h{^6 zCr|dCyFbYviHIy`w6!wY6T7D8xX}A`eAxXmS=EI-Rx=*s0N~3B<`ffyxZcXPV6ut{ zZ@l7g^)S>TL#chcgQMj2Dc}Mq2_#`SHdblnD-$9Skz|;Pa~%vP0cUC>(`!o`l$2&Z zWRcYsv%tUoMi&saY*IDm<${aJHsjG=Ek8P*&}aSV&^hS2z`dlgM^hQHP7 z5Rr-LiH_vquDOWQR!~ge12VEakbwwOtCZ7R!j`00MA$GZ!URAT9h}oRx0-ZFJ(7RT zyZ)BONHDY{!qdxe&scXbr?C6)P_3rq?%7^cT4Z|V&4%cH-Qc}O=YmAkGp?BH&>dDl zFx*y0EulOl)PrP|t9@iPtKXIM)N7UQ)}l2*bWhLi@@q}{C9E>KZ{QlklehMQoONnD ztCb2LbIQjdp7S5H;tT4DJEHXJDn8ueq2;K~B7fyIG(p${H*9uJ((Yl#k;)xlBfwx> zxokR>N2Sq9AIY204RQSa^_c{|+UOX{OwT^WORqcJ?_aG_q#37lt@)4bq`Yp8dH(RR zAY?H1!`6-dDm#7rUfG;HUa`z|Z(};;BmRKENfkbv6^C91um*t_o2pIVcwyTeBj4BIxR!qKQ(YPLs|%L>?1;p< z%?=@^JG0fNb-MrvxL#{J9hzqxnGH94E46WH^X@2P`4ppMc)~2Vo_UgMo)r%|TVIZq zRn)PUZ(1&W!fy+nCm?Xj#~rs=!ItnN2+M*lzyQ8=#({tAQJksAVmO#ai~Hb0?9#NoSH?>>jv+MuGD-P>;die?V)vP&pVWq#5Q&G|D0 zv*$yAdsftB-7P3eGVW z0MBP~`_q5&%#VxTE*6~q2$a;UL>q6eB$5zTMim$YXF_S`t3W!yxoyoOQNAKBM96Jr zAZ8)W@7MIK3?Q2c4wQMzu7Md9qHcYAit$Za2?!qDvGq4s=6)OzDIQbX$Qj2}U2qH@ zb~%X!3bwF@c%J&hGO|#YMi263*9Td7>E0vLE;r*t5&BZ8YHCy!6t5Su=jF*`wA6_(fnTV{M~JypP$-YnapUZMQrI-ey zCUU`-=kO9ncvm!XdNu&I@ag-lin!igItC-|N$-TMZA?#lq7N=k zc+wL+O>^__i!|i&(x=9KeQ0<)THKjQ5A0eN%(H{FSl1`YM}t)8BCMZgffTBZxBE5v zCn~1`rGX^m(Lq07;3@3={iUc1p!hBUB)(g0OCm4igF_>}s_tMJq9&PHS9jEd=$e&X zqFtiYWB+Xs543(6(I2KCUiQmh=Ha)J((nCwDez+SnpO2$%m`(k^ZhtnEb4>kk3z?373thJ_B)Cr%f{8LaGzdXvGu!~ z4+r@Gi&Em^hREgTffa}eZ}f#oLC8RK7}Z1qzpO0F&Hn3(=Uq~J7XW^*bad1mBO?zx z15s(T9B73WYk^l-(2moU?_qg&2nR;5$!4w~4jAL`@V)I-bVhR_+JUt(v!tZbxxjOZ zPqW*OQ$+mb97qSoBIw0EUklj|z4_rduH6!HE$;WW1}Fs>s|3by8`lW1bq=VcDJVi%gNc%d<&FR^~el@V!w|CtEJGQtMtW ztIEE+5@C|w3ei2Of^8L&J-hst?GBB@B)bWw^)}BMD|*d3Mt=PrWC8NX%nV46Q9L?` z=EQA@UAyq*6`G{pNow%3ktNYM zS?UNl_Sv2)kid>%HFg5qy=}L6jBMWvTCF{}EFZ`K=fjxEuv+w=5o{OMQA&Hl212S> z0MdC00G#$7;}82@DX8R?sItB*qY<_KR_%mgvBr$34HWU08e5-Qjr~Ysw*40iU^`i5 zctF1BAk9MFA#etUU!dQI{@Oi-ldwX>c1jQ@%vtvJnj^qNJ?HszW@1tMM17T?E?6S2 zm;$!JX+>Wi7A3Dyxl)Cd8-N}ifOqPV{Pna{yZ565g<5E!#hHu|x?cidr7%3wAzc!H zYy{Omdy3vS(&Ev%Cw2Vfc?5$5yBUu5p%IeZuY`1Mv{HBhvo#m&!1cAQmf_?e=g0Ko z+t8Vg1cWbJ#^~t5+;by3HKR`k1oZm>O8T1*z?3hTe!c-J34k*q7>fPfVgL5-RIxR2 z`DuWCQ3nb<7WhQyjf}SZfhzbY(_FUQqW7PlvR?Lwo=aFniGV{c{N)2?F%Ef3N=ger z8YuG{6@qPEw*BqMd6Uo5mF=3D-?o}4^ z1)FvnB!*Dju^&AH=;Jpx=}w?;eS+9vG-DS;RLo5MPhIn}c10e?nJcM#`DS@aWwyhV!<8-`NL-@c2V ziXAlUFpYbfn3k?Q1Er6-37@t^qSW!@76nU9${efgB-Dz^*5bc4-b;q>3Y#!!`5KQE zOXzO^Jz|vP;A+F=a(*SIoljGkIq?&T=;+e0B+hyAo+X9Vva2pUiM)B1LgkpweSc5E!Sp&n>Bw{~Wg?9!!nByM5B%0of+rO!W)?2O}m>A(09@VNf}KC=8P zQfdFD0SfK^Zbq7~ms8+L)M4qClUIzfo`m|GcZmCQ|KBHV|K{!pB4MNwGHUzI7Gb-& zvlYL+U2(?~ee-Sxa9|BD!Wx7~o_tv~648d9ID*MlIR4kT!x#IkbkuGxf-9NLMat(W zdHD7mL@4%|a^1r))=1QD$vA7$VNWNsczxYm22Vme@~7wic5{Q0%wJFyfK^%w{Qz}g zAkY~&50yT&mX-83I(P2e(9@Ss7e7Lz(}~9MBWvF1ZJJ|lR*H3JKFUXlRHW`5%f=0z z`w|ttn)%cN1M5SDY-P|Zn^!IiNqM7BgOV;ezk`8Ou zY41%PSlO{%2L*T_=v8|>*((^(ORa54m`}~NCpMHhb$eVWc1)roB4CV#$*SYrK8pvt z9t{bz*_f^ILbH@lWtA@b>1qvHX0qa58kEWa!4by6EGDLZ%XgoLmT-XWUrF2C!i+|W z(EcYK3k@o+E~+~^Y*id%CLHS4qQ}R89Om6fc^SRrqQgz~TC;$acUrGV;v*hsKul7? zK7UEVNlu$zC=O8%-ECi|cFDG{l~k*g6%(npM#l90eLaVqtpcZD_pXnA=taN0r|^n);sOav#?@U!WMb7+*+ut=gj&aZFYmPx;kbq zHZ96)_VJ6FjqOY4?`*A^r8o7fRiabXs-C^tB9>A^WjFUa zId7C$mk|-N`)M4@@07DO23X2gQ*Su0XXlVPdCu7P&+Z7@{aQ=ePy1<`_>f@lCDZZy zBc%rgkE{e02Sm#2b$1(M7wy9O99P_EWYk88A@f&T3n%<`bS#F~`JhQgq;A#US;(@n z3t!N*C77ePFv?uv?Xr1|oomU8irKwKZdhuUU&Q~wvthGX<-0xqk}q*at=Q(SNSPg+ zsa5n?j9iq04>5Y{WZChP(JjfT8>4nri?CgDY?+8n(^A4m)r8dl$uzg9yud~dd$knvK(oaTinB9%(UUo%xPD)G=)hmmW zgGTd~^hsHn<$d2C8m;`?ibelgU91#1BSkj$Imk(M(5BD%oIEr>mi9e&&SKdGA&Wjn z$fs7-Gcna=W~YjAwC&h`$-%J7OLtED`adW7RU!8o^2e$_?~#VeIh)oE+lM0H-NIGX z4{U^@awS4#gGIYKg zT4C@=NVEHAYALPHIA!BU(`SsWnao!i~!k?m9Btqm~dorV5%YS(|ibZWP=FW~rwyM^9y|V6i zNsNW7>H8j@>y#X;w`nLkT7$?cBdbr`#N3FZ7|PpvT8HnScbRz`NbGd6!xo6s1R}F{ z+d;}CspN6h@3(y@%TLLkJ}bVFbGgLK)&Q}tl`B`dSo2Y`&bGU^bWex^A`RFbe7;;v zl`~$QYAzBrGw0fQ!&+j`K3}EwyXXFatf@kUt?pjAZ5r`;gJ1qf=W91Zlo*8m%=M&x zy6z%-lA*|9%Yfl=S+2yflGk31j`|??XNB?6LJy1F*mQjvWX@o?!Cb3h0oDGRM%aTQ zjBZ;vAN##gB(j3eYjQcbY&A5}cE`%-m4{ty5LKUAj*~vwCGsr9DH<@~j+&g@M?j=` z{rWW`96Qhl&R|=`=n0L zcyXCgOIGi5>I2F9CeHIi3?knx8ayw?$2$|m|Od3X9(kQC3pC(N%z@Tb4*-9vDf!tN@kPiE*rJ}wJ301R5F{{8cF3# zYI-dr(a+v5Y^v5-@*)|dlc>^Sk5=NJ(3jxUpNraYeKpB?IFjJ9DNM!mRfCp{%lM^D z#Uf|U4-Qn9va*0?nV5Fx4G&>qHtot{rc`#La;vrdVcfJZ*bJygtPOMW601HcKP`=g z8^|Z`&~dLoQ*As_CwA-E8Pd`$Q?qJ?i~D!qX}6BIs7I`i z-Lv|moIIuRe6+^S8x?ut{X&Uh$htftBzK`FB|cT&Nmy#oc+b zuTiVWlRx%I?pl%YgF@(`g73LNMQZN^vGm8I&VAarp-(&=A}TuGpJvl$J3Gc(o+lG% znHkcIqHXfF3>!Q9uu;jrG7-4p2TS=2T|(bfN|Lg3SVk!fF>2X8empQgm$xhIF5FrL zlWNI3wD;!<1_T%Kb{ySi7b6JszHptqr2YQCagP0q@LSyRfJqWwVm!@m7)Mfkg@!A3 zd)t*YOD>J_PECl0{hM>z$AE$90p zr~trRD{o|#KE&krMDS_G75A5}bg^7LUNVjx)rhhQHdJ|w^woSv7qUZ#kIv3xL7y0T z=_uW;sZIshD8ZeJOVHgX`|H%BYejJ$)HcF=B~l*x!LvUx{dKrU)?;QLIFE3oB9R{S zgiTK5Yos-od>5#qRVArfCY1!X_W?0m@z(Nd?Rt5BQwuC*(} zzN5%efv1B_guS$`t(BlWmxJ=<<7FpodH+}Ry)Zi81Ww}m%) z%1o`oyh=H&T%iFjc_T((2^wCsXa7;LXYNPZ`Ik;Y$Jv}GP`QRSu}|JZ7m8u?$8RD& zk8R_GSNVqO22aE@GW?{w`ILDWH#aFtX&tEPRAuXY4?CS=Zqk^6mE(iGk6D4nH_T6s z`GsQXZuvq(w?;_ZV*tE9T>&%!C(9SuWUB%Dm(7jsM;n&y9i7qYd8W+#+ANM)kG@NQ zMS#o8+1oi9pkxF}!PdDxTi~0t9h)XHgG_^h`}mjTaMFy=Yx=T{5H%B*-9qQEuYxHYoanuY8MI;qq$Ji^8FU5Ti&9R*T;aDhIvo0+AapHbX zfdFM=f7N|GlL5O?eVIo7=gGUZnnFG4_l+faUkDxUH_DR~vscvRU?ILYxUXQ}%$GQ@ z)(ALiGSC!|SL*Q!!=tN6gph*k&~UO;8pYH%0A{o%4~+rA`Ric4&s)K9HY=INTZHce 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 literal 0 HcmV?d00001 diff --git a/source/images/rusendhelp3.png b/source/images/rusendhelp3.png new file mode 100644 index 0000000000000000000000000000000000000000..708fa419e5484af3a79a538c10ac24c23c2e34e2 GIT binary patch literal 168059 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

    ncFsBhF)eBM)DS%S>e%ilL%$7t%ITZl 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